| XML ID | Name | Model | Type | Status |
|---|---|---|---|---|
alternative_zpl_label |
alternative_zpl_label | ir.ui.view | qweb | New |
exception_on_picking |
exception_on_picking | ir.ui.view | qweb | New |
help_message_template |
Help Message | ir.ui.view | qweb | New |
inventory_warning_reset_view |
inventory.reset.warning.view | stock.inventory.warning | form | New |
inventory_warning_set_view |
inventory.set.warning.view | stock.inventory.warning | form | New |
jewelry_zpl_label |
jewelry_zpl_label | ir.ui.view | qweb | New |
label_lot_template_view |
label_lot_template_view | ir.ui.view | qweb | New |
label_package_history_template_view |
label_package_history_template_view | ir.ui.view | qweb | New |
label_package_template_view |
label_package_template_view | ir.ui.view | qweb | New |
label_packaging_barcode_view |
label_packaging_barcode_view | ir.ui.view | qweb | New |
label_picking_type_view |
label_picking_type_view | ir.ui.view | qweb | New |
label_product_product_view |
label_product_product_view | ir.ui.view | qweb | New |
label_transfer_template_view_pdf |
label_transfer_template_view_pdf | ir.ui.view | qweb | New |
label_transfer_template_view_zpl |
label_transfer_template_view_zpl | ir.ui.view | qweb | New |
lot_label_layout_form_picking |
lot.label.layout.form | lot.label.layout | form | New |
message_body |
message_body | ir.ui.view | qweb | New |
message_head |
message_head | ir.ui.view | qweb | New |
normal_zpl_label |
normal_zpl_label | ir.ui.view | qweb | New |
package_history_search_view |
stock.package.history.search | stock.package.history | search | New |
picking_label_type_form |
picking.label.type.form | picking.label.type | form | New |
product_category_form_view_inherit |
product.category.form | product.category | div | Inherits product.product_category_form_view |
product_form_view_procurement_button |
product.product.procurement | product.product | data | Inherits product.product_normal_form_view |
product_label_layout_form_picking |
product.label.layout.form | product.label.layout | xpath | Inherits product.product_label_layout_form |
product_label_layout_form_stock |
product.label.layout.form.stock | product.label.layout | xpath | Inherits product.product_label_layout_form |
product_product_stock_tree |
product.product.stock.list | product.product | list | New |
product_search_form_view_stock |
product.search.stock.form | product.product | filter | Inherits product.product_search_form_view |
product_search_form_view_stock_report |
product.product.search.stock.form.stock.report | product.product | filter | Inherits stock_product_search_form_view |
product_template_form_view_procurement_button |
product.template_procurement | product.template | data | Inherits product.product_template_only_form_view |
product_template_kanban_stock_view |
Product Template Kanban Stock | product.template | xpath | Inherits product.product_template_kanban_view |
product_template_search_form_view_stock |
product.template.search.stock.form | product.template | field | Inherits product.product_template_search_view |
product_template_search_view_inherit_stock |
product.template.search.inherit.stock | product.template | filter | Inherits product.product_template_search_view |
product_uom_form_view_inherit |
uom.uom.form.inherit | uom.uom | div | Inherits uom.product_uom_form_view |
product_uom_tree_view_inherit |
uom.uom.list.inherit | uom.uom | field | Inherits uom.product_uom_tree_view |
product_view_kanban_catalog |
product.view.kanban.catalog.inherit.stock | product.product | field | Inherits product.product_view_kanban_catalog |
quant_search_view |
stock.quant.search | stock.quant | search | New |
replenishment_option_tree_view |
stock.replenishment.option.list.view | stock.replenishment.option | list | New |
replenishment_option_warning_view |
stock.replenishment.warning.view | stock.replenishment.option | form | New |
report_delivery_document |
report_delivery_document | ir.ui.view | qweb | New |
report_deliveryslip |
report_deliveryslip | ir.ui.view | qweb | New |
report_generic_barcode |
report_generic_barcode | ir.ui.view | qweb | New |
report_inventory |
report_inventory | ir.ui.view | qweb | New |
report_location_barcode |
report_location_barcode | ir.ui.view | qweb | New |
report_lot_label |
report_lot_label | ir.ui.view | qweb | New |
report_package_barcode |
report_package_barcode | ir.ui.view | qweb | New |
report_package_barcode_content |
report_package_barcode_content | ir.ui.view | qweb | New |
report_package_barcode_small |
report_package_barcode_small | ir.ui.view | qweb | New |
report_package_history_barcode |
report_package_history_barcode | ir.ui.view | qweb | New |
report_package_history_barcode_small |
report_package_history_barcode_small | ir.ui.view | qweb | New |
report_picking |
report_picking | ir.ui.view | qweb | New |
report_picking_packages |
report_picking_packages | ir.ui.view | qweb | New |
report_picking_type_label |
report_picking_type_label | ir.ui.view | qweb | New |
report_reception |
report_reception | ir.ui.view | qweb | New |
report_reception_body |
report_reception_body | ir.ui.view | qweb | New |
report_reception_report_label |
report_reception_report_label | ir.ui.view | qweb | New |
report_return_document |
report_return_document | ir.ui.view | qweb | New |
report_stock_body_print |
report_stock_body_print | ir.ui.view | qweb | New |
report_stock_inventory_print |
report_stock_inventory_print | ir.ui.view | qweb | New |
report_stock_rule |
report_stock_rule | ir.ui.view | qweb | New |
report_stock_rule_left_arrow |
report_stock_rule_left_arrow | ir.ui.view | qweb | New |
report_stock_rule_line |
report_stock_rule_line | ir.ui.view | qweb | New |
report_stock_rule_right_arrow |
report_stock_rule_right_arrow | ir.ui.view | qweb | New |
report_stock_rule_suspension_points |
report_stock_rule_suspension_points | ir.ui.view | qweb | New |
report_stock_rule_vertical_bar |
report_stock_rule_vertical_bar | ir.ui.view | qweb | New |
res_config_settings_view_form |
res.config.settings.view.form.inherit.stock | res.config.settings | xpath | Inherits base.res_config_settings_view_form |
search_product_lot_filter |
Production Lots Filter | stock.lot | search | New |
small_zpl_label |
small_zpl_label | ir.ui.view | qweb | New |
stock.report_return_slip |
stock.report_return_slip | ir.ui.view | qweb | New |
stock_inventory_adjustment_name_form_view |
stock.inventory.adjustment.name.form.view | stock.inventory.adjustment.name | form | New |
stock_inventory_conflict_form_view |
stock.inventory.conflict.form.view | stock.inventory.conflict | form | New |
stock_inventory_request_count_form_view |
stock.request.count.form.view | stock.request.count | form | New |
stock_location_route_form_view |
stock.location.route.form | stock.route | form | New |
stock_location_route_tree |
stock.location.route.list | stock.route | list | New |
stock_location_route_view_search |
stock.location.route.search | stock.route | search | New |
stock_location_view_form_editable |
stock.location.form.editable | stock.location | xpath | Inherits stock.view_location_form |
stock_location_view_tree2_editable |
stock.location.list2.editable | stock.location | xpath | Inherits stock.view_location_tree2 |
stock_move_line_view_search |
stock.move.line.search | stock.move.line | search | New |
stock_package_destination_form_view |
stock.package.destination.view | stock.package.destination | form | New |
stock_package_type_form |
stock.package.type.form | stock.package.type | form | New |
stock_package_type_tree |
stock.package.type.list | stock.package.type | list | New |
stock_package_view_add_list |
stock.package.add.package.list | stock.package | list | New |
stock_package_view_form |
stock.package.form | stock.package | form | New |
stock_package_view_kanban |
stock.package.kanban | stock.package | kanban | New |
stock_package_view_list |
stock.package.list | stock.package | list | New |
stock_package_view_list_editable |
stock.package.list.editable | stock.package | list | New |
stock_package_view_search |
stock.package.search | stock.package | search | New |
stock_picking_calendar |
stock.picking.calendar | stock.picking | calendar | New |
stock_picking_kanban |
stock.picking.kanban | stock.picking | kanban | New |
stock_picking_type_kanban |
stock.picking.type.kanban | stock.picking.type | kanban | New |
stock_picking_view_activity |
stock.picking.view.activity | stock.picking | activity | New |
stock_product_search_form_view |
product.product.search.stock.form | product.product | xpath | Inherits product.product_search_form_view |
stock_put_in_pack_form |
stock.put.in.pack.form | stock.put.in.pack | form | New |
stock_putaway_list |
stock.putaway.rule.list | stock.putaway.rule | list | New |
stock_quant_relocate_view_form |
Stock Relocation | stock.quant.relocate | form | New |
stock_quant_view_graph |
stock.quant.graph | stock.quant | graph | New |
stock_reference_form_view |
stock.reference.form | stock.reference | form | New |
stock_reference_search_view |
stock.reference.search | stock.reference | search | New |
stock_reference_tree_view |
stock.reference.list | stock.reference | list | New |
stock_reorder_report_search |
stock.warehouse.orderpoint.reorder.search | stock.warehouse.orderpoint | search | New |
stock_report_delivery_aggregated_move_lines |
stock_report_delivery_aggregated_move_lines | ir.ui.view | qweb | New |
stock_report_delivery_has_serial_move_line |
stock_report_delivery_has_serial_move_line | ir.ui.view | qweb | New |
stock_report_delivery_no_package_section_line |
stock_report_delivery_no_package_section_line | ir.ui.view | qweb | New |
stock_report_delivery_package_section_line |
stock_report_delivery_package_section_line | ir.ui.view | qweb | New |
stock_report_view_graph |
stock_report_view_graph | report.stock.quantity | graph | New |
stock_scrap_form_view |
stock.scrap.form | stock.scrap | form | New |
stock_scrap_form_view2 |
stock.scrap.form2 | stock.scrap | form | New |
stock_scrap_search_view |
stock.scrap.search | stock.scrap | search | New |
stock_scrap_tree_view |
stock.scrap.list | stock.scrap | list | New |
stock_scrap_view_kanban |
stock.scrap.kanban | stock.scrap | kanban | New |
stock_storage_category_capacity_tree |
stock.storage.category.capacity.list | stock.storage.category.capacity | list | New |
stock_storage_category_form |
stock.storage.category.form | stock.storage.category | form | New |
stock_storage_category_tree |
stock.storage.category.list | stock.storage.category | list | New |
stock_warehouse_view_search |
stock.warehouse.search | stock.warehouse | search | New |
stock_warn_insufficient_qty_form_view |
stock.warn.insufficient.qty | stock.warn.insufficient.qty | form | New |
stock_warn_insufficient_qty_scrap_form_view |
stock.warn.insufficient.qty.scrap | stock.warn.insufficient.qty.scrap | xpath | Inherits stock.stock_warn_insufficient_qty_form_view |
track_move_template |
track_move_template | ir.ui.view | qweb | New |
view_backorder_confirmation |
stock_backorder_confirmation | stock.backorder.confirmation | form | New |
view_location_form |
stock.location.form | stock.location | form | New |
view_location_search |
stock.location.search | stock.location | search | New |
view_location_tree2 |
stock.location.list | stock.location | list | New |
view_move_form |
stock.move.form | stock.move | form | New |
view_move_graph |
stock.move.graph | stock.move | graph | New |
view_move_kandan |
stock.move.kanban | stock.move | kanban | New |
view_move_line_form |
stock.move.line.form | stock.move.line | form | New |
view_move_line_mobile_form |
stock.move.line.mobile.form | stock.move.line | xpath | Inherits stock.view_move_line_form |
view_move_line_tree |
stock.move.line.list | stock.move.line | list | New |
view_move_line_tree_detailed |
stock.move.line.list.detailed | stock.move.line | list | New |
view_move_pivot |
stock.move.pivot | stock.move | pivot | New |
view_move_search |
stock.move.search | stock.move | search | New |
view_move_tree |
stock.move.list | stock.move | list | New |
view_move_tree_receipt_picking |
stock.move.tree2 | stock.move | list | New |
view_partner_stock_form |
res.partner.stock.property.form.inherit | res.partner | xpath | Inherits mail.res_partner_view_form_inherit_mail |
view_partner_stock_warnings_form |
res.partner.stock.warning | res.partner | group | Inherits base.view_partner_form |
view_picking_form |
stock.picking.form | stock.picking | form | New |
view_picking_internal_search |
stock.picking.internal.search | stock.picking | search | New |
view_picking_move_tree |
stock.picking.move.list | stock.move | list | New |
view_picking_type_form |
Operation Types | stock.picking.type | form | New |
view_picking_type_tree |
Operation types | stock.picking.type | list | New |
view_pickingtype_filter |
stock.picking.type.filter | stock.picking.type | search | New |
view_product_replenish |
Replenish | product.replenish | form | New |
view_production_lot_form |
stock.production.lot.form | stock.lot | form | New |
view_production_lot_kanban |
stock.production.lot.kanban | stock.lot | kanban | New |
view_production_lot_tree |
stock.production.lot.list | stock.lot | list | New |
view_putaway_search |
stock.putaway.rule.search | stock.putaway.rule | search | New |
view_removal |
product.removal.form | product.removal | form | New |
view_route_rule_form |
stock.rule.form | stock.rule | xpath | Inherits stock.view_stock_rule_form |
view_stock_move_line_detailed_operation_tree |
stock.move.line.operations.list | stock.move.line | list | New |
view_stock_move_line_kanban |
stock.move.line.kanban | stock.move.line | kanban | New |
view_stock_move_line_operation_tree |
stock.move.line.operations.list | stock.move.line | list | New |
view_stock_move_line_pivot |
stock.move.line.pivot | stock.move.line | pivot | New |
view_stock_move_operations |
stock.move.operations.form | stock.move | form | New |
view_stock_orderpoint_snooze |
Stock Orderpoint Snooze | stock.orderpoint.snooze | form | New |
view_stock_package_history_list |
stock.package.history.list | stock.package.history | list | New |
view_stock_product_template_tree |
product.template.stock.list.inherit | product.template | field | Inherits product.product_template_tree_view |
view_stock_product_tree |
product.stock.list.inherit | product.product | field | Inherits product.product_product_tree_view |
view_stock_quant_form |
view.stock.quant.form | stock.quant | form | New |
view_stock_quant_form_editable |
stock.quant.form.editable | stock.quant | form | New |
view_stock_quant_pivot |
stock.quant.pivot | stock.quant | pivot | New |
view_stock_quant_tree |
stock.quant.list | stock.quant | xpath | Inherits stock.view_stock_quant_tree_simple |
view_stock_quant_tree_editable |
stock.quant.list.editable | stock.quant | list | New |
view_stock_quant_tree_inventory_editable |
stock.quant.inventory.list.editable | stock.quant | list | New |
view_stock_quant_tree_simple |
stock.quant.list | stock.quant | list | New |
view_stock_quantity_history |
Inventory Report at Date | stock.quantity.history | form | New |
view_stock_replenishment_info |
Stock Replenishment Information | stock.replenishment.info | form | New |
view_stock_return_picking_form |
Return lines | stock.return.picking | form | New |
view_stock_rule_filter |
stock.rule.select | stock.rule | search | New |
view_stock_rule_form |
stock.rule.form | stock.rule | form | New |
view_stock_rule_tree |
stock.rule.list | stock.rule | list | New |
view_stock_rules_report |
Stock Rules Report | stock.rules.report | form | New |
view_stock_warehouse_orderpoint_kanban |
stock.warehouse.orderpoint.kanban | stock.warehouse.orderpoint | kanban | New |
view_template_property_form |
product.template.stock.property.form.inherit | product.template | field | Inherits product.product_template_form_view |
view_warehouse |
stock.warehouse | stock.warehouse | form | New |
view_warehouse_orderpoint_form |
stock.warehouse.orderpoint.form | stock.warehouse.orderpoint | form | New |
view_warehouse_orderpoint_tree_editable |
stock.warehouse.orderpoint.list.editable | stock.warehouse.orderpoint | list | New |
view_warehouse_orderpoint_tree_editable_show_trigger |
stock.warehouse.orderpoint.list.editable.inherit.show_trigger | stock.warehouse.orderpoint | xpath | Inherits stock.view_warehouse_orderpoint_tree_editable |
view_warehouse_tree |
stock.warehouse.list | stock.warehouse | list | New |
vpicktree |
stock.picking.list | stock.picking | list | New |
warehouse_orderpoint_search |
stock.warehouse.orderpoint.search | stock.warehouse.orderpoint | search | New |
type
Selection
ondelete={'weight': 'set default', 'location': 'set default', 'lot': 'set default', 'package': 'set default'}
selection_add=[('weight', 'Weighted Product'), ('location', 'Location'), ('lot', 'Lot'), ('package', 'Package')]
No public methods.
No new fields.
Public methods (0)No public methods.
label_quantity
Selection
default='lots'
help="If the UoM of a lot is not 'units', the lot will be considered as a unit and only one label will be printed for this lot."
required=True
string='Quantity to print'
args: [('lots', 'One per lot/SN'), ('units', 'One per unit')]
move_line_ids
Many2many → stock.move.line
print_format
Selection
default='4x12'
required=True
string='Format'
args: [('4x12', '4 x 12'), ('zpl', 'ZPL Labels')]
process(self)
label_type
Selection
default='products'
required=True
string='Labels to print'
args: [('products', 'Product Labels'), ('lots', 'Lot/SN Labels')]
picking_ids
Many2many → stock.picking
process(self)
No new fields.
Public methods (0)No public methods.
filter_for_stock_putaway_rule
Boolean
search='_search_filter_for_stock_putaway_rule'
store=False
args: 'stock.putaway.rule'
packaging_reserve_method
Selection
default='partial'
help='Reserve Only Full Packagings: will not reserve partial packagings. If customer orders 2 pallets of 1000 units each and you only have 1600 in stock, then only 1000 will be reserved\nReserve Partial Packagings: allow reserving partial packagings. If customer orders 2 pallets of 1000 units each and you only have 1600 in stock, then 1600 will be reserved'
string='Reserve Packagings'
args: [('full', 'Reserve Only Full Packagings'), ('partial', 'Reserve Partial Packagings')]
parent_route_ids
Many2many → stock.route
compute='_compute_parent_route_ids'
string='Parent Routes'
args: 'stock.route'
putaway_rule_ids
One2many → stock.putaway.rule
removal_strategy_id
Many2one → product.removal
help='Set a specific removal strategy that will be used regardless of the source location for this product category.\n\nFIFO: products/lots that were stocked first will be moved out first.\nLIFO: products/lots that were stocked last will be moved out first.\nClosest location: products/lots closest to the target location will be moved out first.\nFEFO: products/lots with the closest removal date will be moved out first (the availability of this method depends on the "Expiration Dates" setting).\nLeast Packages: FIFO but with the least number of packages possible when there are several packages containing the same product.'
tracking=True
args: 'product.removal', 'Force Removal Strategy'
route_ids
Many2many → stock.route
domain=[('product_categ_selectable', '=', True)]
args: 'stock.route', 'stock_route_categ', 'categ_id', 'route_id', 'Routes'
total_route_ids
Many2many → stock.route
compute='_compute_total_route_ids'
readonly=True
search='_search_total_route_ids'
string='Total routes'
args: 'stock.route'
No public methods.
move_ids
Many2many → stock.move
move_quantity
Selection
default='custom'
required=True
string='Quantity to print'
args: [('move', 'Operation Quantities'), ('custom', 'Custom')]
print_format
Selection
ondelete={'zpl': 'set default', 'zplxprice': 'set default'}
selection_add=[('zpl', 'ZPL Labels'), ('zplxprice', 'ZPL Labels with price')]
zpl_preview
Image
default=_get_zpl_label_placeholder
readonly=True
args: 'ZPL Preview'
zpl_template
Selection
default='normal'
required=True
string='ZPL Template'
args: [('normal', 'Normal (2.25" x 1.25")'), ('small', 'Small (1.25" x 1.00")'), ('alternative', 'Alternative (2.00" x 1.00")'), ('jewelry', 'Jewelry (2.20" x 0.50")')]
No public methods.
free_qty
Float
compute='_compute_quantities'
compute_sudo=False
digits='Product Unit'
help="Available quantity (computed as Quantity On Hand - reserved quantity)\nIn a context with a single Stock Location, this includes goods stored in this location, or any of its children.\nIn a context with a single Warehouse, this includes goods stored in the Stock Location of this Warehouse, or any of its children.\nOtherwise, this includes goods stored in any Stock Location with 'internal' type."
search='_search_free_qty'
args: 'Free To Use Quantity '
incoming_qty
Float
compute='_compute_quantities'
compute_sudo=False
digits='Product Unit'
help="Quantity of planned incoming products.\nIn a context with a single Stock Location, this includes goods arriving to this Location, or any of its children.\nIn a context with a single Warehouse, this includes goods arriving to the Stock Location of this Warehouse, or any of its children.\nOtherwise, this includes goods arriving to any Stock Location with 'internal' type."
search='_search_incoming_qty'
args: 'Incoming'
lot_properties_definition
PropertiesDefinition
nbr_moves_in
Integer
compute='_compute_nbr_moves'
compute_sudo=False
help='Number of incoming stock moves in the past 12 months'
nbr_moves_out
Integer
compute='_compute_nbr_moves'
compute_sudo=False
help='Number of outgoing stock moves in the past 12 months'
nbr_reordering_rules
Integer
compute='_compute_nbr_reordering_rules'
compute_sudo=False
args: 'Reordering Rules'
orderpoint_ids
One2many → stock.warehouse.orderpoint
outgoing_qty
Float
compute='_compute_quantities'
compute_sudo=False
digits='Product Unit'
help="Quantity of planned outgoing products.\nIn a context with a single Stock Location, this includes goods leaving this Location, or any of its children.\nIn a context with a single Warehouse, this includes goods leaving the Stock Location of this Warehouse, or any of its children.\nOtherwise, this includes goods leaving any Stock Location with 'internal' type."
search='_search_outgoing_qty'
args: 'Outgoing'
putaway_rule_ids
One2many → stock.putaway.rule
qty_available
Float
compute='_compute_quantities'
compute_sudo=False
digits='Product Unit'
help="Current quantity of products.\nIn a context with a single Stock Location, this includes goods stored at this Location, or any of its children.\nIn a context with a single Warehouse, this includes goods stored in the Stock Location of this Warehouse, or any of its children.\nstored in the Stock Location of the Warehouse of this Shop, or any of its children.\nOtherwise, this includes goods stored in any Stock Location with 'internal' type."
inverse='_inverse_qty_available'
search='_search_qty_available'
args: 'Quantity On Hand'
reordering_max_qty
Float
compute='_compute_nbr_reordering_rules'
compute_sudo=False
reordering_min_qty
Float
compute='_compute_nbr_reordering_rules'
compute_sudo=False
show_forecasted_qty_status_button
Boolean
compute='_compute_show_qty_status_button'
show_on_hand_qty_status_button
Boolean
compute='_compute_show_qty_status_button'
show_qty_update_button
Boolean
compute='_compute_show_qty_update_button'
stock_move_ids
One2many → stock.move
stock_quant_ids
One2many → stock.quant
storage_category_capacity_ids
One2many → stock.storage.category.capacity
valid_ean
Boolean
compute='_compute_valid_ean'
args: 'Barcode is valid EAN'
virtual_available
Float
compute='_compute_quantities'
compute_sudo=False
digits='Product Unit'
help="Forecast quantity (computed as Quantity On Hand - Outgoing + Incoming)\nIn a context with a single Stock Location, this includes goods stored in this location, or any of its children.\nIn a context with a single Warehouse, this includes goods stored in the Stock Location of this Warehouse, or any of its children.\nOtherwise, this includes goods stored in any Stock Location with 'internal' type."
search='_search_virtual_available'
args: 'Forecasted Quantity'
action_open_product_lot(self)
action_open_quants(self)
action_product_forecast_report(self)
action_view_orderpoints(self)
action_view_related_putaway_rules(self)
action_view_routes(self)
action_view_stock_move_lines(self)
action_view_storage_category_capacity(self)
fields_get(self, allfields=None, attributes=None)
filter_has_routes(self)
get_components(self)
get_total_routes(self)
view_header_get(self, view_id, view_type)
write(self, vals)
method
Char
help='FIFO, LIFO...'
required=True
translate=True
args: 'Method'
name
Char
required=True
translate=True
args: 'Name'
No public methods.
allowed_uom_ids
Many2many → uom.uom
compute='_compute_allowed_uom_ids'
args: 'uom.uom'
company_id
Many2one → res.company
date_planned
Datetime
compute='_compute_date_planned'
help='Date at which the replenishment should take place.'
precompute=True
readonly=False
required=True
store=True
args: 'Scheduled Date'
forecast_uom_id
Many2one
related='product_id.uom_id'
forecasted_quantity
Float
compute='_compute_forecasted_quantity'
string='Forecasted Quantity'
product_has_variants
Boolean
default=False
required=True
args: 'Has variants'
product_id
Many2one → product.product
required=True
string='Product'
args: 'product.product'
product_tmpl_id
Many2one → product.template
required=True
string='Product Template'
args: 'product.template'
product_uom_id
Many2one → uom.uom
domain="[('id', 'in', allowed_uom_ids)]"
required=True
string='Unity of measure'
args: 'uom.uom'
quantity
Float
default=1
required=True
args: 'Quantity'
warehouse_id
Many2one → stock.warehouse
check_company=True
required=True
string='Warehouse'
args: 'stock.warehouse'
default_get(self, fields)
launch_replenishment(self)
description_picking
Text
translate=True
args: 'Description on Picking'
description_pickingin
Text
translate=True
args: 'Description on Receptions'
description_pickingout
Text
translate=True
args: 'Description on Delivery Orders'
has_available_route_ids
Boolean
compute='_compute_has_available_route_ids'
default=<expr>
args: 'Routes can be selected on this product'
incoming_qty
Float
compute='_compute_quantities'
compute_sudo=False
digits='Product Unit'
search='_search_incoming_qty'
args: 'Incoming'
is_storable
Boolean
compute='compute_is_storable'
default=False
help='A storable product is a product for which you manage stock.'
precompute=True
readonly=False
store=True
tracking=True
args: 'Track Inventory'
location_id
Many2one → stock.location
store=False
args: 'stock.location', 'Location'
lot_sequence_id
Many2one → ir.sequence
default=<expr>
help='Technical Field: The Ir.Sequence record that is used to generate serial/lot numbers for this product'
args: 'ir.sequence', 'Serial/Lot Numbers Sequence'
nbr_moves_in
Integer
compute='_compute_nbr_moves'
compute_sudo=False
help='Number of incoming stock moves in the past 12 months'
nbr_moves_out
Integer
compute='_compute_nbr_moves'
compute_sudo=False
help='Number of outgoing stock moves in the past 12 months'
nbr_reordering_rules
Integer
compute='_compute_nbr_reordering_rules'
compute_sudo=False
args: 'Reordering Rules'
next_serial
Char
compute='_compute_next_serial'
outgoing_qty
Float
compute='_compute_quantities'
compute_sudo=False
digits='Product Unit'
search='_search_outgoing_qty'
args: 'Outgoing'
property_stock_inventory
Many2one → stock.location
check_company=True
company_dependent=True
domain="[('usage', '=', 'inventory'), '|', ('company_id', '=', False), ('company_id', '=', allowed_company_ids[0])]"
help='This stock location will be used, instead of the default one, as the source location for stock moves generated when you do an inventory.'
args: 'stock.location', 'Inventory Location'
property_stock_production
Many2one → stock.location
check_company=True
company_dependent=True
domain="[('usage', '=', 'production'), '|', ('company_id', '=', False), ('company_id', '=', allowed_company_ids[0])]"
help='This stock location will be used, instead of the default one, as the source location for stock moves generated by manufacturing orders.'
args: 'stock.location', 'Production Location'
qty_available
Float
compute='_compute_quantities'
compute_sudo=False
digits='Product Unit'
inverse='_inverse_qty_available'
search='_search_qty_available'
args: 'Quantity On Hand'
reordering_max_qty
Float
compute='_compute_nbr_reordering_rules'
compute_sudo=False
reordering_min_qty
Float
compute='_compute_nbr_reordering_rules'
compute_sudo=False
responsible_id
Many2one → res.users
check_company=True
company_dependent=True
default=<expr>
help='This user will be responsible of the next activities related to logistic operations for this product.'
string='Responsible'
args: 'res.users'
route_from_categ_ids
Many2many
related='categ_id.total_route_ids'
related_sudo=False
string='Category Routes'
route_ids
Many2many → stock.route
depends_context=['company', 'allowed_companies']
domain=[('product_selectable', '=', True)]
help='Depending on the modules installed, this will allow you to define the route of the product: whether it will be bought, manufactured, replenished on order, etc.'
args: 'stock.route', 'stock_route_product', 'product_id', 'route_id', 'Routes'
sale_delay
Integer
default=0
help="Delivery lead time, in days. It's the number of days, promised to the customer, between the confirmation of the sales order and the delivery."
args: 'Customer Lead Time'
serial_prefix_format
Char
compute='_compute_serial_prefix_format'
help=SERIAL_PREFIX_FORMAT_HELP_TEXT
inverse='_inverse_serial_prefix_format'
args: 'Custom Lot/Serial'
show_forecasted_qty_status_button
Boolean
compute='_compute_show_qty_status_button'
show_on_hand_qty_status_button
Boolean
compute='_compute_show_qty_status_button'
show_qty_update_button
Boolean
compute='_compute_show_qty_update_button'
tracking
Selection
compute='_compute_tracking'
default='none'
help='Ensure the traceability of a storable product in your warehouse.'
precompute=True
readonly=False
required=True
store=True
string='Tracking'
args: [('serial', 'By Unique Serial Number'), ('lot', 'By Lots'), ('none', 'By Quantity')]
virtual_available
Float
compute='_compute_quantities'
compute_sudo=False
digits='Product Unit'
search='_search_virtual_available'
args: 'Forecasted Quantity'
warehouse_id
Many2one → stock.warehouse
store=False
args: 'stock.warehouse', 'Warehouse'
action_open_product_lot(self)
action_open_quants(self)
action_open_routes_diagram(self)
action_product_tmpl_forecast_report(self)
action_view_orderpoints(self)
action_view_related_putaway_rules(self)
action_view_stock_move_lines(self)
action_view_storage_category_capacity(self)
compute_is_storable(self)
copy(self, default=None)
create(self, vals_list)
write(self, vals)
No new fields.
Public methods (0)No public methods.
No new fields.
Public methods (0)No public methods.
company_id
Many2one → res.company
readonly=True
args: 'res.company'
date
Date
readonly=True
string='Date'
product_id
Many2one → product.product
readonly=True
string='Product'
args: 'product.product'
product_qty
Float
readonly=True
string='Quantity'
product_tmpl_id
Many2one → product.template
readonly=True
args: 'product.template'
state
Selection
readonly=True
string='State'
args: [('forecast', 'Forecasted Stock'), ('in', 'Forecasted Receipts'), ('out', 'Forecasted Deliveries')]
warehouse_id
Many2one → stock.warehouse
readonly=True
args: 'stock.warehouse'
init(self)
No new fields.
Public methods (3)action_assign(self, move_ids, qtys, in_ids)
action_unassign(self, move_id, qty, in_ids)
get_report_data(self, docids, data)
No new fields.
Public methods (0)No public methods.
annual_inventory_day
Integer
default=31
help='Day of the month when the annual inventory should occur. If zero or negative, then the first day of the month will be selected instead.\n If greater than the last day of a month, then the last day of the month will be selected instead.'
string='Day of the month'
annual_inventory_month
Selection
default='12'
help='Annual inventory month for products not in a location with a cyclic inventory date. Set to no month if no automatic annual inventory.'
string='Annual Inventory Month'
args: [('1', 'January'), ('2', 'February'), ('3', 'March'), ('4', 'April'), ('5', 'May'), ('6', 'June'), ('7', 'July'), ('8', 'August'), ('9', 'September'), ('10', 'October'), ('11', 'November'), ('12', 'December')]
horizon_days
Float
default=365
help="Configure your horizon to trigger reordering rules earlier to get\n a head start on replenishment and avoid delays, or trigger it just-in-time\n ('0 days') to avoid overstocking."
required=True
string='Replenishment Horizon'
internal_transit_location_id
Many2one → stock.location
check_company=True
ondelete='restrict'
args: 'stock.location', 'Internal Transit Location'
stock_confirmation_type
Selection
default='sms'
args: [('sms', 'SMS')]
stock_mail_confirmation_template_id
Many2one → mail.template
default=_default_confirmation_mail_template
domain="[('model', '=', 'stock.picking')]"
help='Email sent to the customer once the order is done.'
string='Email Template confirmation picking'
args: 'mail.template'
stock_move_email_validation
Boolean
default=False
args: 'Email Confirmation picking'
stock_text_confirmation
Boolean
create(self, vals_list)
create_missing_inventory_loss_location(self)
create_missing_production_location(self)
create_missing_scrap_location(self)
create_missing_scrap_sequence(self)
create_missing_transit_location(self)
create_missing_warehouse(self)
annual_inventory_day
Integer
readonly=False
related='company_id.annual_inventory_day'
annual_inventory_month
Selection
readonly=False
related='company_id.annual_inventory_month'
barcode_separator
Char
config_parameter='stock.barcode_separator'
help='Character(s) used to separate data contained within an aggregate barcode (i.e. a barcode containing multiple barcode encodings)'
args: 'Separator'
group_lot_on_delivery_slip
Boolean
group='base.group_user,base.group_portal'
implied_group='stock.group_lot_on_delivery_slip'
args: 'Display Lots & Serial Numbers on Delivery Slips'
group_stock_adv_location
Boolean
help='Add and customize route operations to process product moves in your warehouse(s): e.g. unload > quality control > stock for incoming products, pick > pack > ship for outgoing products. \n You can also set putaway strategies on warehouse locations in order to send incoming products into specific child locations straight away (e.g. specific bins, racks).'
implied_group='stock.group_adv_location'
args: 'Multi-Step Routes'
group_stock_lot_print_gs1
Boolean
implied_group='stock.group_stock_lot_print_gs1'
args: 'Print GS1 Barcodes for Lots & Serial Numbers'
group_stock_multi_locations
Boolean
help='Store products in specific locations of your warehouse (e.g. bins, racks) and to track inventory accordingly.'
implied_group='stock.group_stock_multi_locations'
args: 'Storage Locations'
group_stock_production_lot
Boolean
group='base.group_user,base.group_portal'
implied_group='stock.group_production_lot'
args: 'Lots & Serial Numbers'
group_stock_reception_report
Boolean
implied_group='stock.group_reception_report'
args: 'Reception Report'
group_stock_sign_delivery
Boolean
implied_group='stock.group_stock_sign_delivery'
args: 'Signature'
group_stock_tracking_lot
Boolean
implied_group='stock.group_tracking_lot'
args: 'Packages'
group_stock_tracking_owner
Boolean
implied_group='stock.group_tracking_owner'
args: 'Consignment'
group_warning_stock
Boolean
implied_group='stock.group_warning_stock'
args: 'Warnings for Stock'
horizon_days
Float
readonly=False
related='company_id.horizon_days'
module_delivery
Boolean
module_delivery_bpost
Boolean
module_delivery_dhl
Boolean
module_delivery_easypost
Boolean
module_delivery_envia
Boolean
module_delivery_fedex_rest
Boolean
module_delivery_sendcloud
Boolean
module_delivery_shiprocket
Boolean
module_delivery_starshipit
Boolean
module_delivery_ups_rest
Boolean
module_delivery_usps_rest
Boolean
module_product_expiry
Boolean
help='Track following dates on lots & serial numbers: best before, removal, end of life, alert. \n Such dates are set automatically at lot/serial number creation based on values set on the product (in days).'
args: 'Expiration Dates'
module_quality_control
Boolean
module_quality_control_worksheet
Boolean
module_stock_barcode
Boolean
module_stock_barcode_barcodelookup
Boolean
module_stock_dropshipping
Boolean
module_stock_fleet
Boolean
module_stock_picking_batch
Boolean
module_stock_sms
Boolean
replenish_on_order
Boolean
compute='_compute_replenish_on_order'
inverse='_inverse_replenish_on_order'
args: 'Replenish on Order (MTO)'
stock_confirmation_type
Selection
readonly=False
related='company_id.stock_confirmation_type'
string='Stock Text Validation type'
stock_move_email_validation
Boolean
readonly=False
related='company_id.stock_move_email_validation'
stock_text_confirmation
Boolean
readonly=False
related='company_id.stock_text_confirmation'
string='Stock Text Validation with stock move'
onchange_adv_location(self)
set_values(self)
picking_warn_msg
Text
property_stock_customer
Many2one → stock.location
check_company=True
company_dependent=True
domain="['|', ('company_id', '=', False), ('company_id', '=', allowed_company_ids[0])]"
help='The stock location used as destination when sending goods to this contact.'
string='Customer Location'
args: 'stock.location'
property_stock_supplier
Many2one → stock.location
check_company=True
company_dependent=True
domain="['|', ('company_id', '=', False), ('company_id', '=', allowed_company_ids[0])]"
help='The stock location used as source when receiving goods from this contact.'
string='Vendor Location'
args: 'stock.location'
action_view_stock_serial(self)
No new fields.
Public methods (0)No public methods.
backorder_confirmation_line_ids
One2many → stock.backorder.confirmation.line
string='Backorder Confirmation Lines'
args: 'stock.backorder.confirmation.line', 'backorder_confirmation_id'
pick_ids
Many2many → stock.picking
show_transfers
Boolean
default_get(self, fields)
process(self)
process_cancel_backorder(self)
backorder_confirmation_id
Many2one → stock.backorder.confirmation
picking_id
Many2one → stock.picking
to_backorder
Boolean
No public methods.
No new fields.
Public methods (3)action_reserve_linked_picks(self, move_id)
action_unreserve_linked_picks(self, move_id)
get_report_values(self, docids, data=None)
No new fields.
Public methods (1)get_report_values(self, docids, data=None)
counting_date
Datetime
default=fields.Datetime.now
help='Date at which the resulting moves will be dated.'
inventory_adjustment_name
Char
default='Physical Inventory'
string='Inventory Reason'
quant_ids
Many2many → stock.quant
action_apply(self)
quant_ids
Many2many → stock.quant
string='Quants'
args: 'stock.quant', 'stock_conflict_quant_rel'
quant_to_fix_ids
Many2many → stock.quant
string='Conflicts'
args: 'stock.quant'
action_keep_counted_quantity(self)
action_keep_difference(self)
quant_ids
Many2many → stock.quant
action_reset(self)
action_set(self)
active
Boolean
default=True
help='By unchecking the active field, you may hide a location without deleting it.'
args: 'Active'
barcode
Char
copy=False
args: 'Barcode'
child_ids
One2many → stock.location
child_internal_location_ids
Many2many → stock.location
compute='_compute_child_internal_location_ids'
help="This location (if it's internal) and all its descendants filtered by type=Internal."
recursive=True
string='Internal locations among descendants'
args: 'stock.location'
company_id
Many2one → res.company
default=<expr>
help='Let this field empty if this location is shared between companies'
index=True
args: 'res.company', 'Company'
complete_name
Char
compute='_compute_complete_name'
recursive=True
store=True
args: 'Full Location Name'
cyclic_inventory_frequency
Integer
default=0
help=' When different than 0, inventory count date for products stored at this location will be automatically set at the defined frequency.'
args: 'Inventory Frequency'
forecast_weight
Float
compute='_compute_weight'
args: 'Forecasted Weight'
incoming_move_line_ids
One2many → stock.move.line
is_empty
Boolean
compute='_compute_is_empty'
search='_search_is_empty'
args: 'Is Empty'
last_inventory_date
Date
help='Date of the last inventory at this location.'
readonly=True
args: 'Last Inventory'
location_id
Many2one → stock.location
check_company=True
help="The parent location that includes this location. Example : The 'Dispatch Zone' is the 'Gate 1' parent location."
index=True
args: 'stock.location', 'Parent Location'
name
Char
required=True
args: 'Location Name'
net_weight
Float
compute='_compute_weight'
args: 'Net Weight'
next_inventory_date
Date
compute='_compute_next_inventory_date'
help='Date for next planned inventory based on cyclic schedule.'
store=True
args: 'Next Expected'
outgoing_move_line_ids
One2many → stock.move.line
parent_path
Char
index=True
putaway_rule_ids
One2many → stock.putaway.rule
quant_ids
One2many → stock.quant
removal_strategy_id
Many2one → product.removal
help='Defines the default method used for suggesting the exact location (shelf) where to take the products from, which lot etc. for this location. This method can be enforced at the product category level, and a fallback is made on the parent locations if none is set here.\n\nFIFO: products/lots that were stocked first will be moved out first.\nLIFO: products/lots that were stocked last will be moved out first.\nClosest Location: products/lots closest to the target location will be moved out first.\nLeast Packages: products/lots that were stocked in package with least amount of qty will be moved out first.\nFEFO: products/lots with the closest removal date will be moved out first (the availability of this method depends on the "Expiration Dates" setting).'
args: 'product.removal', 'Removal Strategy'
replenish_location
Boolean
compute='_compute_replenish_location'
copy=False
help='Trigger replenishment suggestions for this location when required'
readonly=False
store=True
args: 'Replenishments'
storage_category_id
Many2one → stock.storage.category
check_company=True
index='btree_not_null'
string='Storage Category'
args: 'stock.storage.category'
usage
Selection
default='internal'
help="* Vendor: Virtual location representing the source location for products coming from your vendors\n* Virtual: Virtual location used to create a hierarchical structure for your warehouse by aggregating its child locations. Can't directly contain products\n* Internal: Physical locations inside your warehouses,\n* Customer: Virtual location representing the destination location for products sent to your customers\n* Inventory Loss: Virtual location serving as the counterpart for inventory operations done to correct stock levels (Physical inventories)\n* Production: Virtual counterpart location for production operations. I.e. This location consumes components and produces finished products\n* Transit: Counterpart location that should be used for inter-company or inter-warehouses operations"
index=True
required=True
string='Location Type'
args: [('supplier', 'Vendor'), ('view', 'Virtual'), ('internal', 'Internal'), ('customer', 'Customer'), ('inventory', 'Inventory Loss'), ('production', 'Production'), ('transit', 'Transit')]
warehouse_id
Many2one → stock.warehouse
compute='_compute_warehouse_id'
store=True
args: 'stock.warehouse'
warehouse_view_ids
One2many → stock.warehouse
readonly=True
args: 'stock.warehouse', 'view_location_id'
copy_data(self, default=None)
create(self, vals_list)
default_get(self, fields)
name_create(self, name)
should_bypass_reservation(self)
unlink(self)
write(self, vals)
company_id
Many2one → res.company
compute='_compute_company_id'
index=True
readonly=False
store=True
args: 'res.company', 'Company'
delivery_count
Integer
compute='_compute_delivery_ids'
args: 'Delivery order count'
delivery_ids
Many2many → stock.picking
compute='_compute_delivery_ids'
string='Transfers'
args: 'stock.picking'
display_complete
Boolean
compute='_compute_display_complete'
location_id
Many2one → stock.location
compute='_compute_single_location'
domain="[('usage', '!=', 'view')]"
group_expand='_read_group_location_id'
inverse='_set_single_location'
readonly=False
store=True
args: 'stock.location', 'Location'
lot_properties
Properties
copy=True
definition='product_id.lot_properties_definition'
args: 'Properties'
name
Char
compute='_compute_name'
help='Unique Lot/Serial Number'
index='trigram'
precompute=True
readonly=False
required=True
store=True
args: 'Lot/Serial Number'
note
Html
string='Description'
partner_ids
Many2many → res.partner
compute='_compute_partner_ids'
search='_search_partner_ids'
args: 'res.partner'
product_id
Many2one → product.product
check_company=True
domain="[('tracking', '!=', 'none'), ('is_storable', '=', True)] + ([('product_tmpl_id', '=', context['default_product_tmpl_id'])] if context.get('default_product_tmpl_id') else [])"
index=True
required=True
tracking=True
args: 'product.product', 'Product'
product_qty
Float
compute='_product_qty'
search='_search_product_qty'
args: 'On Hand Quantity'
product_uom_id
Many2one → uom.uom
related='product_id.uom_id'
args: 'uom.uom', 'Unit'
quant_ids
One2many → stock.quant
readonly=True
args: 'stock.quant', 'lot_id', 'Quants'
ref
Char
help="Internal reference number in case it differs from the manufacturer's lot/serial number"
args: 'Internal Reference'
action_lot_open_quants(self)
action_lot_open_transfers(self)
copy_data(self, default=None)
create(self, vals_list)
default_get(self, fields)
generate_lot_names(self, first_lot, count)
write(self, vals)
additional
Boolean
default=False
args: "Whether the move was added after the picking's confirmation"
allowed_uom_ids
Many2many → uom.uom
compute='_compute_allowed_uom_ids'
args: 'uom.uom'
availability
Float
compute='_compute_product_availability'
help='Quantity in stock that can still be reserved for this move'
readonly=True
args: 'Forecasted Quantity'
company_id
Many2one → res.company
default=<expr>
index=True
required=True
args: 'res.company', 'Company'
date
Datetime
default=fields.Datetime.now
help='Scheduled date until move is done, then date of actual move processing'
index=True
required=True
args: 'Date Scheduled'
date_deadline
Datetime
copy=False
help='In case of outgoing flow, validate the transfer before this date to allow to deliver at promised date to the customer.\n In case of incoming flow, validate the transfer before this date in order to have these products in stock at the date promised by the supplier'
readonly=True
args: 'Deadline'
delay_alert_date
Datetime
compute='_compute_delay_alert_date'
help='Process at this date to be on time'
store=True
args: 'Delay Alert Date'
description_picking
Text
compute='_compute_description_picking'
compute_sudo=True
inverse='_inverse_description_picking'
string='Description Of Picking'
description_picking_manual
Text
readonly=True
display_assign_serial
Boolean
compute='_compute_display_assign_serial'
display_import_lot
Boolean
compute='_compute_display_assign_serial'
forecast_availability
Float
compute='_compute_forecast_information'
compute_sudo=True
digits='Product Unit'
args: 'Forecast Availability'
forecast_expected_date
Datetime
compute='_compute_forecast_information'
compute_sudo=True
args: 'Forecasted Expected date'
has_lines_without_result_package
Boolean
compute='_compute_has_lines_without_result_package'
has_tracking
Selection
related='product_id.tracking'
string='Product with Tracking'
inventory_name
Char
readonly=True
is_date_editable
Boolean
compute='_compute_is_date_editable'
args: 'Is Date Editable'
is_initial_demand_editable
Boolean
compute='_compute_is_initial_demand_editable'
args: 'Is initial demand editable'
is_inventory
Boolean
is_locked
Boolean
compute='_compute_is_locked'
readonly=True
is_quantity_done_editable
Boolean
compute='_compute_is_quantity_done_editable'
args: 'Is quantity done editable'
is_storable
Boolean
related='product_id.is_storable'
location_dest_id
Many2one → stock.location
compute='_compute_location_dest_id'
help='The operations brings product to this location'
index=True
inverse='_set_location_dest_id'
precompute=True
readonly=False
required=True
store=True
args: 'stock.location', 'Intermediate Location'
location_dest_usage
Selection
related='location_dest_id.usage'
string='Destination Location Type'
location_final_id
Many2one → stock.location
bypass_search_access=True
check_company=True
help='The operation brings the products to the intermediate location.But this operation is part of a chain of operations targeting the final location.'
index=True
readonly=False
store=True
args: 'stock.location', 'Final Location'
location_id
Many2one → stock.location
bypass_search_access=True
check_company=True
compute='_compute_location_id'
help='The operation takes and suggests products from this location.'
index=True
precompute=True
readonly=False
required=True
store=True
args: 'stock.location', 'Source Location'
location_usage
Selection
related='location_id.usage'
string='Source Location Type'
lot_ids
Many2many → stock.lot
compute='_compute_lot_ids'
inverse='_set_lot_ids'
readonly=False
string='Serial Numbers'
args: 'stock.lot'
move_dest_ids
Many2many → stock.move
copy=False
help='Optional: next stock move when chaining them'
args: 'stock.move', 'stock_move_move_rel', 'move_orig_id', 'move_dest_id', 'Destination Moves'
move_line_ids
One2many → stock.move.line
move_lines_count
Integer
compute='_compute_move_lines_count'
move_orig_ids
Many2many → stock.move
copy=False
help='Optional: previous stock move when chaining them'
args: 'stock.move', 'stock_move_move_rel', 'move_dest_id', 'move_orig_id', 'Original Move'
never_product_template_attribute_value_ids
Many2many → product.template.attribute.value
string='Never attribute Values'
args: 'product.template.attribute.value', 'template_attribute_value_stock_move_rel', 'move_id', 'template_attribute_value_id'
next_serial
Char
next_serial_count
Integer
orderpoint_id
Many2one → stock.warehouse.orderpoint
index=True
args: 'stock.warehouse.orderpoint', 'Original Reordering Rule'
origin
Char
origin_returned_move_id
Many2one → stock.move
check_company=True
copy=False
help='Move that created the return move'
index=True
args: 'stock.move', 'Origin return move'
package_ids
One2many → stock.package
compute='_compute_package_ids'
string='Packages'
args: 'stock.package'
packaging_uom_id
Many2one → uom.uom
compute='_compute_packaging_uom_id'
help='Packaging unit from sale or purchase orders'
precompute=True
store=True
args: 'uom.uom', 'Packaging'
packaging_uom_qty
Float
compute='_compute_packaging_uom_qty'
help='Quantity in the packaging unit'
store=True
args: 'Packaging Quantity'
partner_id
Many2one → res.partner
compute='_compute_partner_id'
help='Optional address where goods are to be delivered, specifically used for allotment'
index='btree_not_null'
readonly=False
store=True
args: 'res.partner', 'Destination Address '
picked
Boolean
compute='_compute_picked'
copy=False
default=False
help="This checkbox is just indicative, it doesn't validate or generate any product moves."
inverse='_inverse_picked'
readonly=False
store=True
args: 'Picked'
picking_code
Selection
readonly=True
related='picking_id.picking_type_id.code'
picking_id
Many2one → stock.picking
check_company=True
index=True
args: 'stock.picking', 'Transfer'
picking_type_id
Many2one → stock.picking.type
check_company=True
compute='_compute_picking_type_id'
readonly=False
store=True
args: 'stock.picking.type', 'Operation Type'
price_unit
Float
copy=False
args: 'Unit Price'
priority
Selection
compute='_compute_priority'
default='0'
store=True
args: PROCUREMENT_PRIORITIES, 'Priority'
procure_method
Selection
copy=False
default='make_to_stock'
help='By default, the system will take from the stock in the source location and passively wait for availability. The other possibility allows you to directly create a procurement on the source location (and thus ignore its current stock) to gather products. If we want to chain moves and have this one to wait for the previous, this second option should be chosen.'
required=True
string='Supply Method'
args: [('make_to_stock', 'Default: Take From Stock'), ('make_to_order', 'Advanced: Apply Procurement Rules')]
procurement_values
Json
help='Dummy field to store procurement values to propagate them to later steps'
store=False
product_category_id
Many2one → product.category
related='product_id.categ_id'
args: 'product.category', 'Product Category'
product_id
Many2one → product.product
check_company=True
domain="[('type', '=', 'consu')]"
index=True
required=True
args: 'product.product', 'Product'
product_qty
Float
compute='_compute_product_qty'
compute_sudo=True
digits=0
help='Quantity in the default UoM of the product'
inverse='_set_product_qty'
store=True
args: 'Real Quantity'
product_tmpl_id
Many2one → product.template
related='product_id.product_tmpl_id'
args: 'product.template', 'Product Template'
product_uom
Many2one → uom.uom
compute='_compute_product_uom'
domain="[('id', 'in', allowed_uom_ids)]"
precompute=True
readonly=False
required=True
store=True
args: 'uom.uom', 'Unit'
product_uom_qty
Float
default=0
digits='Product Unit'
help='This is the quantity of product that is planned to be moved.Lowering this quantity does not generate a backorder.Changing this quantity on assigned moves affects the product reservation, and should be done with care.'
required=True
args: 'Demand'
propagate_cancel
Boolean
default=True
help='If checked, when this move is cancelled, cancel the linked move too'
args: 'Propagate cancel and split'
quantity
Float
compute='_compute_quantity'
digits='Product Unit'
inverse='_set_quantity'
store=True
args: 'Quantity'
reference
Char
compute='_compute_reference'
store=True
string='Reference'
reference_ids
Many2many → stock.reference
string='References'
args: 'stock.reference', 'stock_reference_move_rel', 'move_id', 'reference_id'
reservation_date
Date
compute='_compute_reservation_date'
help='Computes when a move should be reserved'
store=True
args: 'Date to Reserve'
restrict_partner_id
Many2one → res.partner
check_company=True
index='btree_not_null'
args: 'res.partner', 'Owner '
returned_move_ids
One2many → stock.move
help='Optional: all returned moves created from this move'
args: 'stock.move', 'origin_returned_move_id', 'All returned moves'
route_ids
Many2many → stock.route
help='Preferred route'
args: 'stock.route', 'stock_route_move', 'move_id', 'route_id', 'Destination route'
rule_id
Many2one → stock.rule
check_company=True
help='The stock rule that created this stock move'
ondelete='restrict'
args: 'stock.rule', 'Stock Rule'
scrap_id
Many2one → stock.scrap
check_company=True
index='btree_not_null'
readonly=True
args: 'stock.scrap', 'Scrap operation'
sequence
Integer
default=10
args: 'Sequence'
show_details_visible
Boolean
compute='_compute_show_details_visible'
args: 'Details Visible'
show_lots_m2o
Boolean
compute='_compute_show_info'
args: 'Show lot_id'
show_lots_text
Boolean
compute='_compute_show_info'
args: 'Show lot_name'
show_operations
Boolean
related='picking_id.picking_type_id.show_operations'
show_quant
Boolean
compute='_compute_show_info'
args: 'Show Quant'
state
Selection
copy=False
default='draft'
help="* New: The stock move is created but not confirmed.\n* Waiting Another Move: A linked stock move should be done before this one.\n* Waiting: The stock move is confirmed but the product can't be reserved.\n* Available: The product of the stock move is reserved.\n* Done: The product has been transferred and the transfer has been confirmed."
index=True
readonly=True
string='Status'
args: [('draft', 'New'), ('waiting', 'Waiting Another Move'), ('confirmed', 'Waiting'), ('partially_available', 'Partially Available'), ('assigned', 'Available'), ('done', 'Done'), ('cancel', 'Cancelled')]
warehouse_id
Many2one → stock.warehouse
help='the warehouse to consider for the route selection on the next procurement (if any).'
args: 'stock.warehouse', 'Warehouse'
action_add_packages(self)
action_generate_lot_line_vals(self, context_data, mode, first_lot, count, lot_text)
action_open_reference(self)
action_product_forecast_report(self)
action_show_details(self)
create(self, vals_list)
default_get(self, fields)
split_lots(self, lots)
unlink(self)
write(self, vals)
allowed_uom_ids
Many2many → uom.uom
compute='_compute_allowed_uom_ids'
args: 'uom.uom'
company_id
Many2one → res.company
index=True
readonly=True
required=True
string='Company'
args: 'res.company'
consume_line_ids
Many2many → stock.move.line
date
Datetime
default=fields.Datetime.now
help="Creation date of this move line until updated due to: quantity being increased, 'picked' status has updated, or move line is done."
required=True
args: 'Date'
description_picking
Text
related='move_id.description_picking'
is_entire_pack
Boolean
is_inventory
Boolean
related='move_id.is_inventory'
is_locked
Boolean
readonly=True
related='move_id.is_locked'
location_dest_id
Many2one → stock.location
check_company=True
compute='_compute_location_id'
domain="[('usage', '!=', 'view')]"
index=True
precompute=True
readonly=False
required=True
store=True
args: 'stock.location', 'To'
location_dest_usage
Selection
related='location_dest_id.usage'
string='Destination Location Type'
location_id
Many2one → stock.location
check_company=True
compute='_compute_location_id'
domain="[('usage', '!=', 'view')]"
index=True
precompute=True
readonly=False
required=True
store=True
args: 'stock.location', 'From'
location_usage
Selection
related='location_id.usage'
string='Source Location Type'
lot_id
Many2one → stock.lot
check_company=True
domain="[('product_id', '=', product_id)]"
index=True
args: 'stock.lot', 'Lot/Serial Number'
lot_name
Char
lots_visible
Boolean
compute='_compute_lots_visible'
move_id
Many2one → stock.move
check_company=True
index=True
args: 'stock.move', 'Stock Operation'
move_partner_id
Many2one
readonly=True
related='move_id.partner_id'
origin
Char
related='move_id.origin'
string='Source'
owner_id
Many2one → res.partner
check_company=True
help='When validating the transfer, the products will be taken from this owner.'
index='btree_not_null'
args: 'res.partner', 'From Owner'
package_history_id
Many2one → stock.package.history
index='btree_not_null'
string='Package History'
args: 'stock.package.history'
package_id
Many2one → stock.package
check_company=True
domain="[('location_id', '=', location_id)]"
ondelete='restrict'
args: 'stock.package', 'Source Package'
picked
Boolean
compute='_compute_picked'
copy=False
readonly=False
store=True
args: 'Picked'
picking_code
Selection
readonly=True
related='picking_type_id.code'
picking_id
Many2one → stock.picking
bypass_search_access=True
check_company=True
help='The stock operation where the packing has been made'
index=True
args: 'stock.picking', 'Transfer'
picking_location_dest_id
Many2one
related='picking_id.location_dest_id'
picking_location_id
Many2one
related='picking_id.location_id'
picking_partner_id
Many2one
readonly=True
related='picking_id.partner_id'
picking_type_id
Many2one → stock.picking.type
compute='_compute_picking_type_id'
search='_search_picking_type_id'
args: 'stock.picking.type', 'Operation type'
picking_type_use_create_lots
Boolean
readonly=True
related='picking_type_id.use_create_lots'
picking_type_use_existing_lots
Boolean
readonly=True
related='picking_type_id.use_existing_lots'
produce_line_ids
Many2many → stock.move.line
product_category_name
Char
related='product_id.categ_id.complete_name'
string='Product Category'
product_id
Many2one → product.product
check_company=True
domain="[('type', '!=', 'service')]"
index=True
ondelete='cascade'
args: 'product.product', 'Product'
product_uom_id
Many2one → uom.uom
compute='_compute_product_uom_id'
domain="[('id', 'in', allowed_uom_ids)]"
precompute=True
readonly=False
required=True
store=True
args: 'uom.uom', 'Unit'
quant_id
Many2one → stock.quant
store=False
args: 'stock.quant', 'Pick From'
quantity
Float
compute='_compute_quantity'
copy=False
digits='Product Unit'
readonly=False
store=True
args: 'Quantity'
quantity_product_uom
Float
compute='_compute_quantity_product_uom'
copy=False
digits='Product Unit'
store=True
args: 'Quantity in Product UoM'
reference
Char
related='move_id.reference'
result_package_dest_name
Char
related='result_package_id.dest_complete_name'
args: 'Destination Package Name'
result_package_id
Many2one → stock.package
check_company=True
domain="['|', '|', ('location_id', '=', location_dest_id), ('id', '=', package_id), '&', ('location_id', '=', False), '|', ('move_line_ids', '=', False), ('move_line_ids.location_dest_id', '=', location_dest_id)]"
help='If set, the operations are packed into this package'
ondelete='restrict'
required=False
args: 'stock.package', 'Destination Package'
scheduled_date
Datetime
related='move_id.date'
args: 'Scheduled Date'
scrap_id
Many2one
related='move_id.scrap_id'
state
Selection
related='move_id.state'
store=True
tracking
Selection
readonly=True
related='product_id.tracking'
action_open_reference(self)
action_put_in_pack(self, *, package_id=False, package_type_id=False, package_name=False)
action_revert_inventory(self)
create(self, vals_list)
get_move_line_quant_match(self, move_id, dirty_move_line_ids, dirty_quant_ids)
unlink(self)
write(self, vals)
orderpoint_ids
Many2many → stock.warehouse.orderpoint
predefined_date
Selection
default='day'
string='Snooze for'
args: [('day', '1 Day'), ('week', '1 Week'), ('month', '1 Month'), ('custom', 'Custom')]
snoozed_until
Date
action_snooze(self)
all_children_package_ids
One2many → stock.package
compute='_compute_all_children_package_ids'
search='_search_all_children_package_ids'
args: 'stock.package'
child_package_dest_ids
One2many → stock.package
child_package_ids
One2many → stock.package
string='Contained Packages'
args: 'stock.package', 'parent_package_id'
company_id
Many2one → res.company
compute='_compute_package_info'
index=True
readonly=True
recursive=True
store=True
args: 'res.company', 'Company'
complete_name
Char
compute='_compute_complete_name'
recursive=True
store=True
args: 'Full Package Name'
contained_quant_ids
One2many → stock.quant
compute='_compute_contained_quant_ids'
search='_search_contained_quant_ids'
args: 'stock.quant'
content_description
Char
compute='_compute_content_description'
args: 'Contents'
dest_complete_name
Char
compute='_compute_dest_complete_name'
recursive=True
args: 'Package Name At Destination'
json_popover
Char
compute='_compute_json_popover'
args: 'JSON data for popover widget'
location_dest_id
Many2one → stock.location
compute='_compute_location_dest_id'
search='_search_location_dest_id'
args: 'stock.location', 'Destination location'
location_id
Many2one → stock.location
compute='_compute_package_info'
index=True
readonly=False
recursive=True
store=True
args: 'stock.location', 'Location'
move_line_ids
One2many → stock.move.line
compute='_compute_move_line_ids'
search='_search_move_line_ids'
args: 'stock.move.line'
name
Char
copy=False
index='trigram'
required=True
args: 'Package Reference'
outermost_package_id
Many2one → stock.package
compute='_compute_outermost_package_id'
recursive=True
search='_search_outermost_package_id'
args: 'stock.package', 'Outermost Destination Container'
owner_id
Many2one → res.partner
compute='_compute_owner_id'
compute_sudo=True
readonly=True
search='_search_owner'
args: 'res.partner', 'Owner'
pack_date
Date
default=fields.Date.today
args: 'Pack Date'
package_dest_id
Many2one → stock.package
index='btree_not_null'
args: 'stock.package', 'Destination Container'
package_type_id
Many2one → stock.package.type
index=True
args: 'stock.package.type', 'Package Type'
parent_package_id
Many2one → stock.package
index='btree_not_null'
args: 'stock.package', 'Container'
parent_path
Char
index=True
picking_ids
Many2many → stock.picking
compute='_compute_picking_ids'
help='Transfers in which the Package is set as Destination Package'
search='_search_picking_ids'
string='Transfers'
args: 'stock.picking'
quant_ids
One2many → stock.quant
domain=['|', ('quantity', '!=', 0), ('reserved_quantity', '!=', 0)]
readonly=True
args: 'stock.quant', 'package_id', 'Bulk Content'
shipping_weight
Float
help='Total weight of the package.'
string='Shipping Weight'
valid_sscc
Boolean
compute='_compute_valid_sscc'
args: 'Package name is valid SSCC'
action_add_to_picking(self)
action_put_in_pack(self, *, package_id=False, package_type_id=False, package_name=False)
action_remove_package(self)
action_view_picking(self)
create(self, vals_list)
unpack(self)
write(self, vals)
filtered_location
One2many → stock.location
comodel_name='stock.location'
compute='_compute_filtered_location'
location_dest_id
Many2one → stock.location
required=True
args: 'stock.location', 'Destination location'
move_line_ids
Many2many → stock.move.line
required=True
args: 'stock.move.line', 'Products'
action_done(self)
company_id
Many2one → res.company
default=<expr>
required=True
args: 'res.company', 'Company'
location_dest_id
Many2one → stock.location
location_id
Many2one → stock.location
move_line_ids
One2many → stock.move.line
required=True
string='Move Lines'
args: 'stock.move.line', 'package_history_id'
outermost_dest_id
Many2one → stock.package
package_id
Many2one → stock.package
ondelete='cascade'
required=True
args: 'stock.package', 'Package'
package_name
Char
required=True
args: 'Package Name'
package_type_id
Many2one → stock.package.type
related='package_id.package_type_id'
args: 'stock.package.type'
parent_dest_id
Many2one → stock.package
parent_dest_name
Char
parent_orig_id
Many2one → stock.package
parent_orig_name
Char
picking_ids
Many2many → stock.picking
string='Transfers'
args: 'stock.picking'
action_show_package(self)
barcode
Char
copy=False
args: 'Barcode'
base_weight
Float
help='Weight of the package type'
string='Weight'
company_id
Many2one → res.company
index=True
args: 'res.company', 'Company'
has_quants
Boolean
compute='_compute_has_quants'
args: 'Has Contents'
height
Float
help='Packaging Height'
args: 'Height'
length_uom_name
Char
compute='_compute_length_uom_name'
default=_get_default_length_uom
string='Length unit of measure label'
max_weight
Float
help='Maximum weight shippable in this packaging'
args: 'Max Weight'
name
Char
required=True
args: 'Package Type'
package_use
Selection
default='disposable'
help="Reusable boxes are used for batch picking and emptied afterwards to be reused. In the barcode application, scanning a reusable box will add the products in this box.\n Disposable boxes aren't reused, when scanning a disposable box in the barcode application, the contained products are added to the transfer."
required=True
string='Package Use'
args: [('disposable', 'Disposable Box'), ('reusable', 'Reusable Box (totes)')]
packaging_length
Float
help='Packaging Length'
args: 'Length'
route_ids
Many2many → stock.route
domain="[('package_type_selectable', '=', True)]"
string='Routes'
args: 'stock.route'
sequence
Integer
default=1
help='The first in the sequence is the default one.'
args: 'Sequence'
sequence_code
Char
readonly=False
related='sequence_id.code'
args: 'Sequence Prefix'
sequence_id
Many2one → ir.sequence
check_company=True
copy=False
args: 'ir.sequence', 'Reference Sequence'
storage_category_capacity_ids
One2many → stock.storage.category.capacity
copy=True
args: 'stock.storage.category.capacity', 'package_type_id', 'Storage Category Capacity'
weight_uom_name
Char
compute='_compute_weight_uom_name'
default=_get_default_weight_uom
string='Weight unit of measure label'
width
Float
help='Packaging Width'
args: 'Width'
copy_data(self, default=None)
create(self, vals_list)
write(self, vals)
backorder_id
Many2one → stock.picking
check_company=True
copy=False
help='If this shipment was split, then this field links to the shipment which contains the already processed part.'
index='btree_not_null'
readonly=True
args: 'stock.picking', 'Back Order of'
backorder_ids
One2many → stock.picking
company_id
Many2one → res.company
index=True
readonly=True
related='picking_type_id.company_id'
store=True
string='Company'
args: 'res.company'
date_deadline
Datetime
compute='_compute_date_deadline'
help='In case of outgoing flow, validate the transfer before this date to allow to deliver at promised date to the customer.\n In case of incoming flow, validate the transfer before this date in order to have these products in stock at the date promised by the supplier'
store=True
args: 'Deadline'
date_done
Datetime
copy=False
help='Date at which the transfer has been processed or cancelled.'
args: 'Date of Transfer'
delay_alert_date
Datetime
compute='_compute_delay_alert_date'
search='_search_delay_alert_date'
args: 'Delay Alert Date'
has_deadline_issue
Boolean
compute='_compute_has_deadline_issue'
default=False
help='Is late or will be late depending on the deadline and scheduled date'
store=True
args: 'Is late'
has_scrap_move
Boolean
compute='_has_scrap_move'
args: 'Has Scrap Moves'
has_tracking
Boolean
compute='_compute_has_tracking'
is_date_editable
Boolean
compute='_compute_is_date_editable'
args: 'Is Scheduled Date Editable'
is_locked
Boolean
copy=False
default=True
help='When the picking is not done this allows changing the initial demand. When the picking is done this allows changing the done quantities.'
is_signed
Boolean
compute='_compute_is_signed'
args: 'Is Signed'
json_popover
Char
compute='_compute_json_popover'
args: 'JSON data for the popover widget'
location_dest_id
Many2one → stock.location
check_company=True
compute='_compute_location_id'
precompute=True
readonly=False
required=True
store=True
args: 'stock.location', 'Destination Location'
location_id
Many2one → stock.location
check_company=True
compute='_compute_location_id'
precompute=True
readonly=False
required=True
store=True
args: 'stock.location', 'Source Location'
lot_id
Many2one → stock.lot
readonly=True
related='move_line_ids.lot_id'
args: 'stock.lot', 'Lot/Serial Number'
move_ids
One2many → stock.move
copy=True
string='Stock Moves'
args: 'stock.move', 'picking_id'
move_line_ids
One2many → stock.move.line
move_type
Selection
compute='_compute_move_type'
help='It specifies goods to be deliver partially or all at once'
precompute=True
readonly=False
required=True
store=True
args: [('direct', 'As soon as possible'), ('one', 'When all products are ready')], 'Shipping Policy'
name
Char
copy=False
default='/'
index='trigram'
readonly=True
args: 'Reference'
note
Html
origin
Char
help='Reference of the document'
index='trigram'
args: 'Source Document'
owner_id
Many2one → res.partner
check_company=True
help='When validating the transfer, the products will be assigned to this owner.'
index='btree_not_null'
args: 'res.partner', 'Assign Owner'
package_history_ids
Many2many → stock.package.history
copy=False
string='Transfered Packages'
args: 'stock.package.history'
packages_count
Integer
compute='_compute_packages_count'
args: 'Packages Count'
partner_country_id
Many2one → res.country
related='partner_id.country_id'
args: 'res.country'
partner_id
Many2one → res.partner
check_company=True
index='btree_not_null'
args: 'res.partner', 'Contact'
picking_properties
Properties
copy=True
definition='picking_type_id.picking_properties_definition'
args: 'Properties'
picking_type_code
Selection
readonly=True
related='picking_type_id.code'
picking_type_entire_packs
Boolean
related='picking_type_id.show_entire_packs'
picking_type_id
Many2one → stock.picking.type
default=_default_picking_type_id
index=True
required=True
tracking=True
args: 'stock.picking.type', 'Operation Type'
picking_warning_text
Text
compute='_compute_picking_warning_text'
help='Internal instructions for the partner or its parent company as set by the user.'
args: 'Picking Instructions'
printed
Boolean
copy=False
args: 'Printed'
priority
Selection
default='0'
help='Products will be reserved first for the transfers with the highest priorities.'
string='Priority'
args: PROCUREMENT_PRIORITIES
product_id
Many2one → product.product
readonly=True
related='move_ids.product_id'
args: 'product.product', 'Product'
products_availability
Char
compute='_compute_products_availability'
help='Latest product availability status of the picking'
string='Product Availability'
products_availability_state
Selection
compute='_compute_products_availability'
search='_search_products_availability_state'
args: [('available', 'Available'), ('expected', 'Expected'), ('late', 'Late')]
reference_ids
Many2many → stock.reference
readonly=True
related='move_ids.reference_ids'
string='References'
args: 'stock.reference'
return_count
Integer
compute='_compute_return_count'
compute_sudo=False
args: '# Returns'
return_id
Many2one → stock.picking
check_company=True
copy=False
help='If this picking was created as a return of another picking, this field links to the original picking.'
index='btree_not_null'
readonly=True
args: 'stock.picking', 'Return of'
return_ids
One2many → stock.picking
scheduled_date
Datetime
compute='_compute_scheduled_date'
default=fields.Datetime.now
help='Scheduled time for the first part of the shipment to be processed. Setting manually a value here would set it as expected date for all the stock moves.'
index=True
inverse='_set_scheduled_date'
store=True
tracking=True
args: 'Scheduled Date'
search_date_category
Selection
readonly=True
search='_search_date_category'
store=False
string='Date Category'
args: [('before', 'Before'), ('yesterday', 'Yesterday'), ('today', 'Today'), ('day_1', 'Tomorrow'), ('day_2', 'The day after tomorrow'), ('after', 'After')]
shipping_volume
Float
compute='_compute_shipping_volume'
args: 'Volume for Shipping'
shipping_weight
Float
compute='_compute_shipping_weight'
digits='Stock Weight'
help="Total weight of packages and products not in a package. Packages with no shipping weight specified will default to their products' total weight. This is the weight used to compute the cost of the shipping."
readonly=False
store=True
args: 'Weight for Shipping'
show_allocation
Boolean
compute='_compute_show_allocation'
help='Technical Field used to decide whether the button "Allocation" should be displayed.'
show_check_availability
Boolean
compute='_compute_show_check_availability'
help='Technical field used to compute whether the button "Check Availability" should be displayed.'
show_lots_text
Boolean
compute='_compute_show_lots_text'
show_next_pickings
Boolean
compute='_compute_show_next_pickings'
show_operations
Boolean
related='picking_type_id.show_operations'
signature
Image
attachment=True
copy=False
help='Signature'
args: 'Signature'
state
Selection
compute='_compute_state'
copy=False
help=' * Draft: The transfer is not confirmed yet. Reservation doesn\'t apply.\n * Waiting another operation: This transfer is waiting for another operation before being ready.\n * Waiting: The transfer is waiting for the availability of some products.\n(a) The shipping policy is "As soon as possible": no product could be reserved.\n(b) The shipping policy is "When all products are ready": not all the products could be reserved.\n * Ready: The transfer is ready to be processed.\n(a) The shipping policy is "As soon as possible": at least one product has been reserved.\n(b) The shipping policy is "When all products are ready": all product have been reserved.\n * Done: The transfer has been processed.\n * Cancelled: The transfer has been cancelled.'
index=True
readonly=True
store=True
string='Status'
tracking=True
args: [('draft', 'Draft'), ('waiting', 'Waiting Another Operation'), ('confirmed', 'Waiting'), ('assigned', 'Ready'), ('done', 'Done'), ('cancel', 'Cancelled')]
use_create_lots
Boolean
related='picking_type_id.use_create_lots'
use_existing_lots
Boolean
related='picking_type_id.use_existing_lots'
user_id
Many2one → res.users
copy=False
default=<expr>
domain=<expr>
tracking=True
args: 'res.users', 'Responsible'
warehouse_address_id
Many2one → res.partner
related='picking_type_id.warehouse_id.partner_id'
args: 'res.partner'
weight_bulk
Float
compute='_compute_bulk_weight'
help='Total weight of products which are not in a package.'
args: 'Bulk Weight'
action_add_entire_packs(self, package_ids)
action_assign(self)
action_cancel(self)
action_confirm(self)
action_detailed_operations(self)
action_next_transfer(self)
action_open_label_layout(self)
action_open_label_type(self)
action_picking_move_tree(self)
action_put_in_pack(self, *, package_id=False, package_type_id=False, package_name=False)
action_see_move_scrap(self)
action_see_package_histories(self)
action_see_packages(self)
action_see_returns(self)
action_split_transfer(self)
action_toggle_is_locked(self)
action_view_reception_report(self)
button_scrap(self)
button_validate(self)
calculate_date_category(self, datetime)
create(self, vals_list)
date_category_to_domain(self, field_name, date_category)
do_print_picking(self)
do_unreserve(self)
get_action_click_graph(self)
get_action_picking_tree_incoming(self)
get_action_picking_tree_internal(self)
get_action_picking_tree_outgoing(self)
get_empty_list_help(self, help_message)
should_print_delivery_address(self)
unlink(self)
write(self, vals)
active
Boolean
default=True
args: 'Active'
auto_print_delivery_slip
Boolean
help='If this checkbox is ticked, Odoo will automatically print the delivery slip of a picking when it is validated.'
args: 'Auto Print Delivery Slip'
auto_print_lot_labels
Boolean
help='If this checkbox is ticked, Odoo will automatically print the lot/SN labels of a picking when it is validated.'
args: 'Auto Print Lot/SN Labels'
auto_print_package_label
Boolean
help='If this checkbox is ticked, Odoo will automatically print the package label when "Put in Pack" button is used.'
args: 'Auto Print Package Label'
auto_print_packages
Boolean
help='If this checkbox is ticked, Odoo will automatically print the packages and their contents of a picking when it is validated.'
args: 'Auto Print Packages'
auto_print_product_labels
Boolean
help='If this checkbox is ticked, Odoo will automatically print the product labels of a picking when it is validated.'
args: 'Auto Print Product Labels'
auto_print_reception_report
Boolean
help='If this checkbox is ticked, Odoo will automatically print the reception report of a picking when it is validated and has assigned moves.'
args: 'Auto Print Reception Report'
auto_print_reception_report_labels
Boolean
help='If this checkbox is ticked, Odoo will automatically print the reception report labels of a picking when it is validated.'
args: 'Auto Print Reception Report Labels'
auto_print_return_slip
Boolean
help='If this checkbox is ticked, Odoo will automatically print the return slip of a picking when it is validated.'
args: 'Auto Print Return Slip'
auto_show_reception_report
Boolean
help='If this checkbox is ticked, Odoo will automatically show the reception report (if there are moves to allocate to) when validating.'
args: 'Show Reception Report at Validation'
barcode
Char
copy=False
args: 'Barcode'
code
Selection
default='incoming'
required=True
args: [('incoming', 'Receipt'), ('outgoing', 'Delivery'), ('internal', 'Internal Transfer')], 'Type of Operation'
color
Integer
company_id
Many2one → res.company
default=<expr>
index=True
required=True
args: 'res.company', 'Company'
count_move_ready
Integer
compute='_compute_move_count'
count_picking
Integer
compute='_compute_picking_count'
count_picking_backorders
Integer
compute='_compute_picking_count'
count_picking_draft
Integer
compute='_compute_picking_count'
count_picking_late
Integer
compute='_compute_picking_count'
count_picking_ready
Integer
compute='_compute_picking_count'
count_picking_waiting
Integer
compute='_compute_picking_count'
create_backorder
Selection
default='ask'
help='When validating a transfer:\n * Ask: users are asked to choose if they want to make a backorder for remaining products\n * Always: a backorder is automatically created for the remaining products\n * Never: remaining products are cancelled'
required=True
args: [('ask', 'Ask'), ('always', 'Always'), ('never', 'Never')], 'Create Backorder'
default_location_dest_id
Many2one → stock.location
check_company=True
compute='_compute_default_location_dest_id'
help='This is the default destination location when this operation is manually created. However, it is possible to change it afterwards or that the routes use another one by default.'
precompute=True
readonly=False
required=True
store=True
args: 'stock.location', 'Destination Location'
default_location_src_id
Many2one → stock.location
check_company=True
compute='_compute_default_location_src_id'
help='This is the default source location when this operation is manually created. However, it is possible to change it afterwards or that the routes use another one by default.'
precompute=True
readonly=False
required=True
store=True
args: 'stock.location', 'Source Location'
favorite_user_ids
Many2many → res.users
hide_reservation_method
Boolean
compute='_compute_hide_reservation_method'
is_favorite
Boolean
compute='_compute_is_favorite'
compute_sudo=True
inverse='_inverse_is_favorite'
search='_search_is_favorite'
string='Show Operation in Overview'
kanban_dashboard_graph
Text
compute='_compute_kanban_dashboard_graph'
lot_label_format
Selection
default='4x12_lots'
string='Lot Label Format to auto-print'
args: [('4x12_lots', '4 x 12 - One per lot/SN'), ('4x12_units', '4 x 12 - One per unit'), ('zpl_lots', 'ZPL Labels - One per lot/SN'), ('zpl_units', 'ZPL Labels - One per unit')]
move_type
Selection
default='direct'
help='It specifies goods to be transferred partially or all at once'
required=True
args: [('direct', 'As soon as possible'), ('one', 'When all products are ready')], 'Shipping Policy'
name
Char
required=True
translate=True
args: 'Operation Type'
package_label_to_print
Selection
default='pdf'
args: [('pdf', 'PDF'), ('zpl', 'ZPL')], 'Package Label to Print'
picking_properties_definition
PropertiesDefinition
print_label
Boolean
compute='_compute_print_label'
help='Check this box if you want to generate shipping label in this operation.'
readonly=False
store=True
args: 'Generate Shipping Labels'
product_label_format
Selection
default='2x7xprice'
string='Product Label Format to auto-print'
args: [('dymo', 'Dymo'), ('2x7xprice', '2 x 7 with price'), ('4x7xprice', '4 x 7 with price'), ('4x12', '4 x 12'), ('4x12xprice', '4 x 12 with price'), ('zpl', 'ZPL Labels'), ('zplxprice', 'ZPL Labels with price')]
reservation_days_before
Integer
help='Maximum number of days before scheduled date that products should be reserved.'
args: 'Days'
reservation_days_before_priority
Integer
help='Maximum number of days before scheduled date that priority picking products should be reserved.'
args: 'Days when starred'
reservation_method
Selection
default='at_confirm'
help='How products in transfers of this operation type should be reserved.'
required=True
args: [('at_confirm', 'At Confirmation'), ('manual', 'Manually'), ('by_date', 'Before scheduled date')], 'Reservation Method'
return_picking_type_id
Many2one → stock.picking.type
check_company=True
index='btree_not_null'
args: 'stock.picking.type', 'Operation Type for Returns'
sequence
Integer
help="Used to order the 'All Operations' kanban view"
args: 'Sequence'
sequence_code
Char
required=True
args: 'Sequence Prefix'
sequence_id
Many2one → ir.sequence
check_company=True
copy=False
args: 'ir.sequence', 'Reference Sequence'
set_package_type
Boolean
default=False
help='If ticked, you will be able to select which package or package type to use in a put in pack'
args: 'Set Package Type'
show_entire_packs
Boolean
default=False
help='If ticked, packages to move will be directly displayed in Barcode instead of the products they contain'
args: 'Move Entire Packages'
show_operations
Boolean
default=False
help='If this checkbox is ticked, the pickings lines will represent detailed stock operations. If not, the picking lines will represent an aggregate of detailed stock operations.'
args: 'Show Detailed Operations'
show_picking_type
Boolean
compute='_compute_show_picking_type'
use_create_lots
Boolean
compute='_compute_use_create_lots'
default=True
help='If this is checked only, it will suppose you want to create new Lots/Serial Numbers, so you can provide them in a text field. '
readonly=False
store=True
args: 'Create New Lots/Serial Numbers'
use_existing_lots
Boolean
compute='_compute_use_existing_lots'
default=True
help='If this is checked, you will be able to choose the Lots/Serial Numbers. You can also decide to not put lots in this operation type. This means it will create stock with no lot or not put a restriction on the lot taken. '
readonly=False
store=True
args: 'Use Existing Lots/Serial Numbers'
warehouse_id
Many2one → stock.warehouse
check_company=True
compute='_compute_warehouse_id'
ondelete='cascade'
readonly=False
store=True
args: 'stock.warehouse', 'Warehouse'
action_redirect_to_barcode_installation(self)
copy_data(self, default=None)
create(self, vals_list)
get_action_picking_tree_backorder(self)
get_action_picking_tree_late(self)
get_action_picking_tree_ready(self)
get_action_picking_tree_waiting(self)
get_action_picking_type_moves_analysis(self)
get_action_picking_type_ready_moves(self)
get_stock_picking_action_picking_type(self)
write(self, vals)
location_dest_id
Many2one → stock.location
move_line_ids
Many2many → stock.move.line
string='Move lines'
args: 'stock.move.line'
origin_package_ids
Many2many → stock.package
compute='_compute_origin_package_ids'
args: 'stock.package'
package_ids
Many2many → stock.package
string='Packages'
args: 'stock.package'
package_type_id
Many2one → stock.package.type
package_type_sequence_id
Many2one
related='package_type_id.sequence_id'
result_package_id
Many2one → stock.package
action_put_in_pack(self)
active
Boolean
default=True
args: 'Active'
category_id
Many2one → product.category
default=_default_category_id
domain=[('filter_for_stock_putaway_rule', '=', True)]
index='btree_not_null'
ondelete='cascade'
args: 'product.category', 'Product Category'
company_id
Many2one → res.company
default=<expr>
index=True
required=True
args: 'res.company', 'Company'
location_in_id
Many2one → stock.location
check_company=True
default=_default_location_id
domain="[('child_ids', '!=', False)]"
index=True
ondelete='cascade'
required=True
args: 'stock.location', 'When product arrives in'
location_out_id
Many2one → stock.location
check_company=True
domain="[('id', 'child_of', location_in_id)]"
ondelete='cascade'
required=True
args: 'stock.location', 'Store to sublocation'
package_type_ids
Many2many → stock.package.type
check_company=True
string='Package Type'
args: 'stock.package.type'
product_id
Many2one → product.product
check_company=True
default=_default_product_id
domain="[('product_tmpl_id', '=', context.get('active_id', False))] if context.get('active_model') == 'product.template' else [('type', '!=', 'service')]"
index='btree_not_null'
ondelete='cascade'
args: 'product.product', 'Product'
sequence
Integer
help='Give to the more specialized category, a higher priority to have them in top of the list.'
args: 'Priority'
storage_category_id
Many2one → stock.storage.category
check_company=True
compute='_compute_storage_category'
ondelete='cascade'
readonly=False
store=True
args: 'stock.storage.category', 'Storage Category'
sublocation
Selection
default='no'
args: [('no', 'No'), ('last_used', 'Last Used'), ('closest_location', 'Closest Location')]
create(self, vals_list)
write(self, vals)
available_quantity
Float
compute='_compute_available_quantity'
digits='Product Unit'
help="On hand quantity which hasn't been reserved on a transfer, in the default unit of measure of the product"
args: 'Available Quantity'
company_id
Many2one
readonly=True
related='location_id.company_id'
store=True
string='Company'
cyclic_inventory_frequency
Integer
related='location_id.cyclic_inventory_frequency'
in_date
Datetime
default=fields.Datetime.now
readonly=True
required=True
args: 'Incoming Date'
inventory_date
Date
compute='_compute_inventory_date'
help='Next date the On Hand Quantity should be counted.'
readonly=False
store=True
args: 'Scheduled'
inventory_diff_quantity
Float
compute='_compute_inventory_diff_quantity'
digits='Product Unit'
help="Indicates the gap between the product's theoretical quantity and its counted quantity."
readonly=True
store=True
args: 'Difference'
inventory_quantity
Float
digits='Product Unit'
help="The product's counted quantity."
args: 'Counted'
inventory_quantity_auto_apply
Float
compute='_compute_inventory_quantity_auto_apply'
digits='Product Unit'
groups='stock.group_stock_manager'
inverse='_set_inventory_quantity'
args: 'Inventoried Quantity'
inventory_quantity_set
Boolean
compute='_compute_inventory_quantity_set'
readonly=False
store=True
is_favorite
Boolean
related='product_tmpl_id.is_favorite'
is_outdated
Boolean
compute='_compute_is_outdated'
search='_search_is_outdated'
args: 'Quantity has been moved since last count'
last_count_date
Date
compute='_compute_last_count_date'
help='Last time the Quantity was Updated'
location_id
Many2one → stock.location
bypass_search_access=True
domain=<expr>
index=True
ondelete='restrict'
required=True
args: 'stock.location', 'Location'
lot_id
Many2one → stock.lot
check_company=True
domain=<expr>
index=True
ondelete='restrict'
args: 'stock.lot', 'Lot/Serial Number'
lot_properties
Properties
definition='product_id.lot_properties_definition'
readonly=True
related='lot_id.lot_properties'
on_hand
Boolean
search='_search_on_hand'
store=False
args: 'On Hand'
owner_id
Many2one → res.partner
check_company=True
help='This is the owner of the quant'
index='btree_not_null'
args: 'res.partner', 'Owner'
package_id
Many2one → stock.package
check_company=True
domain="['|', ('location_id', '=', location_id), '&', ('location_id', '=', False), ('quant_ids', '=', False)]"
help='The package containing this quant'
index=True
ondelete='restrict'
args: 'stock.package', 'Package'
product_categ_id
Many2one
related='product_tmpl_id.categ_id'
product_id
Many2one → product.product
check_company=True
domain=<expr>
index=True
ondelete='restrict'
required=True
args: 'product.product', 'Product'
product_tmpl_id
Many2one → product.template
related='product_id.product_tmpl_id'
string='Product Template'
args: 'product.template'
product_uom_id
Many2one → uom.uom
readonly=True
related='product_id.uom_id'
args: 'uom.uom', 'Unit'
quantity
Float
digits='Product Unit'
help='Quantity of products in this quant, in the default unit of measure of the product'
readonly=True
args: 'Quantity'
reserved_quantity
Float
default=0.0
digits='Product Unit'
help='Quantity of reserved products in this quant, in the default unit of measure of the product'
readonly=True
required=True
args: 'Reserved Quantity'
sn_duplicated
Boolean
compute='_compute_sn_duplicated'
help='If the same SN is in another Quant'
string='Duplicated Serial Number'
storage_category_id
Many2one
related='location_id.storage_category_id'
tracking
Selection
readonly=True
related='product_id.tracking'
user_id
Many2one → res.users
domain=<expr>
help='User assigned to do product count.'
args: 'res.users', 'Assigned To'
warehouse_id
Many2one → stock.warehouse
related='location_id.warehouse_id'
args: 'stock.warehouse'
action_apply_all(self)
action_apply_inventory(self, date=None)
action_clear_inventory_quantity(self)
action_inventory_history(self)
action_reset(self)
action_set_inventory_quantity(self)
action_set_inventory_quantity_zero(self)
action_stock_quant_relocate(self)
action_view_inventory(self)
action_view_orderpoints(self)
action_view_quants(self)
action_view_stock_moves(self)
check_location_id(self)
check_lot_id(self)
check_product_id(self)
check_quantity(self)
copy(self, default=None)
create(self, vals_list)
get_aggregate_barcodes(self)
get_import_templates(self)
move_quants(self, location_dest_id=False, package_dest_id=False, message=False, unpack=False, up_to_parent_packages=False)
name_create(self, name)
write(self, vals)
company_id
Many2one
related='quant_ids.company_id'
dest_location_id
Many2one → stock.location
domain="[('usage', '=', 'internal'), ('company_id', '=', company_id)]"
args: 'stock.location'
dest_package_id
Many2one → stock.package
compute='_compute_dest_package_id'
domain='dest_package_id_domain'
store=True
args: 'stock.package'
dest_package_id_domain
Char
compute='_compute_dest_package_id_domain'
is_multi_location
Boolean
compute='_compute_is_multi_location'
is_partial_package
Boolean
compute='_compute_is_partial_package'
message
Text
partial_package_names
Char
compute='_compute_is_partial_package'
quant_ids
Many2many → stock.quant
action_relocate_quants(self)
inventory_datetime
Datetime
default=fields.Datetime.now
help='Choose a date to get the inventory at that date'
args: 'Inventory at Date'
open_at_date(self)
move_ids
Many2many → stock.move
string='Stock Moves'
args: 'stock.move', 'stock_reference_move_rel', 'reference_id', 'move_id'
name
Char
readonly=True
required=True
args: 'Reference'
picking_ids
Many2many → stock.picking
compute='_compute_picking_ids'
readonly=True
string='Transfers'
args: 'stock.picking'
No public methods.
allowed_route_ids
Many2many → stock.route
compute='_compute_allowed_route_ids'
args: 'stock.route'
route_id
Many2one → stock.route
check_company=True
help="Apply specific route for the replenishment instead of product's default routes."
string='Preferred Route'
args: 'stock.route'
No public methods.
based_on
Selection
default='one_month'
help='Estimate the sales volume for the period based on past period or order the forecasted quantity for that period.'
required=True
selection=[('one_week', 'Last 7 days'), ('one_month', 'Last 30 days'), ('three_months', 'Last 3 months'), ('one_year', 'Last 12 months'), ('last_year', 'Same month last year'), ('last_year_2', 'Next month last year'), ('last_year_3', 'After next month last year'), ('last_year_quarter', 'Last year quarter')]
string='Based on'
json_lead_days
Char
compute='_compute_json_lead_days'
json_replenishment_graph
Char
compute='_compute_json_replenishment_graph'
orderpoint_id
Many2one → stock.warehouse.orderpoint
percent_factor
Integer
default=100
required=True
product_id
Many2one → product.product
related='orderpoint_id.product_id'
args: 'product.product'
product_max_qty
Float
readonly=False
related='orderpoint_id.product_max_qty'
related_sudo=False
required=True
args: 'Max'
product_min_qty
Float
readonly=False
related='orderpoint_id.product_min_qty'
related_sudo=False
required=True
args: 'Min'
product_uom_name
Char
related='orderpoint_id.product_uom_name'
qty_to_order
Float
related='orderpoint_id.qty_to_order'
warehouseinfo_ids
One2many
related='orderpoint_id.warehouse_id.resupply_route_ids'
wh_replenishment_option_ids
One2many → stock.replenishment.option
compute='_compute_wh_replenishment_options'
args: 'stock.replenishment.option', 'replenishment_info_id'
No public methods.
free_qty
Float
compute='_compute_free_qty'
lead_time
Char
compute='_compute_lead_time'
location_id
Many2one → stock.location
related='warehouse_id.lot_stock_id'
args: 'stock.location'
product_id
Many2one → product.product
qty_to_order
Float
related='replenishment_info_id.qty_to_order'
replenishment_info_id
Many2one → stock.replenishment.info
route_id
Many2one → stock.route
uom
Char
related='product_id.uom_name'
warehouse_id
Many2one → stock.warehouse
related='route_id.supplier_wh_id'
args: 'stock.warehouse'
warning_message
Char
compute='_compute_warning_message'
order_all(self)
order_avbl(self)
select_route(self)
inventory_date
Date
default=fields.Datetime.now
help='Choose a date to get the inventory at that date'
required=True
args: 'Scheduled at'
quant_ids
Many2many → stock.quant
show_expected_quantity
Boolean
compute='_compute_show_expected_quantity'
help='If the user can see the expected quantity or not'
inverse='_set_show_expected_quantity'
user_id
Many2one → res.users
domain=<expr>
string='Assign to'
args: 'res.users'
action_request_count(self)
company_id
Many2one
related='picking_id.company_id'
picking_id
Many2one → stock.picking
picking_type_code
Selection
readonly=True
related='picking_id.picking_type_code'
product_return_moves
One2many → stock.return.picking.line
compute='_compute_moves_locations'
precompute=True
readonly=False
store=True
args: 'stock.return.picking.line', 'wizard_id', 'Moves'
action_create_exchanges(self)
action_create_returns(self)
action_create_returns_all(self)
default_get(self, fields)
move_id
Many2one → stock.move
move_quantity
Float
related='move_id.quantity'
string='Move Quantity'
product_id
Many2one → product.product
required=True
string='Product'
args: 'product.product'
quantity
Float
default=1
digits='Product Unit'
required=True
args: 'Quantity'
uom_id
Many2one → uom.uom
compute='_compute_uom_id'
string='Unit'
args: 'uom.uom'
wizard_id
Many2one → stock.return.picking
string='Wizard'
args: 'stock.return.picking'
No public methods.
active
Boolean
default=True
help='If the active field is set to False, it will allow you to hide the route without removing it.'
args: 'Active'
categ_ids
Many2many → product.category
copy=False
args: 'product.category', 'stock_route_categ', 'route_id', 'categ_id', 'Product Categories'
company_id
Many2one → res.company
default=<expr>
help='Leave this field empty if this route is shared between all companies'
index=True
args: 'res.company', 'Company'
name
Char
required=True
translate=True
args: 'Route'
package_type_selectable
Boolean
help='When checked, the route will be selectable on package types'
args: 'Applicable on Package Type'
product_categ_selectable
Boolean
help='When checked, the route will be selectable on the Product Category.'
args: 'Applicable on Product Category'
product_ids
Many2many → product.template
check_company=True
copy=False
args: 'product.template', 'stock_route_product', 'route_id', 'product_id', 'Products'
product_selectable
Boolean
default=True
help='When checked, the route will be selectable in the Inventory tab of the Product form.'
args: 'Applicable on Product'
rule_ids
One2many → stock.rule
copy=True
args: 'stock.rule', 'route_id', 'Rules'
sequence
Integer
default=0
args: 'Sequence'
supplied_wh_id
Many2one → stock.warehouse
index='btree_not_null'
args: 'stock.warehouse', 'Supplied Warehouse'
supplier_wh_id
Many2one → stock.warehouse
warehouse_domain_ids
One2many → stock.warehouse
compute='_compute_warehouses'
args: 'stock.warehouse'
warehouse_ids
Many2many → stock.warehouse
copy=False
domain="[('id', 'in', warehouse_domain_ids)]"
args: 'stock.warehouse', 'stock_route_warehouse', 'route_id', 'warehouse_id', 'Warehouses'
warehouse_selectable
Boolean
help='When a warehouse is selected for this route, this route should be seen as the default route when products pass through this warehouse.'
args: 'Applicable on Warehouse'
copy_data(self, default=None)
write(self, vals)
action
Selection
default='pull'
index=True
required=True
selection=[('pull', 'Pull From'), ('push', 'Push To'), ('pull_push', 'Pull & Push')]
string='Action'
active
Boolean
default=True
help='If unchecked, it will allow you to hide the rule without removing it.'
args: 'Active'
auto
Selection
default='manual'
help="The 'Manual Operation' value will create a stock move after the current one. With 'Automatic No Step Added', the location is replaced in the original move."
required=True
string='Automatic Move'
args: [('manual', 'Manual Operation'), ('transparent', 'Automatic No Step Added')]
company_id
Many2one → res.company
default=<expr>
domain="[('id', '=?', route_company_id)]"
index=True
args: 'res.company', 'Company'
delay
Integer
default=0
help='The expected date of the created transfer will be computed based on this lead time.'
args: 'Lead Time'
location_dest_from_rule
Boolean
default=False
help='When set to True the destination location of the stock.move will be the rule.Otherwise, it takes it from the picking type.'
args: 'Destination location origin from rule'
location_dest_id
Many2one → stock.location
check_company=True
index=True
required=True
args: 'stock.location', 'Destination Location'
location_src_id
Many2one → stock.location
check_company=True
index=True
args: 'stock.location', 'Source Location'
name
Char
help='This field will fill the packing origin and the name of its moves'
required=True
translate=True
args: 'Name'
partner_address_id
Many2one → res.partner
check_company=True
help='Address where goods should be delivered. Optional.'
args: 'res.partner', 'Partner Address'
picking_type_code_domain
Json
compute='_compute_picking_type_code_domain'
picking_type_id
Many2one → stock.picking.type
check_company=True
domain="[('code', 'in', picking_type_code_domain)] if picking_type_code_domain else []"
required=True
args: 'stock.picking.type', 'Operation Type'
procure_method
Selection
default='make_to_stock'
help='Take From Stock: the products will be taken from the available stock of the source location.\nTrigger Another Rule: the system will try to find a stock rule to bring the products in the source location. The available stock will be ignored.\nTake From Stock, if Unavailable, Trigger Another Rule: the products will be taken from the available stock of the source location.If there is no stock available, the system will try to find a rule to bring the products in the source location.'
required=True
string='Supply Method'
args: [('make_to_stock', 'Take From Stock'), ('make_to_order', 'Trigger Another Rule'), ('mts_else_mto', 'Take From Stock, if unavailable, Trigger Another Rule')]
propagate_cancel
Boolean
default=False
help='When ticked, if the move created by this rule is cancelled, the next move will be cancelled too.'
args: 'Cancel Next Move'
propagate_carrier
Boolean
default=False
help='When ticked, carrier of shipment will be propagated.'
args: 'Propagation of carrier'
push_domain
Char
route_company_id
Many2one
related='route_id.company_id'
string='Route Company'
route_id
Many2one → stock.route
index=True
ondelete='cascade'
required=True
args: 'stock.route', 'Route'
route_sequence
Integer
compute_sudo=True
related='route_id.sequence'
store=True
args: 'Route Sequence'
rule_message
Html
compute='_compute_action_message'
sequence
Integer
default=20
args: 'Sequence'
warehouse_id
Many2one → stock.warehouse
check_company=True
index=True
args: 'stock.warehouse', 'Warehouse'
copy_data(self, default=None)
default_get(self, fields)
run(self, procurements, raise_user_error=True)
run_scheduler(self, use_new_cursor=False, company_id=False)
product_has_variants
Boolean
default=False
required=True
args: 'Has variants'
product_id
Many2one → product.product
required=True
string='Product'
args: 'product.product'
product_tmpl_id
Many2one → product.template
required=True
string='Product Template'
args: 'product.template'
warehouse_ids
Many2many → stock.warehouse
help='Show the routes that apply on selected warehouses.'
required=True
string='Warehouses'
args: 'stock.warehouse'
default_get(self, fields)
print_report(self)
allowed_uom_ids
Many2many → uom.uom
compute='_compute_allowed_uom_ids'
args: 'uom.uom'
company_id
Many2one → res.company
default=<expr>
required=True
string='Company'
args: 'res.company'
date_done
Datetime
readonly=True
args: 'Date'
location_id
Many2one → stock.location
check_company=True
compute='_compute_location_id'
domain="[('usage', '=', 'internal')]"
precompute=True
readonly=False
required=True
store=True
args: 'stock.location', 'Source Location'
lot_id
Many2one → stock.lot
check_company=True
domain="[('product_id', '=', product_id)]"
args: 'stock.lot', 'Lot/Serial'
move_ids
One2many → stock.move
name
Char
copy=False
default=<expr>
readonly=True
required=True
args: 'Reference'
origin
Char
string='Source Document'
owner_id
Many2one → res.partner
check_company=True
args: 'res.partner', 'Owner'
package_id
Many2one → stock.package
check_company=True
args: 'stock.package', 'Package'
picking_id
Many2one → stock.picking
check_company=True
args: 'stock.picking', 'Picking'
product_id
Many2one → product.product
check_company=True
domain="[('type', '=', 'consu')]"
required=True
args: 'product.product', 'Product'
product_uom_id
Many2one → uom.uom
compute='_compute_product_uom_id'
domain="[('id', 'in', allowed_uom_ids)]"
precompute=True
readonly=False
required=True
store=True
args: 'uom.uom', 'Unit'
scrap_location_id
Many2one → stock.location
check_company=True
compute='_compute_scrap_location_id'
domain="[('usage', '=', 'inventory')]"
precompute=True
readonly=False
required=True
store=True
args: 'stock.location', 'Scrap Location'
scrap_qty
Float
compute='_compute_scrap_qty'
default=1.0
digits='Product Unit'
readonly=False
required=True
store=True
args: 'Quantity'
scrap_reason_tag_ids
Many2many → stock.scrap.reason.tag
comodel_name='stock.scrap.reason.tag'
string='Scrap Reason'
should_replenish
Boolean
help='Trigger replenishment for scrapped products'
string='Replenish Quantities'
state
Selection
default='draft'
readonly=True
string='Status'
tracking=True
args: [('draft', 'Draft'), ('done', 'Done')]
tracking
Selection
readonly=True
related='product_id.tracking'
string='Product Tracking'
action_get_stock_move_lines(self)
action_get_stock_picking(self)
action_validate(self)
check_available_qty(self)
do_replenish(self, values=False)
do_scrap(self)
color
Char
default='#3C3C3C'
string='Color'
name
Char
required=True
string='Name'
translate=True
sequence
Integer
default=10
No public methods.
allow_new_product
Selection
default='mixed'
required=True
args: [('empty', 'If the location is empty'), ('same', 'If all products are same'), ('mixed', 'Allow mixed products')]
capacity_ids
One2many → stock.storage.category.capacity
copy=True
args: 'stock.storage.category.capacity', 'storage_category_id'
company_id
Many2one → res.company
location_ids
One2many → stock.location
max_weight
Float
digits='Stock Weight'
args: 'Max Weight'
name
Char
required=True
args: 'Storage Category'
package_capacity_ids
One2many → stock.storage.category.capacity
compute='_compute_storage_capacity_ids'
inverse='_set_storage_capacity_ids'
args: 'stock.storage.category.capacity'
product_capacity_ids
One2many → stock.storage.category.capacity
compute='_compute_storage_capacity_ids'
inverse='_set_storage_capacity_ids'
args: 'stock.storage.category.capacity'
weight_uom_name
Char
compute='_compute_weight_uom_name'
string='Weight unit'
copy_data(self, default=None)
company_id
Many2one → res.company
related='storage_category_id.company_id'
args: 'res.company', 'Company'
package_type_id
Many2one → stock.package.type
check_company=True
index='btree_not_null'
ondelete='cascade'
args: 'stock.package.type', 'Package Type'
product_id
Many2one → product.product
check_company=True
domain="[('product_tmpl_id', '=', context.get('active_id', False))] if context.get('active_model') == 'product.template' else [('id', '=', context.get('default_product_id', False))] if context.get('default_product_id') else [('is_storable', '=', True)]"
index='btree_not_null'
ondelete='cascade'
args: 'product.product', 'Product'
product_uom_id
Many2one
related='product_id.uom_id'
quantity
Float
required=True
args: 'Quantity'
storage_category_id
Many2one → stock.storage.category
index=True
ondelete='cascade'
required=True
args: 'stock.storage.category'
No public methods.
No new fields.
Public methods (4)get_lines(self, line_id=False, **kw)
get_main_lines(self, given_context=None)
get_pdf(self, line_data=None)
get_pdf_lines(self, line_data=[])
active
Boolean
default=True
args: 'Active'
code
Char
help='Short name used to identify your warehouse'
required=True
size=5
args: 'Short Name'
company_id
Many2one → res.company
default=<expr>
help='The company is automatically set from your user preferences.'
readonly=True
required=True
args: 'res.company', 'Company'
delivery_route_id
Many2one → stock.route
copy=False
ondelete='restrict'
args: 'stock.route', 'Delivery Route'
delivery_steps
Selection
default='ship_only'
help='Default outgoing route to follow'
required=True
args: [('ship_only', 'Deliver (1 step)'), ('pick_ship', 'Pick then Deliver (2 steps)'), ('pick_pack_ship', 'Pick, Pack, then Deliver (3 steps)')], 'Outgoing Shipments'
in_type_id
Many2one → stock.picking.type
check_company=True
copy=False
args: 'stock.picking.type', 'In Type'
int_type_id
Many2one → stock.picking.type
check_company=True
copy=False
args: 'stock.picking.type', 'Internal Type'
lot_stock_id
Many2one → stock.location
check_company=True
domain="[('usage', '=', 'internal'), ('company_id', '=', company_id)]"
required=True
args: 'stock.location', 'Location Stock'
mto_pull_id
Many2one → stock.rule
copy=False
args: 'stock.rule', 'MTO rule'
name
Char
default=_default_name
required=True
args: 'Warehouse'
out_type_id
Many2one → stock.picking.type
check_company=True
copy=False
args: 'stock.picking.type', 'Out Type'
pack_type_id
Many2one → stock.picking.type
check_company=True
copy=False
args: 'stock.picking.type', 'Pack Type'
partner_id
Many2one → res.partner
check_company=True
default=<expr>
args: 'res.partner', 'Address'
pick_type_id
Many2one → stock.picking.type
check_company=True
copy=False
args: 'stock.picking.type', 'Pick Type'
qc_type_id
Many2one → stock.picking.type
check_company=True
copy=False
args: 'stock.picking.type', 'Quality Control Type'
reception_route_id
Many2one → stock.route
copy=False
ondelete='restrict'
args: 'stock.route', 'Receipt Route'
reception_steps
Selection
default='one_step'
help='Default incoming route to follow'
required=True
args: [('one_step', 'Receive and Store (1 step)'), ('two_steps', 'Receive then Store (2 steps)'), ('three_steps', 'Receive, Quality Control, then Store (3 steps)')], 'Incoming Shipments'
resupply_route_ids
One2many → stock.route
copy=False
help='Routes will be created for these resupply warehouses and you can select them on products and product categories'
args: 'stock.route', 'supplied_wh_id', 'Resupply Routes'
resupply_wh_ids
Many2many → stock.warehouse
help='Routes will be created automatically to resupply this warehouse from the warehouses ticked'
args: 'stock.warehouse', 'stock_wh_resupply_table', 'supplied_wh_id', 'supplier_wh_id', 'Resupply From'
route_ids
Many2many → stock.route
check_company=True
copy=False
domain="[('warehouse_selectable', '=', True), '|', ('company_id', '=', False), ('company_id', '=', company_id)]"
help='Defaults routes through the warehouse'
args: 'stock.route', 'stock_route_warehouse', 'warehouse_id', 'route_id', 'Routes'
sequence
Integer
default=10
help='Gives the sequence of this line when displaying the warehouses.'
store_type_id
Many2one → stock.picking.type
check_company=True
copy=False
args: 'stock.picking.type', 'Storage Type'
view_location_id
Many2one → stock.location
check_company=True
domain="[('usage', '=', 'view'), ('company_id', '=', company_id)]"
index=True
required=True
args: 'stock.location', 'View Location'
wh_input_stock_loc_id
Many2one → stock.location
check_company=True
args: 'stock.location', 'Input Location'
wh_output_stock_loc_id
Many2one → stock.location
check_company=True
args: 'stock.location', 'Output Location'
wh_pack_stock_loc_id
Many2one → stock.location
check_company=True
args: 'stock.location', 'Packing Location'
wh_qc_stock_loc_id
Many2one → stock.location
check_company=True
args: 'stock.location', 'Quality Control Location'
xdock_type_id
Many2one → stock.picking.type
check_company=True
copy=False
args: 'stock.picking.type', 'Cross Dock Type'
action_view_all_routes(self)
copy_data(self, default=None)
create(self, vals_list)
create_resupply_routes(self, supplier_warehouses)
get_current_warehouses(self)
get_rules_dict(self)
unlink(self)
write(self, vals)
active
Boolean
default=True
help='If the active field is set to False, it will allow you to hide the orderpoint without removing it.'
args: 'Active'
allowed_location_ids
One2many → stock.location
comodel_name='stock.location'
compute='_compute_allowed_location_ids'
allowed_replenishment_uom_ids
Many2many → uom.uom
compute='_compute_allowed_replenishment_uom_ids'
args: 'uom.uom'
company_id
Many2one → res.company
default=<expr>
index=True
required=True
args: 'res.company', 'Company'
days_to_order
Float
compute='_compute_days_to_order'
help='Numbers of days in advance that replenishments demands are created.'
deadline_date
Date
compute='_compute_deadline_date'
help='Date before which you should order to avoid falling below the minimum. If you have nothing to order while a deadline is found, it may be because a future arrival is expected after the minimum quantity is reached (potential stockout). Check the Forecast Report.'
readonly=True
store=True
args: 'Deadline'
effective_route_id
Many2one → stock.route
compute='_compute_effective_route_id'
help='Either the route set directly or the one computed to be used by this replenishment'
search='_search_effective_route_id'
store=False
args: 'stock.route'
lead_days
Float
compute='_compute_lead_days'
lead_horizon_date
Date
compute='_compute_lead_days'
location_id
Many2one → stock.location
check_company=True
compute='_compute_location_id'
index=True
ondelete='cascade'
precompute=True
readonly=False
required=True
store=True
args: 'stock.location', 'Location'
name
Char
copy=False
default=<expr>
readonly=True
required=True
args: 'Name'
product_category_id
Many2one → product.category
name='Product Category'
related='product_id.categ_id'
args: 'product.category'
product_id
Many2one → product.product
check_company=True
domain="[('product_tmpl_id', '=', context.get('active_id', False))] if context.get('active_model') == 'product.template' else [('id', '=', context.get('default_product_id', False))] if context.get('default_product_id') else [('is_storable', '=', True)]"
index=True
ondelete='cascade'
required=True
args: 'product.product', 'Product'
product_max_qty
Float
compute='_compute_product_max_qty'
default=0.0
digits='Product Unit'
help='Stock level to reach when replenishing.'
readonly=False
required=True
store=True
args: 'Max Quantity'
product_min_qty
Float
default=0.0
digits='Product Unit'
help='The minimum Stock level that will trigger a replenishment.'
required=True
args: 'Min Quantity'
product_tmpl_id
Many2one → product.template
related='product_id.product_tmpl_id'
args: 'product.template'
product_uom
Many2one → uom.uom
related='product_id.uom_id'
args: 'uom.uom', 'Unit'
product_uom_name
Char
readonly=True
related='product_uom.display_name'
string='Product unit of measure label'
qty_forecast
Float
compute='_compute_qty'
digits='Product Unit'
readonly=True
args: 'Forecast'
qty_on_hand
Float
compute='_compute_qty'
digits='Product Unit'
readonly=True
args: 'On Hand'
qty_to_order
Float
compute='_compute_qty_to_order'
digits='Product Unit'
inverse='_inverse_qty_to_order'
search='_search_qty_to_order'
args: 'To Order'
qty_to_order_computed
Float
compute='_compute_qty_to_order_computed'
digits='Product Unit'
store=True
args: 'To Order Computed'
qty_to_order_manual
Float
digits='Product Unit'
args: 'To Order Manual'
replenishment_uom_id
Many2one → uom.uom
domain="[('id', 'in', allowed_replenishment_uom_ids)]"
help='The procurement quantity will be rounded up to a multiple of this unit/packaging. If it is not set, it is not rounded.'
args: 'uom.uom', 'Multiple'
replenishment_uom_id_placeholder
Char
compute='_compute_replenishment_uom_id_placeholder'
route_id
Many2one → stock.route
domain="['|', ('product_selectable', '=', True), ('rule_ids.action', 'in', ['buy', 'manufacture'])]"
inverse='_inverse_route_id'
string='Route'
args: 'stock.route'
route_id_placeholder
Char
compute='_compute_route_id_placeholder'
rule_ids
Many2many → stock.rule
compute='_compute_rules'
string='Rules used'
args: 'stock.rule'
show_supply_warning
Boolean
compute='_compute_show_supply_warning'
snoozed_until
Date
help='Hidden until next scheduler.'
args: 'Snoozed'
trigger
Selection
default='auto'
required=True
string='Trigger'
args: [('auto', 'Auto'), ('manual', 'Manual')]
unwanted_replenish
Boolean
compute='_compute_unwanted_replenish'
args: 'Unwanted Replenish'
warehouse_id
Many2one → stock.warehouse
check_company=True
compute='_compute_warehouse_id'
index=True
ondelete='cascade'
precompute=True
readonly=False
required=True
store=True
args: 'stock.warehouse', 'Warehouse'
action_open_orderpoints(self)
action_product_forecast_report(self)
action_remove_manual_qty_to_order(self)
action_replenish(self, force_to_max=False)
action_replenish_auto(self)
action_stock_replenishment_info(self)
create(self, vals_list)
get_horizon_days(self)
write(self, vals)
location_id
Many2one → stock.location
domain="[('usage', '=', 'internal')]"
required=True
args: 'stock.location', 'Location'
product_id
Many2one → product.product
required=True
args: 'product.product', 'Product'
product_uom_name
Char
required=True
args: 'Unit'
quant_ids
Many2many → stock.quant
compute='_compute_quant_ids'
args: 'stock.quant'
quantity
Float
required=True
string='Quantity'
action_done(self)
scrap_id
Many2one → stock.scrap
action_cancel(self)
action_done(self)
package_type_id
Many2one → stock.package.type
string='Package Type'
args: 'stock.package.type'
route_ids
Many2many
help='Routes propagated from the package type'
related='package_type_id.route_ids'
string='Routes'
write(self, vals)
| XML ID | Name | Model | Type | Status |
|---|---|---|---|---|
duplicated_sn_warning |
stock.quant.duplicated.sn.warning | stock.quant | form | New |
exception_on_picking |
exception_on_picking | ir.ui.view | qweb | New |
help_message_template |
Help Message | ir.ui.view | qweb | New |
inventory_warning_reset_view |
inventory.reset.warning.view | stock.inventory.warning | form | New |
inventory_warning_set_view |
inventory.set.warning.view | stock.inventory.warning | form | New |
label_lot_template_view |
label_lot_template_view | ir.ui.view | qweb | New |
label_package_template_view |
label_package_template_view | ir.ui.view | qweb | New |
label_picking_type_view |
label_picking_type_view | ir.ui.view | qweb | New |
label_product_packaging_view |
label_product_packaging_view | ir.ui.view | qweb | New |
label_product_product_view |
label_product_product_view | ir.ui.view | qweb | New |
label_transfer_template_view_pdf |
label_transfer_template_view_pdf | ir.ui.view | qweb | New |
label_transfer_template_view_zpl |
label_transfer_template_view_zpl | ir.ui.view | qweb | New |
lot_label_layout_form_picking |
lot.label.layout.form | lot.label.layout | form | New |
message_body |
message_body | ir.ui.view | qweb | New |
message_head |
message_head | ir.ui.view | qweb | New |
package_level_form_edit_view |
Package Level | stock.package_level | xpath | Inherits stock.package_level_form_view |
package_level_form_view |
Package Level | stock.package_level | form | New |
package_level_tree_view_picking |
Package Level List Picking | stock.package_level | list | New |
picking_label_type_form |
picking.label.type.form | picking.label.type | form | New |
procurement_group_form_view |
procurement.group.form | procurement.group | form | New |
product_category_form_view_inherit |
product.category.form | product.category | div | Inherits product.product_category_form_view |
product_form_view_procurement_button |
product.product.procurement | product.product | data | Inherits product.product_normal_form_view |
product_label_layout_form_picking |
product.label.layout.form | product.label.layout | xpath | Inherits product.product_label_layout_form |
product_packaging_form_view |
product.packaging.form.view.stock | product.packaging | xpath | Inherits product.product_packaging_form_view |
product_packaging_tree_view |
product.packaging.list.view.stock | product.packaging | xpath | Inherits product.product_packaging_tree_view |
product_product_stock_tree |
product.product.stock.list | product.product | list | New |
product_product_view_form_easy_inherit_stock |
product.product.view.form.easy.inherit.stock | product.product | xpath | Inherits product.product_variant_easy_edit_view |
product_search_form_view_stock |
product.search.stock.form | product.product | filter | Inherits product.product_search_form_view |
product_search_form_view_stock_report |
product.product.search.stock.form.stock.report | product.product | filter | Inherits stock_product_search_form_view |
product_template_form_view_procurement_button |
product.template_procurement | product.template | data | Inherits product.product_template_only_form_view |
product_template_kanban_stock_view |
Product Template Kanban Stock | product.template | xpath | Inherits product.product_template_kanban_view |
product_template_search_form_view_stock |
product.template.search.stock.form | product.template | xpath | Inherits product.product_template_search_view |
product_template_search_view_inherit_stock |
product.template.search.inherit.stock | product.template | filter | Inherits product.product_template_search_view |
product_view_kanban_catalog |
product.view.kanban.catalog.inherit.stock | product.product | field | Inherits product.product_view_kanban_catalog |
quant_package_search_view |
stock.quant.package.search | stock.quant.package | search | New |
quant_search_view |
stock.quant.search | stock.quant | search | New |
replenishment_option_tree_view |
stock.replenishment.option.list.view | stock.replenishment.option | list | New |
replenishment_option_warning_view |
stock.replenishment.warning.view | stock.replenishment.option | form | New |
report_delivery_document |
report_delivery_document | ir.ui.view | qweb | New |
report_deliveryslip |
report_deliveryslip | ir.ui.view | qweb | New |
report_generic_barcode |
report_generic_barcode | ir.ui.view | qweb | New |
report_inventory |
report_inventory | ir.ui.view | qweb | New |
report_location_barcode |
report_location_barcode | ir.ui.view | qweb | New |
report_lot_label |
report_lot_label | ir.ui.view | qweb | New |
report_package_barcode |
report_package_barcode | ir.ui.view | qweb | New |
report_package_barcode_small |
report_package_barcode_small | ir.ui.view | qweb | New |
report_picking |
report_picking | ir.ui.view | qweb | New |
report_picking_packages |
report_picking_packages | ir.ui.view | qweb | New |
report_picking_type_label |
report_picking_type_label | ir.ui.view | qweb | New |
report_reception |
report_reception | ir.ui.view | qweb | New |
report_reception_body |
report_reception_body | ir.ui.view | qweb | New |
report_reception_report_label |
report_reception_report_label | ir.ui.view | qweb | New |
report_stock_body_print |
report_stock_body_print | ir.ui.view | qweb | New |
report_stock_inventory_print |
report_stock_inventory_print | ir.ui.view | qweb | New |
report_stock_rule |
report_stock_rule | ir.ui.view | qweb | New |
report_stock_rule_left_arrow |
report_stock_rule_left_arrow | ir.ui.view | qweb | New |
report_stock_rule_line |
report_stock_rule_line | ir.ui.view | qweb | New |
report_stock_rule_right_arrow |
report_stock_rule_right_arrow | ir.ui.view | qweb | New |
report_stock_rule_suspension_points |
report_stock_rule_suspension_points | ir.ui.view | qweb | New |
report_stock_rule_vertical_bar |
report_stock_rule_vertical_bar | ir.ui.view | qweb | New |
res_config_settings_view_form |
res.config.settings.view.form.inherit.stock | res.config.settings | xpath | Inherits base.res_config_settings_view_form |
search_customer_lot_filter |
Customer Lots Filter | stock.lot.report | search | New |
search_product_lot_filter |
Production Lots Filter | stock.lot | search | New |
stock.report_return_slip |
stock.report_return_slip | ir.ui.view | qweb | New |
stock_inventory_adjustment_name_form_view |
stock.inventory.adjustment.name.form.view | stock.inventory.adjustment.name | form | New |
stock_inventory_conflict_form_view |
stock.inventory.conflict.form.view | stock.inventory.conflict | form | New |
stock_inventory_request_count_form_view |
stock.request.count.form.view | stock.request.count | form | New |
stock_location_route_form_view |
stock.location.route.form | stock.route | form | New |
stock_location_route_tree |
stock.location.route.list | stock.route | list | New |
stock_location_route_view_search |
stock.location.route.search | stock.route | search | New |
stock_location_view_form_editable |
stock.location.form.editable | stock.location | xpath | Inherits stock.view_location_form |
stock_location_view_tree2_editable |
stock.location.list2.editable | stock.location | xpath | Inherits stock.view_location_tree2 |
stock_lot_customer_report_view_list |
stock.lot.report.view.list | stock.lot.report | list | New |
stock_move_line_view_search |
stock.move.line.search | stock.move.line | search | New |
stock_package_destination_form_view |
stock.package.destination.view | stock.package.destination | form | New |
stock_package_type_form |
stock.package.type.form | stock.package.type | form | New |
stock_package_type_tree |
stock.package.type.list | stock.package.type | list | New |
stock_picking_calendar |
stock.picking.calendar | stock.picking | calendar | New |
stock_picking_kanban |
stock.picking.kanban | stock.picking | kanban | New |
stock_picking_type_kanban |
stock.picking.type.kanban | stock.picking.type | kanban | New |
stock_picking_view_activity |
stock.picking.view.activity | stock.picking | activity | New |
stock_product_search_form_view |
product.product.search.stock.form | product.product | xpath | Inherits product.product_search_form_view |
stock_putaway_list |
stock.putaway.rule.list | stock.putaway.rule | list | New |
stock_quant_relocate_view_form |
Stock Relocation | stock.quant.relocate | form | New |
stock_quant_view_graph |
stock.quant.graph | stock.quant | graph | New |
stock_reorder_report_search |
stock.warehouse.orderpoint.reorder.search | stock.warehouse.orderpoint | search | New |
stock_report_delivery_aggregated_move_lines |
stock_report_delivery_aggregated_move_lines | ir.ui.view | qweb | New |
stock_report_delivery_has_serial_move_line |
stock_report_delivery_has_serial_move_line | ir.ui.view | qweb | New |
stock_report_delivery_no_package_section_line |
stock_report_delivery_no_package_section_line | ir.ui.view | qweb | New |
stock_report_delivery_package_section_line |
stock_report_delivery_package_section_line | ir.ui.view | qweb | New |
stock_report_view_graph |
stock_report_view_graph | report.stock.quantity | graph | New |
stock_scrap_form_view |
stock.scrap.form | stock.scrap | form | New |
stock_scrap_form_view2 |
stock.scrap.form2 | stock.scrap | form | New |
stock_scrap_search_view |
stock.scrap.search | stock.scrap | search | New |
stock_scrap_tree_view |
stock.scrap.list | stock.scrap | list | New |
stock_scrap_view_kanban |
stock.scrap.kanban | stock.scrap | kanban | New |
stock_storage_category_capacity_tree |
stock.storage.category.capacity.list | stock.storage.category.capacity | list | New |
stock_storage_category_form |
stock.storage.category.form | stock.storage.category | form | New |
stock_storage_category_tree |
stock.storage.category.list | stock.storage.category | list | New |
stock_warehouse_view_search |
stock.warehouse.search | stock.warehouse | search | New |
stock_warn_insufficient_qty_form_view |
stock.warn.insufficient.qty | stock.warn.insufficient.qty | form | New |
stock_warn_insufficient_qty_scrap_form_view |
stock.warn.insufficient.qty.scrap | stock.warn.insufficient.qty.scrap | xpath | Inherits stock.stock_warn_insufficient_qty_form_view |
track_move_template |
track_move_template | ir.ui.view | qweb | New |
view_backorder_confirmation |
stock_backorder_confirmation | stock.backorder.confirmation | form | New |
view_change_product_quantity |
Change Product Quantity | stock.change.product.qty | form | New |
view_location_form |
stock.location.form | stock.location | form | New |
view_location_search |
stock.location.search | stock.location | search | New |
view_location_tree2 |
stock.location.list | stock.location | list | New |
view_move_form |
stock.move.form | stock.move | form | New |
view_move_graph |
stock.move.graph | stock.move | graph | New |
view_move_kandan |
stock.move.kanban | stock.move | kanban | New |
view_move_line_form |
stock.move.line.form | stock.move.line | form | New |
view_move_line_mobile_form |
stock.move.line.mobile.form | stock.move.line | xpath | Inherits stock.view_move_line_form |
view_move_line_tree |
stock.move.line.list | stock.move.line | list | New |
view_move_line_tree_detailed |
stock.move.line.list.detailed | stock.move.line | list | New |
view_move_pivot |
stock.move.pivot | stock.move | pivot | New |
view_move_search |
stock.move.search | stock.move | search | New |
view_move_tree |
stock.move.list | stock.move | list | New |
view_move_tree_receipt_picking |
stock.move.tree2 | stock.move | list | New |
view_partner_stock_form |
res.partner.stock.property.form.inherit | res.partner | xpath | Inherits mail.res_partner_view_form_inherit_mail |
view_partner_stock_warnings_form |
res.partner.stock.warning | res.partner | page | Inherits base.view_partner_form |
view_picking_form |
stock.picking.form | stock.picking | form | New |
view_picking_internal_search |
stock.picking.internal.search | stock.picking | search | New |
view_picking_move_tree |
stock.picking.move.list | stock.move | list | New |
view_picking_type_form |
Operation Types | stock.picking.type | form | New |
view_picking_type_tree |
Operation types | stock.picking.type | list | New |
view_pickingtype_filter |
stock.picking.type.filter | stock.picking.type | search | New |
view_product_replenish |
Replenish | product.replenish | form | New |
view_production_lot_form |
stock.production.lot.form | stock.lot | form | New |
view_production_lot_kanban |
stock.production.lot.kanban | stock.lot | kanban | New |
view_production_lot_tree |
stock.production.lot.list | stock.lot | list | New |
view_putaway_search |
stock.putaway.rule.search | stock.putaway.rule | search | New |
view_quant_package_form |
stock.quant.package.form | stock.quant.package | form | New |
view_quant_package_kanban |
stock.quant.package.kanban | stock.quant.package | kanban | New |
view_quant_package_tree |
stock.quant.package.list | stock.quant.package | list | New |
view_removal |
product.removal.form | product.removal | form | New |
view_route_rule_form |
stock.rule.form | stock.rule | xpath | Inherits stock.view_stock_rule_form |
view_stock_move_line_detailed_operation_tree |
stock.move.line.operations.list | stock.move.line | list | New |
view_stock_move_line_kanban |
stock.move.line.kanban | stock.move.line | kanban | New |
view_stock_move_line_operation_tree |
stock.move.line.operations.list | stock.move.line | list | New |
view_stock_move_line_pivot |
stock.move.line.pivot | stock.move.line | pivot | New |
view_stock_move_operations |
stock.move.operations.form | stock.move | form | New |
view_stock_orderpoint_snooze |
Stock Orderpoint Snooze | stock.orderpoint.snooze | form | New |
view_stock_product_template_tree |
product.template.stock.list.inherit | product.template | field | Inherits product.product_template_tree_view |
view_stock_product_tree |
product.stock.list.inherit | product.product | field | Inherits product.product_product_tree_view |
view_stock_quant_form |
view.stock.quant.form | stock.quant | form | New |
view_stock_quant_form_editable |
stock.quant.form.editable | stock.quant | form | New |
view_stock_quant_pivot |
stock.quant.pivot | stock.quant | pivot | New |
view_stock_quant_tree |
stock.quant.list | stock.quant | xpath | Inherits stock.view_stock_quant_tree_simple |
view_stock_quant_tree_editable |
stock.quant.list.editable | stock.quant | list | New |
view_stock_quant_tree_inventory_editable |
stock.quant.inventory.list.editable | stock.quant | list | New |
view_stock_quant_tree_simple |
stock.quant.list | stock.quant | list | New |
view_stock_quantity_history |
Inventory Report at Date | stock.quantity.history | form | New |
view_stock_replenishment_info |
Stock Replenishment Information | stock.replenishment.info | form | New |
view_stock_return_picking_form |
Return lines | stock.return.picking | form | New |
view_stock_rule_filter |
stock.rule.select | stock.rule | search | New |
view_stock_rule_form |
stock.rule.form | stock.rule | form | New |
view_stock_rule_tree |
stock.rule.list | stock.rule | list | New |
view_stock_rules_report |
Stock Rules Report | stock.rules.report | form | New |
view_stock_track_confirmation |
stock.track.confirmation.view.form | stock.track.confirmation | form | New |
view_stock_warehouse_orderpoint_kanban |
stock.warehouse.orderpoint.kanban | stock.warehouse.orderpoint | kanban | New |
view_template_property_form |
product.template.stock.property.form.inherit | product.template | xpath | Inherits product.product_template_form_view |
view_warehouse |
stock.warehouse | stock.warehouse | form | New |
view_warehouse_orderpoint_form |
stock.warehouse.orderpoint.form | stock.warehouse.orderpoint | form | New |
view_warehouse_orderpoint_tree_editable |
stock.warehouse.orderpoint.list.editable | stock.warehouse.orderpoint | list | New |
view_warehouse_tree |
stock.warehouse.list | stock.warehouse | list | New |
vpicktree |
stock.picking.list | stock.picking | list | New |
warehouse_orderpoint_search |
stock.warehouse.orderpoint.search | stock.warehouse.orderpoint | search | New |
type
Selection
ondelete={'weight': 'set default', 'location': 'set default', 'lot': 'set default', 'package': 'set default'}
selection_add=[('weight', 'Weighted Product'), ('location', 'Location'), ('lot', 'Lot'), ('package', 'Package')]
No public methods.
No new fields.
Public methods (0)No public methods.
label_quantity
Selection
default='lots'
help="If the UoM of a lot is not 'units', the lot will be considered as a unit and only one label will be printed for this lot."
required=True
string='Quantity to print'
args: [('lots', 'One per lot/SN'), ('units', 'One per unit')]
move_line_ids
Many2many → stock.move.line
print_format
Selection
default='4x12'
required=True
string='Format'
args: [('4x12', '4 x 12'), ('zpl', 'ZPL Labels')]
process(self)
label_type
Selection
default='products'
required=True
string='Labels to print'
args: [('products', 'Product Labels'), ('lots', 'Lot/SN Labels')]
picking_ids
Many2many → stock.picking
process(self)
move_type
Selection
string='Delivery Type'
args: [('direct', 'Partial'), ('one', 'All at once')]
name
Char
default=<expr>
required=True
args: 'Reference'
partner_id
Many2one → res.partner
stock_move_ids
One2many → stock.move
string='Related Stock Moves'
args: 'stock.move', 'group_id'
run(self, procurements, raise_user_error=True)
run_scheduler(self, use_new_cursor=False, company_id=False)
filter_for_stock_putaway_rule
Boolean
search='_search_filter_for_stock_putaway_rule'
store=False
args: 'stock.putaway.rule'
packaging_reserve_method
Selection
default='partial'
help='Reserve Only Full Packagings: will not reserve partial packagings. If customer orders 2 pallets of 1000 units each and you only have 1600 in stock, then only 1000 will be reserved\nReserve Partial Packagings: allow reserving partial packagings. If customer orders 2 pallets of 1000 units each and you only have 1600 in stock, then 1600 will be reserved'
string='Reserve Packagings'
args: [('full', 'Reserve Only Full Packagings'), ('partial', 'Reserve Partial Packagings')]
parent_route_ids
Many2many → stock.route
compute='_compute_parent_route_ids'
string='Parent Routes'
args: 'stock.route'
putaway_rule_ids
One2many → stock.putaway.rule
removal_strategy_id
Many2one → product.removal
help='Set a specific removal strategy that will be used regardless of the source location for this product category.\n\nFIFO: products/lots that were stocked first will be moved out first.\nLIFO: products/lots that were stocked last will be moved out first.\nClosest location: products/lots closest to the target location will be moved out first.\nFEFO: products/lots with the closest removal date will be moved out first (the availability of this method depends on the "Expiration Dates" setting).\nLeast Packages: FIFO but with the least number of packages possible when there are several packages containing the same product.'
tracking=True
args: 'product.removal', 'Force Removal Strategy'
route_ids
Many2many → stock.route
domain=[('product_categ_selectable', '=', True)]
args: 'stock.route', 'stock_route_categ', 'categ_id', 'route_id', 'Routes'
total_route_ids
Many2many → stock.route
compute='_compute_total_route_ids'
readonly=True
search='_search_total_route_ids'
string='Total routes'
args: 'stock.route'
No public methods.
move_ids
Many2many → stock.move
move_quantity
Selection
default='custom'
required=True
string='Quantity to print'
args: [('move', 'Operation Quantities'), ('custom', 'Custom')]
print_format
Selection
ondelete={'zpl': 'set default', 'zplxprice': 'set default'}
selection_add=[('zpl', 'ZPL Labels'), ('zplxprice', 'ZPL Labels with price')]
No public methods.
package_type_id
Many2one → stock.package.type
route_ids
Many2many → stock.route
domain=[('packaging_selectable', '=', True)]
help='Depending on the modules installed, this will allow you to define the route of the product in this packaging: whether it will be bought, manufactured, replenished on order, etc.'
args: 'stock.route', 'stock_route_packaging', 'packaging_id', 'route_id', 'Routes'
No public methods.
free_qty
Float
compute='_compute_quantities'
compute_sudo=False
digits='Product Unit of Measure'
help="Forecast quantity (computed as Quantity On Hand - reserved quantity)\nIn a context with a single Stock Location, this includes goods stored in this location, or any of its children.\nIn a context with a single Warehouse, this includes goods stored in the Stock Location of this Warehouse, or any of its children.\nOtherwise, this includes goods stored in any Stock Location with 'internal' type."
search='_search_free_qty'
args: 'Free To Use Quantity '
incoming_qty
Float
compute='_compute_quantities'
compute_sudo=False
digits='Product Unit of Measure'
help="Quantity of planned incoming products.\nIn a context with a single Stock Location, this includes goods arriving to this Location, or any of its children.\nIn a context with a single Warehouse, this includes goods arriving to the Stock Location of this Warehouse, or any of its children.\nOtherwise, this includes goods arriving to any Stock Location with 'internal' type."
search='_search_incoming_qty'
args: 'Incoming'
lot_properties_definition
PropertiesDefinition
nbr_moves_in
Integer
compute='_compute_nbr_moves'
compute_sudo=False
help='Number of incoming stock moves in the past 12 months'
nbr_moves_out
Integer
compute='_compute_nbr_moves'
compute_sudo=False
help='Number of outgoing stock moves in the past 12 months'
nbr_reordering_rules
Integer
compute='_compute_nbr_reordering_rules'
compute_sudo=False
args: 'Reordering Rules'
orderpoint_ids
One2many → stock.warehouse.orderpoint
outgoing_qty
Float
compute='_compute_quantities'
compute_sudo=False
digits='Product Unit of Measure'
help="Quantity of planned outgoing products.\nIn a context with a single Stock Location, this includes goods leaving this Location, or any of its children.\nIn a context with a single Warehouse, this includes goods leaving the Stock Location of this Warehouse, or any of its children.\nOtherwise, this includes goods leaving any Stock Location with 'internal' type."
search='_search_outgoing_qty'
args: 'Outgoing'
putaway_rule_ids
One2many → stock.putaway.rule
qty_available
Float
compute='_compute_quantities'
compute_sudo=False
digits='Product Unit of Measure'
help="Current quantity of products.\nIn a context with a single Stock Location, this includes goods stored at this Location, or any of its children.\nIn a context with a single Warehouse, this includes goods stored in the Stock Location of this Warehouse, or any of its children.\nstored in the Stock Location of the Warehouse of this Shop, or any of its children.\nOtherwise, this includes goods stored in any Stock Location with 'internal' type."
search='_search_qty_available'
args: 'Quantity On Hand'
reordering_max_qty
Float
compute='_compute_nbr_reordering_rules'
compute_sudo=False
reordering_min_qty
Float
compute='_compute_nbr_reordering_rules'
compute_sudo=False
show_forecasted_qty_status_button
Boolean
compute='_compute_show_qty_status_button'
show_on_hand_qty_status_button
Boolean
compute='_compute_show_qty_status_button'
stock_move_ids
One2many → stock.move
stock_quant_ids
One2many → stock.quant
storage_category_capacity_ids
One2many → stock.storage.category.capacity
valid_ean
Boolean
compute='_compute_valid_ean'
args: 'Barcode is valid EAN'
virtual_available
Float
compute='_compute_quantities'
compute_sudo=False
digits='Product Unit of Measure'
help="Forecast quantity (computed as Quantity On Hand - Outgoing + Incoming)\nIn a context with a single Stock Location, this includes goods stored in this location, or any of its children.\nIn a context with a single Warehouse, this includes goods stored in the Stock Location of this Warehouse, or any of its children.\nOtherwise, this includes goods stored in any Stock Location with 'internal' type."
search='_search_virtual_available'
args: 'Forecasted Quantity'
action_open_product_lot(self)
action_open_quants(self)
action_product_forecast_report(self)
action_update_quantity_on_hand(self)
action_view_orderpoints(self)
action_view_related_putaway_rules(self)
action_view_routes(self)
action_view_stock_move_lines(self)
action_view_storage_category_capacity(self)
fields_get(self, allfields=None, attributes=None)
filter_has_routes(self)
get_components(self)
view_header_get(self, view_id, view_type)
write(self, values)
method
Char
help='FIFO, LIFO...'
required=True
translate=True
args: 'Method'
name
Char
required=True
translate=True
args: 'Name'
No public methods.
company_id
Many2one → res.company
date_planned
Datetime
compute='_compute_date_planned'
help='Date at which the replenishment should take place.'
precompute=True
readonly=False
required=True
store=True
args: 'Scheduled Date'
forecast_uom_id
Many2one
related='product_id.uom_id'
forecasted_quantity
Float
compute='_compute_forecasted_quantity'
string='Forecasted Quantity'
product_has_variants
Boolean
default=False
required=True
args: 'Has variants'
product_id
Many2one → product.product
required=True
string='Product'
args: 'product.product'
product_tmpl_id
Many2one → product.template
required=True
string='Product Template'
args: 'product.template'
product_uom_category_id
Many2one → uom.category
readonly=True
related='product_id.uom_id.category_id'
required=True
args: 'uom.category'
product_uom_id
Many2one → uom.uom
required=True
string='Unity of measure'
args: 'uom.uom'
quantity
Float
default=1
required=True
args: 'Quantity'
warehouse_id
Many2one → stock.warehouse
check_company=True
required=True
string='Warehouse'
args: 'stock.warehouse'
default_get(self, fields)
launch_replenishment(self)
description_picking
Text
translate=True
args: 'Description on Picking'
description_pickingin
Text
translate=True
args: 'Description on Receptions'
description_pickingout
Text
translate=True
args: 'Description on Delivery Orders'
has_available_route_ids
Boolean
compute='_compute_has_available_route_ids'
default=<expr>
args: 'Routes can be selected on this product'
incoming_qty
Float
compute='_compute_quantities'
compute_sudo=False
digits='Product Unit of Measure'
search='_search_incoming_qty'
args: 'Incoming'
is_storable
Boolean
compute='compute_is_storable'
default=False
help='A storable product is a product for which you manage stock.'
precompute=True
readonly=False
store=True
args: 'Track Inventory'
location_id
Many2one → stock.location
store=False
args: 'stock.location', 'Location'
nbr_moves_in
Integer
compute='_compute_nbr_moves'
compute_sudo=False
help='Number of incoming stock moves in the past 12 months'
nbr_moves_out
Integer
compute='_compute_nbr_moves'
compute_sudo=False
help='Number of outgoing stock moves in the past 12 months'
nbr_reordering_rules
Integer
compute='_compute_nbr_reordering_rules'
compute_sudo=False
args: 'Reordering Rules'
outgoing_qty
Float
compute='_compute_quantities'
compute_sudo=False
digits='Product Unit of Measure'
search='_search_outgoing_qty'
args: 'Outgoing'
property_stock_inventory
Many2one → stock.location
check_company=True
company_dependent=True
domain="[('usage', '=', 'inventory'), '|', ('company_id', '=', False), ('company_id', '=', allowed_company_ids[0])]"
help='This stock location will be used, instead of the default one, as the source location for stock moves generated when you do an inventory.'
args: 'stock.location', 'Inventory Location'
property_stock_production
Many2one → stock.location
check_company=True
company_dependent=True
domain="[('usage', '=', 'production'), '|', ('company_id', '=', False), ('company_id', '=', allowed_company_ids[0])]"
help='This stock location will be used, instead of the default one, as the source location for stock moves generated by manufacturing orders.'
args: 'stock.location', 'Production Location'
qty_available
Float
compute='_compute_quantities'
compute_sudo=False
digits='Product Unit of Measure'
search='_search_qty_available'
args: 'Quantity On Hand'
reordering_max_qty
Float
compute='_compute_nbr_reordering_rules'
compute_sudo=False
reordering_min_qty
Float
compute='_compute_nbr_reordering_rules'
compute_sudo=False
responsible_id
Many2one → res.users
check_company=True
company_dependent=True
default=<expr>
help='This user will be responsible of the next activities related to logistic operations for this product.'
string='Responsible'
args: 'res.users'
route_from_categ_ids
Many2many
related='categ_id.total_route_ids'
related_sudo=False
string='Category Routes'
route_ids
Many2many → stock.route
depends_context=['company', 'allowed_companies']
domain=[('product_selectable', '=', True)]
help='Depending on the modules installed, this will allow you to define the route of the product: whether it will be bought, manufactured, replenished on order, etc.'
args: 'stock.route', 'stock_route_product', 'product_id', 'route_id', 'Routes'
sale_delay
Integer
default=0
help="Delivery lead time, in days. It's the number of days, promised to the customer, between the confirmation of the sales order and the delivery."
args: 'Customer Lead Time'
show_forecasted_qty_status_button
Boolean
compute='_compute_show_qty_status_button'
show_on_hand_qty_status_button
Boolean
compute='_compute_show_qty_status_button'
tracking
Selection
compute='_compute_tracking'
default='none'
help='Ensure the traceability of a storable product in your warehouse.'
precompute=True
readonly=False
required=True
store=True
string='Tracking'
args: [('serial', 'By Unique Serial Number'), ('lot', 'By Lots'), ('none', 'By Quantity')]
virtual_available
Float
compute='_compute_quantities'
compute_sudo=False
digits='Product Unit of Measure'
search='_search_virtual_available'
args: 'Forecasted Quantity'
warehouse_id
Many2one → stock.warehouse
store=False
args: 'stock.warehouse', 'Warehouse'
action_open_product_lot(self)
action_open_quants(self)
action_open_routes_diagram(self)
action_product_tmpl_forecast_report(self)
action_update_quantity_on_hand(self)
action_view_orderpoints(self)
action_view_related_putaway_rules(self)
action_view_stock_move_lines(self)
action_view_storage_category_capacity(self)
compute_is_storable(self)
copy(self, default=None)
write(self, vals)
No new fields.
Public methods (0)No public methods.
No new fields.
Public methods (0)No public methods.
company_id
Many2one → res.company
readonly=True
args: 'res.company'
date
Date
readonly=True
string='Date'
product_id
Many2one → product.product
readonly=True
string='Product'
args: 'product.product'
product_qty
Float
readonly=True
string='Quantity'
product_tmpl_id
Many2one → product.template
readonly=True
args: 'product.template'
state
Selection
readonly=True
string='State'
args: [('forecast', 'Forecasted Stock'), ('in', 'Forecasted Receipts'), ('out', 'Forecasted Deliveries')]
warehouse_id
Many2one → stock.warehouse
readonly=True
args: 'stock.warehouse'
init(self)
No new fields.
Public methods (3)action_assign(self, move_ids, qtys, in_ids)
action_unassign(self, move_id, qty, in_ids)
get_report_data(self, docids, data)
No new fields.
Public methods (0)No public methods.
annual_inventory_day
Integer
default=31
help='Day of the month when the annual inventory should occur. If zero or negative, then the first day of the month will be selected instead.\n If greater than the last day of a month, then the last day of the month will be selected instead.'
string='Day of the month'
annual_inventory_month
Selection
default='12'
help='Annual inventory month for products not in a location with a cyclic inventory date. Set to no month if no automatic annual inventory.'
string='Annual Inventory Month'
args: [('1', 'January'), ('2', 'February'), ('3', 'March'), ('4', 'April'), ('5', 'May'), ('6', 'June'), ('7', 'July'), ('8', 'August'), ('9', 'September'), ('10', 'October'), ('11', 'November'), ('12', 'December')]
internal_transit_location_id
Many2one → stock.location
check_company=True
ondelete='restrict'
args: 'stock.location', 'Internal Transit Location'
stock_mail_confirmation_template_id
Many2one → mail.template
default=_default_confirmation_mail_template
domain="[('model', '=', 'stock.picking')]"
help='Email sent to the customer once the order is done.'
string='Email Template confirmation picking'
args: 'mail.template'
stock_move_email_validation
Boolean
default=False
args: 'Email Confirmation picking'
create(self, vals_list)
create_missing_inventory_loss_location(self)
create_missing_production_location(self)
create_missing_scrap_location(self)
create_missing_scrap_sequence(self)
create_missing_transit_location(self)
create_missing_warehouse(self)
annual_inventory_day
Integer
readonly=False
related='company_id.annual_inventory_day'
annual_inventory_month
Selection
readonly=False
related='company_id.annual_inventory_month'
barcode_separator
Char
config_parameter='stock.barcode_separator'
help='Character(s) used to separate data contained within an aggregate barcode (i.e. a barcode containing multiple barcode encodings)'
args: 'Separator'
group_lot_on_delivery_slip
Boolean
group='base.group_user,base.group_portal'
implied_group='stock.group_lot_on_delivery_slip'
args: 'Display Lots & Serial Numbers on Delivery Slips'
group_stock_adv_location
Boolean
help='Add and customize route operations to process product moves in your warehouse(s): e.g. unload > quality control > stock for incoming products, pick > pack > ship for outgoing products. \n You can also set putaway strategies on warehouse locations in order to send incoming products into specific child locations straight away (e.g. specific bins, racks).'
implied_group='stock.group_adv_location'
args: 'Multi-Step Routes'
group_stock_lot_print_gs1
Boolean
implied_group='stock.group_stock_lot_print_gs1'
args: 'Print GS1 Barcodes for Lots & Serial Numbers'
group_stock_multi_locations
Boolean
help='Store products in specific locations of your warehouse (e.g. bins, racks) and to track inventory accordingly.'
implied_group='stock.group_stock_multi_locations'
args: 'Storage Locations'
group_stock_production_lot
Boolean
group='base.group_user,base.group_portal'
implied_group='stock.group_production_lot'
args: 'Lots & Serial Numbers'
group_stock_reception_report
Boolean
implied_group='stock.group_reception_report'
args: 'Reception Report'
group_stock_sign_delivery
Boolean
implied_group='stock.group_stock_sign_delivery'
args: 'Signature'
group_stock_tracking_lot
Boolean
implied_group='stock.group_tracking_lot'
args: 'Packages'
group_stock_tracking_owner
Boolean
implied_group='stock.group_tracking_owner'
args: 'Consignment'
group_warning_stock
Boolean
implied_group='stock.group_warning_stock'
args: 'Warnings for Stock'
module_delivery
Boolean
module_delivery_bpost
Boolean
module_delivery_dhl
Boolean
module_delivery_easypost
Boolean
module_delivery_fedex
Boolean
module_delivery_sendcloud
Boolean
module_delivery_shiprocket
Boolean
module_delivery_starshipit
Boolean
module_delivery_ups
Boolean
module_delivery_usps
Boolean
module_product_expiry
Boolean
help='Track following dates on lots & serial numbers: best before, removal, end of life, alert. \n Such dates are set automatically at lot/serial number creation based on values set on the product (in days).'
args: 'Expiration Dates'
module_quality_control
Boolean
module_quality_control_worksheet
Boolean
module_stock_barcode
Boolean
module_stock_barcode_barcodelookup
Boolean
module_stock_dropshipping
Boolean
module_stock_fleet
Boolean
module_stock_picking_batch
Boolean
module_stock_sms
Boolean
stock_move_email_validation
Boolean
readonly=False
related='company_id.stock_move_email_validation'
onchange_adv_location(self)
set_values(self)
picking_warn
Selection
default='no-message'
help=WARNING_HELP
args: WARNING_MESSAGE, 'Stock Picking'
picking_warn_msg
Text
property_stock_customer
Many2one → stock.location
check_company=True
company_dependent=True
domain="['|', ('company_id', '=', False), ('company_id', '=', allowed_company_ids[0])]"
help='The stock location used as destination when sending goods to this contact.'
string='Customer Location'
args: 'stock.location'
property_stock_supplier
Many2one → stock.location
check_company=True
company_dependent=True
domain="['|', ('company_id', '=', False), ('company_id', '=', allowed_company_ids[0])]"
help='The stock location used as source when receiving goods from this contact.'
string='Vendor Location'
args: 'stock.location'
action_view_stock_lots(self)
No new fields.
Public methods (0)No public methods.
backorder_confirmation_line_ids
One2many → stock.backorder.confirmation.line
string='Backorder Confirmation Lines'
args: 'stock.backorder.confirmation.line', 'backorder_confirmation_id'
pick_ids
Many2many → stock.picking
show_transfers
Boolean
default_get(self, fields)
process(self)
process_cancel_backorder(self)
backorder_confirmation_id
Many2one → stock.backorder.confirmation
picking_id
Many2one → stock.picking
to_backorder
Boolean
No public methods.
new_quantity
Float
default=1
digits='Product Unit of Measure'
help='This quantity is expressed in the Default Unit of Measure of the product.'
required=True
args: 'New Quantity on Hand'
product_id
Many2one → product.product
required=True
args: 'product.product', 'Product'
product_tmpl_id
Many2one → product.template
required=True
args: 'product.template', 'Template'
product_uom_id
Many2one
related='product_tmpl_id.uom_id'
product_variant_count
Integer
related='product_tmpl_id.product_variant_count'
args: 'Variant Count'
change_product_qty(self)
check_new_quantity(self)
No new fields.
Public methods (3)action_reserve_linked_picks(self, move_id)
action_unreserve_linked_picks(self, move_id)
get_report_values(self, docids, data=None)
No new fields.
Public methods (1)get_report_values(self, docids, data=None)
inventory_adjustment_name
Char
default='Quantity Updated'
string='Inventory Reason'
quant_ids
Many2many → stock.quant
action_apply(self)
quant_ids
Many2many → stock.quant
string='Quants'
args: 'stock.quant', 'stock_conflict_quant_rel'
quant_to_fix_ids
Many2many → stock.quant
string='Conflicts'
args: 'stock.quant'
action_keep_counted_quantity(self)
action_keep_difference(self)
quant_ids
Many2many → stock.quant
action_reset(self)
action_set(self)
active
Boolean
default=True
help='By unchecking the active field, you may hide a location without deleting it.'
args: 'Active'
barcode
Char
copy=False
args: 'Barcode'
child_ids
One2many → stock.location
child_internal_location_ids
Many2many → stock.location
compute='_compute_child_internal_location_ids'
help="This location (if it's internal) and all its descendants filtered by type=Internal."
recursive=True
string='Internal locations among descendants'
args: 'stock.location'
comment
Html
company_id
Many2one → res.company
default=<expr>
help='Let this field empty if this location is shared between companies'
index=True
args: 'res.company', 'Company'
complete_name
Char
compute='_compute_complete_name'
recursive=True
store=True
args: 'Full Location Name'
cyclic_inventory_frequency
Integer
default=0
help=' When different than 0, inventory count date for products stored at this location will be automatically set at the defined frequency.'
args: 'Inventory Frequency'
forecast_weight
Float
compute='_compute_weight'
args: 'Forecasted Weight'
incoming_move_line_ids
One2many → stock.move.line
is_empty
Boolean
compute='_compute_is_empty'
search='_search_is_empty'
args: 'Is Empty'
last_inventory_date
Date
help='Date of the last inventory at this location.'
readonly=True
args: 'Last Inventory'
location_id
Many2one → stock.location
check_company=True
help="The parent location that includes this location. Example : The 'Dispatch Zone' is the 'Gate 1' parent location."
index=True
args: 'stock.location', 'Parent Location'
name
Char
required=True
args: 'Location Name'
net_weight
Float
compute='_compute_weight'
args: 'Net Weight'
next_inventory_date
Date
compute='_compute_next_inventory_date'
help='Date for next planned inventory based on cyclic schedule.'
store=True
args: 'Next Expected'
outgoing_move_line_ids
One2many → stock.move.line
parent_path
Char
index=True
posx
Integer
default=0
help='Optional localization details, for information purpose only'
args: 'Corridor (X)'
posy
Integer
default=0
help='Optional localization details, for information purpose only'
args: 'Shelves (Y)'
posz
Integer
default=0
help='Optional localization details, for information purpose only'
args: 'Height (Z)'
putaway_rule_ids
One2many → stock.putaway.rule
quant_ids
One2many → stock.quant
removal_strategy_id
Many2one → product.removal
help='Defines the default method used for suggesting the exact location (shelf) where to take the products from, which lot etc. for this location. This method can be enforced at the product category level, and a fallback is made on the parent locations if none is set here.\n\nFIFO: products/lots that were stocked first will be moved out first.\nLIFO: products/lots that were stocked last will be moved out first.\nCloset location: products/lots closest to the target location will be moved out first.\nFEFO: products/lots with the closest removal date will be moved out first (the availability of this method depends on the "Expiration Dates" setting).'
args: 'product.removal', 'Removal Strategy'
replenish_location
Boolean
compute='_compute_replenish_location'
copy=False
help='Activate this function to get all quantities to replenish at this particular location'
readonly=False
store=True
args: 'Replenish Location'
scrap_location
Boolean
default=False
help='Check this box to allow using this location to put scrapped/damaged goods.'
args: 'Is a Scrap Location?'
storage_category_id
Many2one → stock.storage.category
check_company=True
string='Storage Category'
args: 'stock.storage.category'
usage
Selection
default='internal'
help="* Vendor Location: Virtual location representing the source location for products coming from your vendors\n* View: Virtual location used to create a hierarchical structures for your warehouse, aggregating its child locations ; can't directly contain products\n* Internal Location: Physical locations inside your own warehouses,\n* Customer Location: Virtual location representing the destination location for products sent to your customers\n* Inventory Loss: Virtual location serving as counterpart for inventory operations used to correct stock levels (Physical inventories)\n* Production: Virtual counterpart location for production operations: this location consumes the components and produces finished products\n* Transit Location: Counterpart location that should be used in inter-company or inter-warehouses operations"
index=True
required=True
string='Location Type'
args: [('supplier', 'Vendor Location'), ('view', 'View'), ('internal', 'Internal Location'), ('customer', 'Customer Location'), ('inventory', 'Inventory Loss'), ('production', 'Production'), ('transit', 'Transit Location')]
warehouse_id
Many2one → stock.warehouse
compute='_compute_warehouse_id'
store=True
args: 'stock.warehouse'
warehouse_view_ids
One2many → stock.warehouse
readonly=True
args: 'stock.warehouse', 'view_location_id'
copy_data(self, default=None)
create(self, vals_list)
default_get(self, fields)
name_create(self, name)
should_bypass_reservation(self)
unlink(self)
write(self, values)
company_id
Many2one → res.company
compute='_compute_company_id'
index=True
readonly=False
store=True
args: 'res.company', 'Company'
delivery_count
Integer
compute='_compute_delivery_ids'
args: 'Delivery order count'
delivery_ids
Many2many → stock.picking
compute='_compute_delivery_ids'
string='Transfers'
args: 'stock.picking'
display_complete
Boolean
compute='_compute_display_complete'
last_delivery_partner_id
Many2one → res.partner
compute='_compute_last_delivery_partner_id'
args: 'res.partner'
location_id
Many2one → stock.location
compute='_compute_single_location'
domain="[('usage', '!=', 'view')]"
group_expand='_read_group_location_id'
inverse='_set_single_location'
readonly=False
store=True
args: 'stock.location', 'Location'
lot_properties
Properties
copy=True
definition='product_id.lot_properties_definition'
args: 'Properties'
name
Char
default=<expr>
help='Unique Lot/Serial Number'
index='trigram'
required=True
args: 'Lot/Serial Number'
note
Html
string='Description'
product_id
Many2one → product.product
check_company=True
domain="[('tracking', '!=', 'none'), ('is_storable', '=', True)] + ([('product_tmpl_id', '=', context['default_product_tmpl_id'])] if context.get('default_product_tmpl_id') else [])"
index=True
required=True
args: 'product.product', 'Product'
product_qty
Float
compute='_product_qty'
search='_search_product_qty'
args: 'On Hand Quantity'
product_uom_id
Many2one → uom.uom
related='product_id.uom_id'
store=True
args: 'uom.uom', 'Unit of Measure'
quant_ids
One2many → stock.quant
readonly=True
args: 'stock.quant', 'lot_id', 'Quants'
ref
Char
help="Internal reference number in case it differs from the manufacturer's lot/serial number"
args: 'Internal Reference'
action_lot_open_quants(self)
action_lot_open_transfers(self)
copy_data(self, default=None)
create(self, vals_list)
default_get(self, fields_list)
generate_lot_names(self, first_lot, count)
write(self, vals)
address
Char
readonly=True
delivery_date
Datetime
readonly=True
has_return
Boolean
readonly=True
lot_id
Many2one → stock.lot
readonly=True
args: 'stock.lot', 'Lot/Serial'
partner_id
Many2one → res.partner
readonly=True
args: 'res.partner'
picking_id
Many2one → stock.picking
readonly=True
args: 'stock.picking'
product_id
Many2one → product.product
readonly=True
args: 'product.product'
quantity
Float
readonly=True
uom_id
Many2one → uom.uom
readonly=True
args: 'uom.uom'
No public methods.
additional
Boolean
default=False
args: "Whether the move was added after the picking's confirmation"
availability
Float
compute='_compute_product_availability'
help='Quantity in stock that can still be reserved for this move'
readonly=True
args: 'Forecasted Quantity'
company_id
Many2one → res.company
default=<expr>
index=True
required=True
args: 'res.company', 'Company'
date
Datetime
default=fields.Datetime.now
help='Scheduled date until move is done, then date of actual move processing'
index=True
required=True
args: 'Date Scheduled'
date_deadline
Datetime
copy=False
help='In case of outgoing flow, validate the transfer before this date to allow to deliver at promised date to the customer.\n In case of incoming flow, validate the transfer before this date in order to have these products in stock at the date promised by the supplier'
readonly=True
args: 'Deadline'
delay_alert_date
Datetime
compute='_compute_delay_alert_date'
help='Process at this date to be on time'
store=True
args: 'Delay Alert Date'
description_picking
Text
display_assign_serial
Boolean
compute='_compute_display_assign_serial'
display_import_lot
Boolean
compute='_compute_display_assign_serial'
forecast_availability
Float
compute='_compute_forecast_information'
compute_sudo=True
digits='Product Unit of Measure'
args: 'Forecast Availability'
forecast_expected_date
Datetime
compute='_compute_forecast_information'
compute_sudo=True
args: 'Forecasted Expected date'
group_id
Many2one → procurement.group
default=_default_group_id
index=True
args: 'procurement.group', 'Procurement Group'
has_tracking
Selection
related='product_id.tracking'
string='Product with Tracking'
is_initial_demand_editable
Boolean
compute='_compute_is_initial_demand_editable'
args: 'Is initial demand editable'
is_inventory
Boolean
is_locked
Boolean
compute='_compute_is_locked'
readonly=True
is_quantity_done_editable
Boolean
compute='_compute_is_quantity_done_editable'
args: 'Is quantity done editable'
is_storable
Boolean
related='product_id.is_storable'
location_dest_id
Many2one → stock.location
compute='_compute_location_dest_id'
help='The operations brings product to this location'
index=True
inverse='_set_location_dest_id'
precompute=True
readonly=False
required=True
store=True
args: 'stock.location', 'Intermediate Location'
location_dest_usage
Selection
related='location_dest_id.usage'
string='Destination Location Type'
location_final_id
Many2one → stock.location
auto_join=True
check_company=True
help='The operation brings the products to the intermediate location.But this operation is part of a chain of operations targeting the final location.'
index=True
readonly=False
store=True
args: 'stock.location', 'Final Location'
location_id
Many2one → stock.location
auto_join=True
check_company=True
compute='_compute_location_id'
help='The operation takes and suggests products from this location.'
index=True
precompute=True
readonly=False
required=True
store=True
args: 'stock.location', 'Source Location'
location_usage
Selection
related='location_id.usage'
string='Source Location Type'
lot_ids
Many2many → stock.lot
compute='_compute_lot_ids'
inverse='_set_lot_ids'
readonly=False
string='Serial Numbers'
args: 'stock.lot'
move_dest_ids
Many2many → stock.move
copy=False
help='Optional: next stock move when chaining them'
args: 'stock.move', 'stock_move_move_rel', 'move_orig_id', 'move_dest_id', 'Destination Moves'
move_line_ids
One2many → stock.move.line
move_lines_count
Integer
compute='_compute_move_lines_count'
move_orig_ids
Many2many → stock.move
copy=False
help='Optional: previous stock move when chaining them'
args: 'stock.move', 'stock_move_move_rel', 'move_dest_id', 'move_orig_id', 'Original Move'
name
Char
required=True
args: 'Description'
never_product_template_attribute_value_ids
Many2many → product.template.attribute.value
string='Never attribute Values'
args: 'product.template.attribute.value', 'template_attribute_value_stock_move_rel', 'move_id', 'template_attribute_value_id'
next_serial
Char
next_serial_count
Integer
orderpoint_id
Many2one → stock.warehouse.orderpoint
index=True
args: 'stock.warehouse.orderpoint', 'Original Reordering Rule'
origin
Char
origin_returned_move_id
Many2one → stock.move
check_company=True
copy=False
help='Move that created the return move'
index=True
args: 'stock.move', 'Origin return move'
package_level_id
Many2one → stock.package_level
check_company=True
copy=False
args: 'stock.package_level', 'Package Level'
partner_id
Many2one → res.partner
compute='_compute_partner_id'
help='Optional address where goods are to be delivered, specifically used for allotment'
index='btree_not_null'
readonly=False
store=True
args: 'res.partner', 'Destination Address '
picked
Boolean
compute='_compute_picked'
copy=False
default=False
help="This checkbox is just indicative, it doesn't validate or generate any product moves."
inverse='_inverse_picked'
readonly=False
store=True
args: 'Picked'
picking_code
Selection
readonly=True
related='picking_id.picking_type_id.code'
picking_id
Many2one → stock.picking
check_company=True
index=True
args: 'stock.picking', 'Transfer'
picking_type_entire_packs
Boolean
readonly=True
related='picking_type_id.show_entire_packs'
picking_type_id
Many2one → stock.picking.type
check_company=True
compute='_compute_picking_type_id'
readonly=False
store=True
args: 'stock.picking.type', 'Operation Type'
price_unit
Float
copy=False
args: 'Unit Price'
priority
Selection
compute='_compute_priority'
default='0'
store=True
args: PROCUREMENT_PRIORITIES, 'Priority'
procure_method
Selection
copy=False
default='make_to_stock'
help='By default, the system will take from the stock in the source location and passively wait for availability. The other possibility allows you to directly create a procurement on the source location (and thus ignore its current stock) to gather products. If we want to chain moves and have this one to wait for the previous, this second option should be chosen.'
required=True
string='Supply Method'
args: [('make_to_stock', 'Default: Take From Stock'), ('make_to_order', 'Advanced: Apply Procurement Rules')]
product_id
Many2one → product.product
check_company=True
domain="[('type', '=', 'consu')]"
index=True
required=True
args: 'product.product', 'Product'
product_packaging_id
Many2one → product.packaging
check_company=True
domain="[('product_id', '=', product_id)]"
args: 'product.packaging', 'Packaging'
product_packaging_qty
Float
compute='_compute_product_packaging_qty'
string='Reserved Packaging Quantity'
product_packaging_quantity
Float
compute='_compute_product_packaging_quantity'
string='Done Packaging Quantity'
product_qty
Float
compute='_compute_product_qty'
compute_sudo=True
digits=0
help='Quantity in the default UoM of the product'
inverse='_set_product_qty'
store=True
args: 'Real Quantity'
product_tmpl_id
Many2one → product.template
related='product_id.product_tmpl_id'
args: 'product.template', 'Product Template'
product_uom
Many2one → uom.uom
compute='_compute_product_uom'
domain="[('category_id', '=', product_uom_category_id)]"
precompute=True
readonly=False
required=True
store=True
args: 'uom.uom', 'UoM'
product_uom_category_id
Many2one
related='product_id.uom_id.category_id'
product_uom_qty
Float
default=0
digits='Product Unit of Measure'
help='This is the quantity of product that is planned to be moved.Lowering this quantity does not generate a backorder.Changing this quantity on assigned moves affects the product reservation, and should be done with care.'
required=True
args: 'Demand'
propagate_cancel
Boolean
default=True
help='If checked, when this move is cancelled, cancel the linked move too'
args: 'Propagate cancel and split'
quantity
Float
compute='_compute_quantity'
digits='Product Unit of Measure'
inverse='_set_quantity'
store=True
args: 'Quantity'
reference
Char
compute='_compute_reference'
store=True
string='Reference'
reservation_date
Date
compute='_compute_reservation_date'
help='Computes when a move should be reserved'
store=True
args: 'Date to Reserve'
restrict_partner_id
Many2one → res.partner
check_company=True
index='btree_not_null'
args: 'res.partner', 'Owner '
returned_move_ids
One2many → stock.move
help='Optional: all returned moves created from this move'
args: 'stock.move', 'origin_returned_move_id', 'All returned moves'
route_ids
Many2many → stock.route
help='Preferred route'
args: 'stock.route', 'stock_route_move', 'move_id', 'route_id', 'Destination route'
rule_id
Many2one → stock.rule
check_company=True
help='The stock rule that created this stock move'
ondelete='restrict'
args: 'stock.rule', 'Stock Rule'
scrap_id
Many2one → stock.scrap
check_company=True
readonly=True
args: 'stock.scrap', 'Scrap operation'
scrapped
Boolean
readonly=True
related='location_dest_id.scrap_location'
store=True
args: 'Scrapped'
sequence
Integer
default=10
args: 'Sequence'
show_details_visible
Boolean
compute='_compute_show_details_visible'
args: 'Details Visible'
show_lots_m2o
Boolean
compute='_compute_show_info'
args: 'Show lot_id'
show_lots_text
Boolean
compute='_compute_show_info'
args: 'Show lot_name'
show_operations
Boolean
related='picking_id.picking_type_id.show_operations'
show_quant
Boolean
compute='_compute_show_info'
args: 'Show Quant'
state
Selection
copy=False
default='draft'
help="* New: The stock move is created but not confirmed.\n* Waiting Another Move: A linked stock move should be done before this one.\n* Waiting Availability: The stock move is confirmed but the product can't be reserved.\n* Available: The product of the stock move is reserved.\n* Done: The product has been transferred and the transfer has been confirmed."
index=True
readonly=True
string='Status'
args: [('draft', 'New'), ('waiting', 'Waiting Another Move'), ('confirmed', 'Waiting Availability'), ('partially_available', 'Partially Available'), ('assigned', 'Available'), ('done', 'Done'), ('cancel', 'Cancelled')]
warehouse_id
Many2one → stock.warehouse
help='the warehouse to consider for the route selection on the next procurement (if any).'
args: 'stock.warehouse', 'Warehouse'
action_assign_serial(self)
action_generate_lot_line_vals(self, context, mode, first_lot, count, lot_text)
action_open_reference(self)
action_product_forecast_report(self)
action_show_details(self)
create(self, vals_list)
default_get(self, fields_list)
init(self)
split_lots(self, lots)
unlink(self)
write(self, vals)
company_id
Many2one → res.company
index=True
readonly=True
required=True
string='Company'
args: 'res.company'
consume_line_ids
Many2many → stock.move.line
date
Datetime
default=fields.Datetime.now
help="Creation date of this move line until updated due to: quantity being increased, 'picked' status has updated, or move line is done."
required=True
args: 'Date'
description_picking
Text
string='Description picking'
is_inventory
Boolean
related='move_id.is_inventory'
is_locked
Boolean
readonly=True
related='move_id.is_locked'
location_dest_id
Many2one → stock.location
check_company=True
compute='_compute_location_id'
domain="[('usage', '!=', 'view')]"
precompute=True
readonly=False
required=True
store=True
args: 'stock.location', 'To'
location_dest_usage
Selection
related='location_dest_id.usage'
string='Destination Location Type'
location_id
Many2one → stock.location
check_company=True
compute='_compute_location_id'
domain="[('usage', '!=', 'view')]"
precompute=True
readonly=False
required=True
store=True
args: 'stock.location', 'From'
location_usage
Selection
related='location_id.usage'
string='Source Location Type'
lot_id
Many2one → stock.lot
check_company=True
domain="[('product_id', '=', product_id)]"
index=True
args: 'stock.lot', 'Lot/Serial Number'
lot_name
Char
lots_visible
Boolean
compute='_compute_lots_visible'
move_id
Many2one → stock.move
check_company=True
index=True
args: 'stock.move', 'Stock Operation'
origin
Char
related='move_id.origin'
string='Source'
owner_id
Many2one → res.partner
check_company=True
help='When validating the transfer, the products will be taken from this owner.'
index='btree_not_null'
args: 'res.partner', 'From Owner'
package_id
Many2one → stock.quant.package
check_company=True
domain="[('location_id', '=', location_id)]"
ondelete='restrict'
args: 'stock.quant.package', 'Source Package'
package_level_id
Many2one → stock.package_level
check_company=True
args: 'stock.package_level', 'Package Level'
picked
Boolean
compute='_compute_picked'
copy=False
readonly=False
store=True
args: 'Picked'
picking_code
Selection
readonly=True
related='picking_type_id.code'
picking_id
Many2one → stock.picking
auto_join=True
check_company=True
help='The stock operation where the packing has been made'
index=True
args: 'stock.picking', 'Transfer'
picking_location_dest_id
Many2one
related='picking_id.location_dest_id'
picking_location_id
Many2one
related='picking_id.location_id'
picking_partner_id
Many2one
readonly=True
related='picking_id.partner_id'
picking_type_entire_packs
Boolean
readonly=True
related='picking_id.picking_type_id.show_entire_packs'
picking_type_id
Many2one → stock.picking.type
compute='_compute_picking_type_id'
search='_search_picking_type_id'
args: 'stock.picking.type', 'Operation type'
picking_type_use_create_lots
Boolean
readonly=True
related='picking_type_id.use_create_lots'
picking_type_use_existing_lots
Boolean
readonly=True
related='picking_type_id.use_existing_lots'
produce_line_ids
Many2many → stock.move.line
product_category_name
Char
related='product_id.categ_id.complete_name'
string='Product Category'
product_id
Many2one → product.product
check_company=True
domain="[('type', '!=', 'service')]"
index=True
ondelete='cascade'
args: 'product.product', 'Product'
product_packaging_qty
Float
compute='_compute_product_packaging_qty'
string='Reserved Packaging Quantity'
product_uom_category_id
Many2one
related='product_id.uom_id.category_id'
product_uom_id
Many2one → uom.uom
compute='_compute_product_uom_id'
domain="[('category_id', '=', product_uom_category_id)]"
precompute=True
readonly=False
required=True
store=True
args: 'uom.uom', 'Unit of Measure'
quant_id
Many2one → stock.quant
store=False
args: 'stock.quant', 'Pick From'
quantity
Float
compute='_compute_quantity'
copy=False
digits='Product Unit of Measure'
readonly=False
store=True
args: 'Quantity'
quantity_product_uom
Float
compute='_compute_quantity_product_uom'
copy=False
digits='Product Unit of Measure'
store=True
args: 'Quantity in Product UoM'
reference
Char
readonly=False
related='move_id.reference'
related_sudo=False
store=True
result_package_id
Many2one → stock.quant.package
check_company=True
domain="['|', '|', ('location_id', '=', False), ('location_id', '=', location_dest_id), ('id', '=', package_id)]"
help='If set, the operations are packed into this package'
ondelete='restrict'
required=False
args: 'stock.quant.package', 'Destination Package'
scheduled_date
Datetime
related='move_id.date'
args: 'Scheduled Date'
state
Selection
related='move_id.state'
related_sudo=False
store=True
tracking
Selection
readonly=True
related='product_id.tracking'
action_open_reference(self)
action_put_in_pack(self)
action_revert_inventory(self)
create(self, vals_list)
get_move_line_quant_match(self, move_id, dirty_move_line_ids, dirty_quant_ids)
init(self)
unlink(self)
write(self, vals)
orderpoint_ids
Many2many → stock.warehouse.orderpoint
predefined_date
Selection
default='day'
string='Snooze for'
args: [('day', '1 Day'), ('week', '1 Week'), ('month', '1 Month'), ('custom', 'Custom')]
snoozed_until
Date
action_snooze(self)
filtered_location
One2many → stock.location
comodel_name='stock.location'
compute='_filter_location'
location_dest_id
Many2one → stock.location
required=True
args: 'stock.location', 'Destination location'
move_line_ids
Many2many → stock.move.line
compute='_compute_move_line_ids'
required=True
args: 'stock.move.line', 'Products'
picking_id
Many2one → stock.picking
required=True
args: 'stock.picking'
action_done(self)
barcode
Char
copy=False
args: 'Barcode'
base_weight
Float
help='Weight of the package type'
string='Weight'
company_id
Many2one → res.company
index=True
args: 'res.company', 'Company'
height
Float
help='Packaging Height'
args: 'Height'
length_uom_name
Char
compute='_compute_length_uom_name'
default=_get_default_length_uom
string='Length unit of measure label'
max_weight
Float
help='Maximum weight shippable in this packaging'
args: 'Max Weight'
name
Char
required=True
args: 'Package Type'
packaging_length
Float
help='Packaging Length'
args: 'Length'
sequence
Integer
default=1
help='The first in the sequence is the default one.'
args: 'Sequence'
storage_category_capacity_ids
One2many → stock.storage.category.capacity
copy=True
args: 'stock.storage.category.capacity', 'package_type_id', 'Storage Category Capacity'
weight_uom_name
Char
compute='_compute_weight_uom_name'
default=_get_default_weight_uom
string='Weight unit of measure label'
width
Float
help='Packaging Width'
args: 'Width'
copy_data(self, default=None)
company_id
Many2one → res.company
index=True
required=True
args: 'res.company', 'Company'
is_done
Boolean
compute='_compute_is_done'
inverse='_set_is_done'
args: 'Done'
is_fresh_package
Boolean
compute='_compute_fresh_pack'
location_dest_id
Many2one → stock.location
check_company=True
compute='_compute_location_dest_id'
domain="[('id', 'child_of', parent.location_dest_id), '|', ('company_id', '=', False), ('company_id', '=', company_id)]"
precompute=True
readonly=False
store=True
args: 'stock.location', 'To'
location_id
Many2one → stock.location
check_company=True
compute='_compute_location_id'
args: 'stock.location', 'From'
move_ids
One2many → stock.move
move_line_ids
One2many → stock.move.line
package_id
Many2one → stock.quant.package
check_company=True
domain="[('location_id', 'child_of', parent.location_id), '|', ('company_id', '=', False), ('company_id', '=', company_id)]"
required=True
args: 'stock.quant.package', 'Package'
picking_id
Many2one → stock.picking
check_company=True
args: 'stock.picking', 'Picking'
picking_type_code
Selection
related='picking_id.picking_type_code'
show_lots_m2o
Boolean
compute='_compute_show_lot'
show_lots_text
Boolean
compute='_compute_show_lot'
state
Selection
compute='_compute_state'
string='State'
args: [('draft', 'Draft'), ('confirmed', 'Confirmed'), ('assigned', 'Reserved'), ('new', 'New'), ('done', 'Done'), ('cancel', 'Cancelled')]
action_show_package_details(self)
create(self, vals_list)
unlink(self)
write(self, vals)
backorder_id
Many2one → stock.picking
check_company=True
copy=False
help='If this shipment was split, then this field links to the shipment which contains the already processed part.'
index='btree_not_null'
readonly=True
args: 'stock.picking', 'Back Order of'
backorder_ids
One2many → stock.picking
company_id
Many2one → res.company
index=True
readonly=True
related='picking_type_id.company_id'
store=True
string='Company'
args: 'res.company'
date
Datetime
copy=False
default=fields.Datetime.now
help='Creation Date, usually the time of the order'
tracking=True
args: 'Creation Date'
date_deadline
Datetime
compute='_compute_date_deadline'
help='In case of outgoing flow, validate the transfer before this date to allow to deliver at promised date to the customer.\n In case of incoming flow, validate the transfer before this date in order to have these products in stock at the date promised by the supplier'
store=True
args: 'Deadline'
date_done
Datetime
copy=False
help='Date at which the transfer has been processed or cancelled.'
readonly=True
args: 'Date of Transfer'
delay_alert_date
Datetime
compute='_compute_delay_alert_date'
search='_search_delay_alert_date'
args: 'Delay Alert Date'
group_id
Many2one → procurement.group
readonly=True
related='move_ids.group_id'
store=True
args: 'procurement.group', 'Procurement Group'
has_deadline_issue
Boolean
compute='_compute_has_deadline_issue'
default=False
help='Is late or will be late depending on the deadline and scheduled date'
store=True
args: 'Is late'
has_packages
Boolean
compute='_compute_has_packages'
help='Check the existence of destination packages on move lines'
args: 'Has Packages'
has_scrap_move
Boolean
compute='_has_scrap_move'
args: 'Has Scrap Moves'
has_tracking
Boolean
compute='_compute_has_tracking'
is_locked
Boolean
default=True
help='When the picking is not done this allows changing the initial demand. When the picking is done this allows changing the done quantities.'
is_signed
Boolean
compute='_compute_is_signed'
args: 'Is Signed'
json_popover
Char
compute='_compute_json_popover'
args: 'JSON data for the popover widget'
location_dest_id
Many2one → stock.location
check_company=True
compute='_compute_location_id'
precompute=True
readonly=False
required=True
store=True
args: 'stock.location', 'Destination Location'
location_id
Many2one → stock.location
check_company=True
compute='_compute_location_id'
precompute=True
readonly=False
required=True
store=True
args: 'stock.location', 'Source Location'
lot_id
Many2one → stock.lot
readonly=True
related='move_line_ids.lot_id'
args: 'stock.lot', 'Lot/Serial Number'
move_ids
One2many → stock.move
copy=True
string='Stock Moves'
args: 'stock.move', 'picking_id'
move_ids_without_package
One2many → stock.move
domain=['|', ('package_level_id', '=', False), ('picking_type_entire_packs', '=', False)]
string='Stock move'
args: 'stock.move', 'picking_id'
move_line_exist
Boolean
compute='_compute_move_line_exist'
help='Check the existence of pack operation on the picking'
args: 'Has Pack Operations'
move_line_ids
One2many → stock.move.line
move_line_ids_without_package
One2many → stock.move.line
domain=['|', ('package_level_id', '=', False), ('picking_type_entire_packs', '=', False)]
args: 'stock.move.line', 'picking_id', 'Operations without package'
move_type
Selection
compute='_compute_move_type'
help='It specifies goods to be deliver partially or all at once'
precompute=True
readonly=False
required=True
store=True
args: [('direct', 'As soon as possible'), ('one', 'When all products are ready')], 'Shipping Policy'
name
Char
copy=False
default='/'
index='trigram'
readonly=True
args: 'Reference'
note
Html
origin
Char
help='Reference of the document'
index='trigram'
args: 'Source Document'
owner_id
Many2one → res.partner
check_company=True
help='When validating the transfer, the products will be assigned to this owner.'
index='btree_not_null'
args: 'res.partner', 'Assign Owner'
package_level_ids
One2many → stock.package_level
package_level_ids_details
One2many → stock.package_level
partner_id
Many2one → res.partner
check_company=True
index='btree_not_null'
args: 'res.partner', 'Contact'
picking_properties
Properties
copy=True
definition='picking_type_id.picking_properties_definition'
args: 'Properties'
picking_type_code
Selection
readonly=True
related='picking_type_id.code'
picking_type_entire_packs
Boolean
related='picking_type_id.show_entire_packs'
picking_type_id
Many2one → stock.picking.type
default=_default_picking_type_id
index=True
required=True
args: 'stock.picking.type', 'Operation Type'
printed
Boolean
copy=False
args: 'Printed'
priority
Selection
default='0'
help='Products will be reserved first for the transfers with the highest priorities.'
string='Priority'
args: PROCUREMENT_PRIORITIES
product_id
Many2one → product.product
readonly=True
related='move_ids.product_id'
args: 'product.product', 'Product'
products_availability
Char
compute='_compute_products_availability'
help='Latest product availability status of the picking'
string='Product Availability'
products_availability_state
Selection
compute='_compute_products_availability'
search='_search_products_availability_state'
args: [('available', 'Available'), ('expected', 'Expected'), ('late', 'Late')]
return_count
Integer
compute='_compute_return_count'
compute_sudo=False
args: '# Returns'
return_id
Many2one → stock.picking
check_company=True
copy=False
help='If this picking was created as a return of another picking, this field links to the original picking.'
index='btree_not_null'
readonly=True
args: 'stock.picking', 'Return of'
return_ids
One2many → stock.picking
scheduled_date
Datetime
compute='_compute_scheduled_date'
default=fields.Datetime.now
help='Scheduled time for the first part of the shipment to be processed. Setting manually a value here would set it as expected date for all the stock moves.'
index=True
inverse='_set_scheduled_date'
store=True
tracking=True
args: 'Scheduled Date'
search_date_category
Selection
readonly=True
search='_search_date_category'
store=False
string='Date Category'
args: [('before', 'Before'), ('yesterday', 'Yesterday'), ('today', 'Today'), ('day_1', 'Tomorrow'), ('day_2', 'The day after tomorrow'), ('after', 'After')]
shipping_volume
Float
compute='_compute_shipping_volume'
args: 'Volume for Shipping'
shipping_weight
Float
compute='_compute_shipping_weight'
help="Total weight of packages and products not in a package. Packages with no shipping weight specified will default to their products' total weight. This is the weight used to compute the cost of the shipping."
readonly=False
args: 'Weight for Shipping'
show_allocation
Boolean
compute='_compute_show_allocation'
help='Technical Field used to decide whether the button "Allocation" should be displayed.'
show_check_availability
Boolean
compute='_compute_show_check_availability'
help='Technical field used to compute whether the button "Check Availability" should be displayed.'
show_lots_text
Boolean
compute='_compute_show_lots_text'
show_next_pickings
Boolean
compute='_compute_show_next_pickings'
show_operations
Boolean
related='picking_type_id.show_operations'
signature
Image
attachment=True
copy=False
help='Signature'
args: 'Signature'
state
Selection
compute='_compute_state'
copy=False
help=' * Draft: The transfer is not confirmed yet. Reservation doesn\'t apply.\n * Waiting another operation: This transfer is waiting for another operation before being ready.\n * Waiting: The transfer is waiting for the availability of some products.\n(a) The shipping policy is "As soon as possible": no product could be reserved.\n(b) The shipping policy is "When all products are ready": not all the products could be reserved.\n * Ready: The transfer is ready to be processed.\n(a) The shipping policy is "As soon as possible": at least one product has been reserved.\n(b) The shipping policy is "When all products are ready": all product have been reserved.\n * Done: The transfer has been processed.\n * Cancelled: The transfer has been cancelled.'
index=True
readonly=True
store=True
string='Status'
tracking=True
args: [('draft', 'Draft'), ('waiting', 'Waiting Another Operation'), ('confirmed', 'Waiting'), ('assigned', 'Ready'), ('done', 'Done'), ('cancel', 'Cancelled')]
use_create_lots
Boolean
related='picking_type_id.use_create_lots'
use_existing_lots
Boolean
related='picking_type_id.use_existing_lots'
user_id
Many2one → res.users
copy=False
default=<expr>
domain=<expr>
tracking=True
args: 'res.users', 'Responsible'
warehouse_address_id
Many2one → res.partner
related='picking_type_id.warehouse_id.partner_id'
args: 'res.partner'
weight_bulk
Float
compute='_compute_bulk_weight'
help='Total weight of products which are not in a package.'
args: 'Bulk Weight'
action_assign(self)
action_cancel(self)
action_confirm(self)
action_detailed_operations(self)
action_next_transfer(self)
action_open_label_layout(self)
action_open_label_type(self)
action_picking_move_tree(self)
action_put_in_pack(self, move_lines_to_pack=False)
action_see_move_scrap(self)
action_see_packages(self)
action_see_returns(self)
action_split_transfer(self)
action_toggle_is_locked(self)
action_view_reception_report(self)
button_scrap(self)
button_validate(self)
calculate_date_category(self, datetime)
create(self, vals_list)
date_category_to_domain(self, date_category)
do_print_picking(self)
do_unreserve(self)
get_action_click_graph(self)
get_action_picking_tree_incoming(self)
get_action_picking_tree_internal(self)
get_action_picking_tree_outgoing(self)
get_empty_list_help(self, help_message)
should_print_delivery_address(self)
unlink(self)
write(self, vals)
active
Boolean
default=True
args: 'Active'
auto_print_delivery_slip
Boolean
help='If this checkbox is ticked, Odoo will automatically print the delivery slip of a picking when it is validated.'
args: 'Auto Print Delivery Slip'
auto_print_lot_labels
Boolean
help='If this checkbox is ticked, Odoo will automatically print the lot/SN labels of a picking when it is validated.'
args: 'Auto Print Lot/SN Labels'
auto_print_package_label
Boolean
help='If this checkbox is ticked, Odoo will automatically print the package label when "Put in Pack" button is used.'
args: 'Auto Print Package Label'
auto_print_packages
Boolean
help='If this checkbox is ticked, Odoo will automatically print the packages and their contents of a picking when it is validated.'
args: 'Auto Print Packages'
auto_print_product_labels
Boolean
help='If this checkbox is ticked, Odoo will automatically print the product labels of a picking when it is validated.'
args: 'Auto Print Product Labels'
auto_print_reception_report
Boolean
help='If this checkbox is ticked, Odoo will automatically print the reception report of a picking when it is validated and has assigned moves.'
args: 'Auto Print Reception Report'
auto_print_reception_report_labels
Boolean
help='If this checkbox is ticked, Odoo will automatically print the reception report labels of a picking when it is validated.'
args: 'Auto Print Reception Report Labels'
auto_print_return_slip
Boolean
help='If this checkbox is ticked, Odoo will automatically print the return slip of a picking when it is validated.'
args: 'Auto Print Return Slip'
auto_show_reception_report
Boolean
help='If this checkbox is ticked, Odoo will automatically show the reception report (if there are moves to allocate to) when validating.'
args: 'Show Reception Report at Validation'
barcode
Char
copy=False
args: 'Barcode'
code
Selection
default='incoming'
required=True
args: [('incoming', 'Receipt'), ('outgoing', 'Delivery'), ('internal', 'Internal Transfer')], 'Type of Operation'
color
Integer
company_id
Many2one → res.company
default=<expr>
index=True
required=True
args: 'res.company', 'Company'
count_move_ready
Integer
compute='_compute_move_count'
count_picking
Integer
compute='_compute_picking_count'
count_picking_backorders
Integer
compute='_compute_picking_count'
count_picking_draft
Integer
compute='_compute_picking_count'
count_picking_late
Integer
compute='_compute_picking_count'
count_picking_ready
Integer
compute='_compute_picking_count'
count_picking_waiting
Integer
compute='_compute_picking_count'
create_backorder
Selection
default='ask'
help='When validating a transfer:\n * Ask: users are asked to choose if they want to make a backorder for remaining products\n * Always: a backorder is automatically created for the remaining products\n * Never: remaining products are cancelled'
required=True
args: [('ask', 'Ask'), ('always', 'Always'), ('never', 'Never')], 'Create Backorder'
default_location_dest_id
Many2one → stock.location
check_company=True
compute='_compute_default_location_dest_id'
help='This is the default destination location when this operation is manually created. However, it is possible to change it afterwards or that the routes use another one by default.'
precompute=True
readonly=False
required=True
store=True
args: 'stock.location', 'Destination Location'
default_location_src_id
Many2one → stock.location
check_company=True
compute='_compute_default_location_src_id'
help='This is the default source location when this operation is manually created. However, it is possible to change it afterwards or that the routes use another one by default.'
precompute=True
readonly=False
required=True
store=True
args: 'stock.location', 'Source Location'
favorite_user_ids
Many2many → res.users
hide_reservation_method
Boolean
compute='_compute_hide_reservation_method'
is_favorite
Boolean
compute='_compute_is_favorite'
compute_sudo=True
inverse='_inverse_is_favorite'
search='_search_is_favorite'
string='Show Operation in Overview'
kanban_dashboard_graph
Text
compute='_compute_kanban_dashboard_graph'
lot_label_format
Selection
default='4x12_lots'
string='Lot Label Format to auto-print'
args: [('4x12_lots', '4 x 12 - One per lot/SN'), ('4x12_units', '4 x 12 - One per unit'), ('zpl_lots', 'ZPL Labels - One per lot/SN'), ('zpl_units', 'ZPL Labels - One per unit')]
move_type
Selection
default='direct'
help='It specifies goods to be transferred partially or all at once'
required=True
args: [('direct', 'As soon as possible'), ('one', 'When all products are ready')], 'Shipping Policy'
name
Char
required=True
translate=True
args: 'Operation Type'
package_label_to_print
Selection
default='pdf'
args: [('pdf', 'PDF'), ('zpl', 'ZPL')], 'Package Label to Print'
picking_properties_definition
PropertiesDefinition
print_label
Boolean
compute='_compute_print_label'
help='Check this box if you want to generate shipping label in this operation.'
readonly=False
store=True
args: 'Generate Shipping Labels'
product_label_format
Selection
default='2x7xprice'
string='Product Label Format to auto-print'
args: [('dymo', 'Dymo'), ('2x7xprice', '2 x 7 with price'), ('4x7xprice', '4 x 7 with price'), ('4x12', '4 x 12'), ('4x12xprice', '4 x 12 with price'), ('zpl', 'ZPL Labels'), ('zplxprice', 'ZPL Labels with price')]
reservation_days_before
Integer
help='Maximum number of days before scheduled date that products should be reserved.'
args: 'Days'
reservation_days_before_priority
Integer
help='Maximum number of days before scheduled date that priority picking products should be reserved.'
args: 'Days when starred'
reservation_method
Selection
default='at_confirm'
help='How products in transfers of this operation type should be reserved.'
required=True
args: [('at_confirm', 'At Confirmation'), ('manual', 'Manually'), ('by_date', 'Before scheduled date')], 'Reservation Method'
return_picking_type_id
Many2one → stock.picking.type
check_company=True
args: 'stock.picking.type', 'Operation Type for Returns'
sequence
Integer
help="Used to order the 'All Operations' kanban view"
args: 'Sequence'
sequence_code
Char
required=True
args: 'Sequence Prefix'
sequence_id
Many2one → ir.sequence
check_company=True
copy=False
args: 'ir.sequence', 'Reference Sequence'
show_entire_packs
Boolean
help='If ticked, you will be able to select entire packages to move'
args: 'Move Entire Packages'
show_operations
Boolean
default=False
help='If this checkbox is ticked, the pickings lines will represent detailed stock operations. If not, the picking lines will represent an aggregate of detailed stock operations.'
args: 'Show Detailed Operations'
show_picking_type
Boolean
compute='_compute_show_picking_type'
use_create_lots
Boolean
compute='_compute_use_create_lots'
default=True
help='If this is checked only, it will suppose you want to create new Lots/Serial Numbers, so you can provide them in a text field. '
readonly=False
store=True
args: 'Create New Lots/Serial Numbers'
use_existing_lots
Boolean
compute='_compute_use_existing_lots'
default=True
help='If this is checked, you will be able to choose the Lots/Serial Numbers. You can also decide to not put lots in this operation type. This means it will create stock with no lot or not put a restriction on the lot taken. '
readonly=False
store=True
args: 'Use Existing Lots/Serial Numbers'
warehouse_id
Many2one → stock.warehouse
check_company=True
compute='_compute_warehouse_id'
ondelete='cascade'
readonly=False
store=True
args: 'stock.warehouse', 'Warehouse'
action_redirect_to_barcode_installation(self)
copy_data(self, default=None)
create(self, vals_list)
get_action_picking_tree_backorder(self)
get_action_picking_tree_late(self)
get_action_picking_tree_ready(self)
get_action_picking_tree_waiting(self)
get_action_picking_type_moves_analysis(self)
get_action_picking_type_ready_moves(self)
get_stock_picking_action_picking_type(self)
write(self, vals)
active
Boolean
default=True
args: 'Active'
category_id
Many2one → product.category
default=_default_category_id
domain=[('filter_for_stock_putaway_rule', '=', True)]
ondelete='cascade'
args: 'product.category', 'Product Category'
company_id
Many2one → res.company
default=<expr>
index=True
required=True
args: 'res.company', 'Company'
location_in_id
Many2one → stock.location
check_company=True
default=_default_location_id
domain="[('child_ids', '!=', False)]"
index=True
ondelete='cascade'
required=True
args: 'stock.location', 'When product arrives in'
location_out_id
Many2one → stock.location
check_company=True
domain="[('id', 'child_of', location_in_id)]"
ondelete='cascade'
required=True
args: 'stock.location', 'Store to sublocation'
package_type_ids
Many2many → stock.package.type
check_company=True
string='Package Type'
args: 'stock.package.type'
product_id
Many2one → product.product
check_company=True
default=_default_product_id
domain="[('product_tmpl_id', '=', context.get('active_id', False))] if context.get('active_model') == 'product.template' else [('type', '!=', 'service')]"
ondelete='cascade'
args: 'product.product', 'Product'
sequence
Integer
help='Give to the more specialized category, a higher priority to have them in top of the list.'
args: 'Priority'
storage_category_id
Many2one → stock.storage.category
check_company=True
compute='_compute_storage_category'
ondelete='cascade'
readonly=False
store=True
args: 'stock.storage.category', 'Storage Category'
sublocation
Selection
default='no'
args: [('no', 'No'), ('last_used', 'Last Used'), ('closest_location', 'Closest Location')]
create(self, vals_list)
write(self, vals)
available_quantity
Float
compute='_compute_available_quantity'
digits='Product Unit of Measure'
help="On hand quantity which hasn't been reserved on a transfer, in the default unit of measure of the product"
args: 'Available Quantity'
company_id
Many2one
readonly=True
related='location_id.company_id'
store=True
string='Company'
cyclic_inventory_frequency
Integer
related='location_id.cyclic_inventory_frequency'
in_date
Datetime
default=fields.Datetime.now
readonly=True
required=True
args: 'Incoming Date'
inventory_date
Date
compute='_compute_inventory_date'
help='Next date the On Hand Quantity should be counted.'
readonly=False
store=True
args: 'Scheduled Date'
inventory_diff_quantity
Float
compute='_compute_inventory_diff_quantity'
digits='Product Unit of Measure'
help="Indicates the gap between the product's theoretical quantity and its counted quantity."
readonly=True
store=True
args: 'Difference'
inventory_quantity
Float
digits='Product Unit of Measure'
help="The product's counted quantity."
args: 'Counted Quantity'
inventory_quantity_auto_apply
Float
compute='_compute_inventory_quantity_auto_apply'
digits='Product Unit of Measure'
groups='stock.group_stock_manager'
inverse='_set_inventory_quantity'
args: 'Inventoried Quantity'
inventory_quantity_set
Boolean
compute='_compute_inventory_quantity_set'
default=False
readonly=False
store=True
is_favorite
Boolean
related='product_tmpl_id.is_favorite'
is_outdated
Boolean
compute='_compute_is_outdated'
search='_search_is_outdated'
args: 'Quantity has been moved since last count'
last_count_date
Date
compute='_compute_last_count_date'
help='Last time the Quantity was Updated'
location_id
Many2one → stock.location
auto_join=True
domain=<expr>
index=True
ondelete='restrict'
required=True
args: 'stock.location', 'Location'
lot_id
Many2one → stock.lot
check_company=True
domain=<expr>
index=True
ondelete='restrict'
args: 'stock.lot', 'Lot/Serial Number'
lot_properties
Properties
definition='product_id.lot_properties_definition'
readonly=True
related='lot_id.lot_properties'
on_hand
Boolean
search='_search_on_hand'
store=False
args: 'On Hand'
owner_id
Many2one → res.partner
check_company=True
help='This is the owner of the quant'
index='btree_not_null'
args: 'res.partner', 'Owner'
package_id
Many2one → stock.quant.package
check_company=True
domain="['|', ('location_id', '=', location_id), '&', ('location_id', '=', False), '&', ('package_use', '=', 'reusable'), ('quant_ids', '=', False)]"
help='The package containing this quant'
index=True
ondelete='restrict'
args: 'stock.quant.package', 'Package'
product_categ_id
Many2one
related='product_tmpl_id.categ_id'
product_id
Many2one → product.product
check_company=True
domain=<expr>
index=True
ondelete='restrict'
required=True
args: 'product.product', 'Product'
product_tmpl_id
Many2one → product.template
related='product_id.product_tmpl_id'
string='Product Template'
args: 'product.template'
product_uom_id
Many2one → uom.uom
readonly=True
related='product_id.uom_id'
args: 'uom.uom', 'Unit of Measure'
quantity
Float
digits='Product Unit of Measure'
help='Quantity of products in this quant, in the default unit of measure of the product'
readonly=True
args: 'Quantity'
reserved_quantity
Float
default=0.0
digits='Product Unit of Measure'
help='Quantity of reserved products in this quant, in the default unit of measure of the product'
readonly=True
required=True
args: 'Reserved Quantity'
sn_duplicated
Boolean
compute='_compute_sn_duplicated'
help='If the same SN is in another Quant'
string='Duplicated Serial Number'
storage_category_id
Many2one
related='location_id.storage_category_id'
store=True
tracking
Selection
readonly=True
related='product_id.tracking'
user_id
Many2one → res.users
domain=<expr>
help='User assigned to do product count.'
args: 'res.users', 'Assigned To'
warehouse_id
Many2one → stock.warehouse
related='location_id.warehouse_id'
args: 'stock.warehouse'
action_apply_all(self)
action_apply_inventory(self)
action_clear_inventory_quantity(self)
action_inventory_history(self)
action_reset(self)
action_set_inventory_quantity(self)
action_set_inventory_quantity_zero(self)
action_stock_quant_relocate(self)
action_view_inventory(self)
action_view_orderpoints(self)
action_view_quants(self)
action_view_stock_moves(self)
action_warning_duplicated_sn(self)
check_location_id(self)
check_lot_id(self)
check_product_id(self)
check_quantity(self)
copy(self, default=None)
create(self, vals_list)
get_aggregate_barcodes(self)
get_import_templates(self)
move_quants(self, location_dest_id=False, package_dest_id=False, message=False, unpack=False)
name_create(self, name)
write(self, vals)
company_id
Many2one → res.company
compute='_compute_package_info'
index=True
readonly=True
store=True
args: 'res.company', 'Company'
location_id
Many2one → stock.location
compute='_compute_package_info'
index=True
readonly=False
store=True
args: 'stock.location', 'Location'
name
Char
copy=False
default=<expr>
index='trigram'
required=True
args: 'Package Reference'
owner_id
Many2one → res.partner
compute='_compute_owner_id'
compute_sudo=True
readonly=True
search='_search_owner'
args: 'res.partner', 'Owner'
pack_date
Date
default=fields.Date.today
args: 'Pack Date'
package_type_id
Many2one → stock.package.type
index=True
args: 'stock.package.type', 'Package Type'
package_use
Selection
default='disposable'
help="Reusable boxes are used for batch picking and emptied afterwards to be reused. In the barcode application, scanning a reusable box will add the products in this box.\n Disposable boxes aren't reused, when scanning a disposable box in the barcode application, the contained products are added to the transfer."
required=True
string='Package Use'
args: [('disposable', 'Disposable Box'), ('reusable', 'Reusable Box')]
quant_ids
One2many → stock.quant
domain=['|', ('quantity', '!=', 0), ('reserved_quantity', '!=', 0)]
readonly=True
args: 'stock.quant', 'package_id', 'Bulk Content'
shipping_weight
Float
help='Total weight of the package.'
string='Shipping Weight'
valid_sscc
Boolean
compute='_compute_valid_sscc'
args: 'Package name is valid SSCC'
action_view_picking(self)
unpack(self)
write(self, vals)
company_id
Many2one
related='quant_ids.company_id'
dest_location_id
Many2one → stock.location
domain="[('usage', '=', 'internal'), ('company_id', '=', company_id)]"
args: 'stock.location'
dest_package_id
Many2one → stock.quant.package
compute='_compute_dest_package_id'
domain='dest_package_id_domain'
store=True
args: 'stock.quant.package'
dest_package_id_domain
Char
compute='_compute_dest_package_id_domain'
is_multi_location
Boolean
compute='_compute_is_multi_location'
is_partial_package
Boolean
compute='_compute_is_partial_package'
message
Text
partial_package_names
Char
compute='_compute_is_partial_package'
quant_ids
Many2many → stock.quant
action_relocate_quants(self)
inventory_datetime
Datetime
default=fields.Datetime.now
help='Choose a date to get the inventory at that date'
args: 'Inventory at Date'
open_at_date(self)
allowed_route_ids
Many2many → stock.route
compute='_compute_allowed_route_ids'
args: 'stock.route'
route_id
Many2one → stock.route
check_company=True
help="Apply specific route for the replenishment instead of product's default routes."
string='Preferred Route'
args: 'stock.route'
No public methods.
json_lead_days
Char
compute='_compute_json_lead_days'
json_replenishment_history
Char
compute='_compute_json_replenishment_history'
orderpoint_id
Many2one → stock.warehouse.orderpoint
product_id
Many2one → product.product
related='orderpoint_id.product_id'
args: 'product.product'
qty_to_order
Float
related='orderpoint_id.qty_to_order'
warehouseinfo_ids
One2many
related='orderpoint_id.warehouse_id.resupply_route_ids'
wh_replenishment_option_ids
One2many → stock.replenishment.option
compute='_compute_wh_replenishment_options'
args: 'stock.replenishment.option', 'replenishment_info_id'
No public methods.
free_qty
Float
compute='_compute_free_qty'
lead_time
Char
compute='_compute_lead_time'
location_id
Many2one → stock.location
related='warehouse_id.lot_stock_id'
args: 'stock.location'
product_id
Many2one → product.product
qty_to_order
Float
related='replenishment_info_id.qty_to_order'
replenishment_info_id
Many2one → stock.replenishment.info
route_id
Many2one → stock.route
uom
Char
related='product_id.uom_name'
warehouse_id
Many2one → stock.warehouse
related='route_id.supplier_wh_id'
args: 'stock.warehouse'
warning_message
Char
compute='_compute_warning_message'
order_all(self)
order_avbl(self)
select_route(self)
inventory_date
Date
default=fields.Datetime.now
help='Choose a date to get the inventory at that date'
required=True
args: 'Inventory Date'
quant_ids
Many2many → stock.quant
set_count
Selection
default='empty'
string='Count'
args: [('empty', 'Leave Empty'), ('set', 'Set Current Value')]
user_id
Many2one → res.users
domain=<expr>
string='User'
args: 'res.users'
action_request_count(self)
company_id
Many2one
related='picking_id.company_id'
picking_id
Many2one → stock.picking
picking_type_code
Selection
readonly=True
related='picking_id.picking_type_code'
product_return_moves
One2many → stock.return.picking.line
compute='_compute_moves_locations'
precompute=True
readonly=False
store=True
args: 'stock.return.picking.line', 'wizard_id', 'Moves'
action_create_exchanges(self)
action_create_returns(self)
action_create_returns_all(self)
default_get(self, fields)
move_id
Many2one → stock.move
move_quantity
Float
related='move_id.quantity'
string='Move Quantity'
product_id
Many2one → product.product
required=True
string='Product'
args: 'product.product'
quantity
Float
default=1
digits='Product Unit of Measure'
required=True
args: 'Quantity'
uom_id
Many2one → uom.uom
related='product_id.uom_id'
string='Unit of Measure'
args: 'uom.uom'
wizard_id
Many2one → stock.return.picking
string='Wizard'
args: 'stock.return.picking'
No public methods.
active
Boolean
default=True
help='If the active field is set to False, it will allow you to hide the route without removing it.'
args: 'Active'
categ_ids
Many2many → product.category
copy=False
args: 'product.category', 'stock_route_categ', 'route_id', 'categ_id', 'Product Categories'
company_id
Many2one → res.company
default=<expr>
help='Leave this field empty if this route is shared between all companies'
index=True
args: 'res.company', 'Company'
name
Char
required=True
translate=True
args: 'Route'
packaging_ids
Many2many → product.packaging
check_company=True
copy=False
args: 'product.packaging', 'stock_route_packaging', 'route_id', 'packaging_id', 'Packagings'
packaging_selectable
Boolean
help='When checked, the route will be selectable on the Product Packaging.'
args: 'Applicable on Packaging'
product_categ_selectable
Boolean
help='When checked, the route will be selectable on the Product Category.'
args: 'Applicable on Product Category'
product_ids
Many2many → product.template
check_company=True
copy=False
args: 'product.template', 'stock_route_product', 'route_id', 'product_id', 'Products'
product_selectable
Boolean
default=True
help='When checked, the route will be selectable in the Inventory tab of the Product form.'
args: 'Applicable on Product'
rule_ids
One2many → stock.rule
copy=True
args: 'stock.rule', 'route_id', 'Rules'
sequence
Integer
default=0
args: 'Sequence'
supplied_wh_id
Many2one → stock.warehouse
supplier_wh_id
Many2one → stock.warehouse
warehouse_domain_ids
One2many → stock.warehouse
compute='_compute_warehouses'
args: 'stock.warehouse'
warehouse_ids
Many2many → stock.warehouse
copy=False
domain="[('id', 'in', warehouse_domain_ids)]"
args: 'stock.warehouse', 'stock_route_warehouse', 'route_id', 'warehouse_id', 'Warehouses'
warehouse_selectable
Boolean
help='When a warehouse is selected for this route, this route should be seen as the default route when products pass through this warehouse.'
args: 'Applicable on Warehouse'
copy_data(self, default=None)
toggle_active(self)
action
Selection
default='pull'
index=True
required=True
selection=[('pull', 'Pull From'), ('push', 'Push To'), ('pull_push', 'Pull & Push')]
string='Action'
active
Boolean
default=True
help='If unchecked, it will allow you to hide the rule without removing it.'
args: 'Active'
auto
Selection
default='manual'
help="The 'Manual Operation' value will create a stock move after the current one. With 'Automatic No Step Added', the location is replaced in the original move."
required=True
string='Automatic Move'
args: [('manual', 'Manual Operation'), ('transparent', 'Automatic No Step Added')]
company_id
Many2one → res.company
default=<expr>
domain="[('id', '=?', route_company_id)]"
index=True
args: 'res.company', 'Company'
delay
Integer
default=0
help='The expected date of the created transfer will be computed based on this lead time.'
args: 'Lead Time'
group_id
Many2one → procurement.group
group_propagation_option
Selection
default='propagate'
string='Propagation of Procurement Group'
args: [('none', 'Leave Empty'), ('propagate', 'Propagate'), ('fixed', 'Fixed')]
location_dest_from_rule
Boolean
default=False
help='When set to True the destination location of the stock.move will be the rule.Otherwise, it takes it from the picking type.'
args: 'Destination location origin from rule'
location_dest_id
Many2one → stock.location
check_company=True
index=True
required=True
args: 'stock.location', 'Destination Location'
location_src_id
Many2one → stock.location
check_company=True
index=True
args: 'stock.location', 'Source Location'
name
Char
help='This field will fill the packing origin and the name of its moves'
required=True
translate=True
args: 'Name'
partner_address_id
Many2one → res.partner
check_company=True
help='Address where goods should be delivered. Optional.'
args: 'res.partner', 'Partner Address'
picking_type_code_domain
Char
compute='_compute_picking_type_code_domain'
picking_type_id
Many2one → stock.picking.type
check_company=True
domain="[('code', '=?', picking_type_code_domain)]"
required=True
args: 'stock.picking.type', 'Operation Type'
procure_method
Selection
default='make_to_stock'
help='Take From Stock: the products will be taken from the available stock of the source location.\nTrigger Another Rule: the system will try to find a stock rule to bring the products in the source location. The available stock will be ignored.\nTake From Stock, if Unavailable, Trigger Another Rule: the products will be taken from the available stock of the source location.If there is no stock available, the system will try to find a rule to bring the products in the source location.'
required=True
string='Supply Method'
args: [('make_to_stock', 'Take From Stock'), ('make_to_order', 'Trigger Another Rule'), ('mts_else_mto', 'Take From Stock, if unavailable, Trigger Another Rule')]
propagate_cancel
Boolean
default=False
help='When ticked, if the move created by this rule is cancelled, the next move will be cancelled too.'
args: 'Cancel Next Move'
propagate_carrier
Boolean
default=False
help='When ticked, carrier of shipment will be propagated.'
args: 'Propagation of carrier'
propagate_warehouse_id
Many2one → stock.warehouse
help='The warehouse to propagate on the created move/procurement, which can be different of the warehouse this rule is for (e.g for resupplying rules from another warehouse)'
args: 'stock.warehouse', 'Warehouse to Propagate'
push_domain
Char
route_company_id
Many2one
related='route_id.company_id'
string='Route Company'
route_id
Many2one → stock.route
index=True
ondelete='cascade'
required=True
args: 'stock.route', 'Route'
route_sequence
Integer
compute_sudo=True
related='route_id.sequence'
store=True
args: 'Route Sequence'
rule_message
Html
compute='_compute_action_message'
sequence
Integer
default=20
args: 'Sequence'
warehouse_id
Many2one → stock.warehouse
check_company=True
index=True
args: 'stock.warehouse', 'Warehouse'
copy_data(self, default=None)
default_get(self, fields_list)
product_has_variants
Boolean
default=False
required=True
args: 'Has variants'
product_id
Many2one → product.product
required=True
string='Product'
args: 'product.product'
product_tmpl_id
Many2one → product.template
required=True
string='Product Template'
args: 'product.template'
warehouse_ids
Many2many → stock.warehouse
help='Show the routes that apply on selected warehouses.'
required=True
string='Warehouses'
args: 'stock.warehouse'
default_get(self, fields)
print_report(self)
company_id
Many2one → res.company
default=<expr>
required=True
string='Company'
args: 'res.company'
date_done
Datetime
readonly=True
args: 'Date'
location_id
Many2one → stock.location
check_company=True
compute='_compute_location_id'
domain="[('usage', '=', 'internal')]"
precompute=True
readonly=False
required=True
store=True
args: 'stock.location', 'Source Location'
lot_id
Many2one → stock.lot
check_company=True
domain="[('product_id', '=', product_id)]"
args: 'stock.lot', 'Lot/Serial'
move_ids
One2many → stock.move
name
Char
copy=False
default=<expr>
readonly=True
required=True
args: 'Reference'
origin
Char
string='Source Document'
owner_id
Many2one → res.partner
check_company=True
args: 'res.partner', 'Owner'
package_id
Many2one → stock.quant.package
check_company=True
args: 'stock.quant.package', 'Package'
picking_id
Many2one → stock.picking
check_company=True
args: 'stock.picking', 'Picking'
product_id
Many2one → product.product
check_company=True
domain="[('type', '=', 'consu')]"
required=True
args: 'product.product', 'Product'
product_uom_category_id
Many2one
related='product_id.uom_id.category_id'
product_uom_id
Many2one → uom.uom
compute='_compute_product_uom_id'
domain="[('category_id', '=', product_uom_category_id)]"
precompute=True
readonly=False
required=True
store=True
args: 'uom.uom', 'Unit of Measure'
scrap_location_id
Many2one → stock.location
check_company=True
compute='_compute_scrap_location_id'
domain="[('scrap_location', '=', True)]"
precompute=True
readonly=False
required=True
store=True
args: 'stock.location', 'Scrap Location'
scrap_qty
Float
compute='_compute_scrap_qty'
default=1.0
digits='Product Unit of Measure'
readonly=False
required=True
store=True
args: 'Quantity'
scrap_reason_tag_ids
Many2many → stock.scrap.reason.tag
comodel_name='stock.scrap.reason.tag'
string='Scrap Reason'
should_replenish
Boolean
help='Trigger replenishment for scrapped products'
string='Replenish Quantities'
state
Selection
default='draft'
readonly=True
string='Status'
tracking=True
args: [('draft', 'Draft'), ('done', 'Done')]
tracking
Selection
readonly=True
related='product_id.tracking'
string='Product Tracking'
action_get_stock_move_lines(self)
action_get_stock_picking(self)
action_validate(self)
check_available_qty(self)
do_replenish(self, values=False)
do_scrap(self)
color
Char
default='#3C3C3C'
string='Color'
name
Char
required=True
string='Name'
translate=True
sequence
Integer
default=10
No public methods.
allow_new_product
Selection
default='mixed'
required=True
args: [('empty', 'If the location is empty'), ('same', 'If all products are same'), ('mixed', 'Allow mixed products')]
capacity_ids
One2many → stock.storage.category.capacity
copy=True
args: 'stock.storage.category.capacity', 'storage_category_id'
company_id
Many2one → res.company
location_ids
One2many → stock.location
max_weight
Float
digits='Stock Weight'
args: 'Max Weight'
name
Char
required=True
args: 'Storage Category'
package_capacity_ids
One2many → stock.storage.category.capacity
compute='_compute_storage_capacity_ids'
inverse='_set_storage_capacity_ids'
args: 'stock.storage.category.capacity'
product_capacity_ids
One2many → stock.storage.category.capacity
compute='_compute_storage_capacity_ids'
inverse='_set_storage_capacity_ids'
args: 'stock.storage.category.capacity'
weight_uom_name
Char
compute='_compute_weight_uom_name'
string='Weight unit'
copy_data(self, default=None)
company_id
Many2one → res.company
related='storage_category_id.company_id'
args: 'res.company', 'Company'
package_type_id
Many2one → stock.package.type
check_company=True
ondelete='cascade'
args: 'stock.package.type', 'Package Type'
product_id
Many2one → product.product
check_company=True
domain="[('product_tmpl_id', '=', context.get('active_id', False))] if context.get('active_model') == 'product.template' else [('id', '=', context.get('default_product_id', False))] if context.get('default_product_id') else [('is_storable', '=', True)]"
ondelete='cascade'
args: 'product.product', 'Product'
product_uom_id
Many2one
related='product_id.uom_id'
quantity
Float
required=True
args: 'Quantity'
storage_category_id
Many2one → stock.storage.category
index=True
ondelete='cascade'
required=True
args: 'stock.storage.category'
No public methods.
No new fields.
Public methods (4)get_lines(self, line_id=False, **kw)
get_main_lines(self, given_context=None)
get_pdf(self, line_data=None)
get_pdf_lines(self, line_data=[])
product_ids
Many2many → product.product
string='Products'
args: 'product.product'
quant_ids
Many2many → stock.quant
string='Quants'
args: 'stock.quant'
tracking_line_ids
One2many → stock.track.line
action_confirm(self)
product_display_name
Char
compute='_compute_product_display_name'
readonly=True
args: 'Name'
product_id
Many2one → product.product
readonly=True
args: 'product.product', 'Product'
tracking
Selection
related='product_id.tracking'
wizard_id
Many2one → stock.track.confirmation
readonly=True
args: 'stock.track.confirmation'
No public methods.
active
Boolean
default=True
args: 'Active'
code
Char
help='Short name used to identify your warehouse'
required=True
size=5
args: 'Short Name'
company_id
Many2one → res.company
default=<expr>
help='The company is automatically set from your user preferences.'
readonly=True
required=True
args: 'res.company', 'Company'
crossdock_route_id
Many2one → stock.route
copy=False
ondelete='restrict'
args: 'stock.route', 'Crossdock Route'
delivery_route_id
Many2one → stock.route
copy=False
ondelete='restrict'
args: 'stock.route', 'Delivery Route'
delivery_steps
Selection
default='ship_only'
help='Default outgoing route to follow'
required=True
args: [('ship_only', 'Deliver (1 step)'), ('pick_ship', 'Pick then Deliver (2 steps)'), ('pick_pack_ship', 'Pick, Pack, then Deliver (3 steps)')], 'Outgoing Shipments'
in_type_id
Many2one → stock.picking.type
check_company=True
copy=False
args: 'stock.picking.type', 'In Type'
int_type_id
Many2one → stock.picking.type
check_company=True
copy=False
args: 'stock.picking.type', 'Internal Type'
lot_stock_id
Many2one → stock.location
check_company=True
domain="[('usage', '=', 'internal'), ('company_id', '=', company_id)]"
required=True
args: 'stock.location', 'Location Stock'
mto_pull_id
Many2one → stock.rule
copy=False
args: 'stock.rule', 'MTO rule'
name
Char
default=_default_name
required=True
args: 'Warehouse'
out_type_id
Many2one → stock.picking.type
check_company=True
copy=False
args: 'stock.picking.type', 'Out Type'
pack_type_id
Many2one → stock.picking.type
check_company=True
copy=False
args: 'stock.picking.type', 'Pack Type'
partner_id
Many2one → res.partner
check_company=True
default=<expr>
args: 'res.partner', 'Address'
pick_type_id
Many2one → stock.picking.type
check_company=True
copy=False
args: 'stock.picking.type', 'Pick Type'
qc_type_id
Many2one → stock.picking.type
check_company=True
copy=False
args: 'stock.picking.type', 'Quality Control Type'
reception_route_id
Many2one → stock.route
copy=False
ondelete='restrict'
args: 'stock.route', 'Receipt Route'
reception_steps
Selection
default='one_step'
help='Default incoming route to follow'
required=True
args: [('one_step', 'Receive and Store (1 step)'), ('two_steps', 'Receive then Store (2 steps)'), ('three_steps', 'Receive, Quality Control, then Store (3 steps)')], 'Incoming Shipments'
resupply_route_ids
One2many → stock.route
copy=False
help='Routes will be created for these resupply warehouses and you can select them on products and product categories'
args: 'stock.route', 'supplied_wh_id', 'Resupply Routes'
resupply_wh_ids
Many2many → stock.warehouse
help='Routes will be created automatically to resupply this warehouse from the warehouses ticked'
args: 'stock.warehouse', 'stock_wh_resupply_table', 'supplied_wh_id', 'supplier_wh_id', 'Resupply From'
route_ids
Many2many → stock.route
check_company=True
copy=False
domain="[('warehouse_selectable', '=', True), '|', ('company_id', '=', False), ('company_id', '=', company_id)]"
help='Defaults routes through the warehouse'
args: 'stock.route', 'stock_route_warehouse', 'warehouse_id', 'route_id', 'Routes'
sequence
Integer
default=10
help='Gives the sequence of this line when displaying the warehouses.'
store_type_id
Many2one → stock.picking.type
check_company=True
copy=False
args: 'stock.picking.type', 'Storage Type'
view_location_id
Many2one → stock.location
check_company=True
domain="[('usage', '=', 'view'), ('company_id', '=', company_id)]"
required=True
args: 'stock.location', 'View Location'
wh_input_stock_loc_id
Many2one → stock.location
check_company=True
args: 'stock.location', 'Input Location'
wh_output_stock_loc_id
Many2one → stock.location
check_company=True
args: 'stock.location', 'Output Location'
wh_pack_stock_loc_id
Many2one → stock.location
check_company=True
args: 'stock.location', 'Packing Location'
wh_qc_stock_loc_id
Many2one → stock.location
check_company=True
args: 'stock.location', 'Quality Control Location'
xdock_type_id
Many2one → stock.picking.type
check_company=True
copy=False
args: 'stock.picking.type', 'Cross Dock Type'
action_view_all_routes(self)
copy_data(self, default=None)
create(self, vals_list)
create_resupply_routes(self, supplier_warehouses)
get_current_warehouses(self)
get_rules_dict(self)
unlink(self)
write(self, vals)
active
Boolean
default=True
help='If the active field is set to False, it will allow you to hide the orderpoint without removing it.'
args: 'Active'
allowed_location_ids
One2many → stock.location
comodel_name='stock.location'
compute='_compute_allowed_location_ids'
company_id
Many2one → res.company
default=<expr>
index=True
required=True
args: 'res.company', 'Company'
days_to_order
Float
compute='_compute_days_to_order'
help='Numbers of days in advance that replenishments demands are created.'
group_id
Many2one → procurement.group
copy=False
help='Moves created through this orderpoint will be put in this procurement group. If none is given, the moves generated by stock rules will be grouped into one big picking.'
args: 'procurement.group', 'Procurement Group'
lead_days_date
Date
compute='_compute_lead_days'
location_id
Many2one → stock.location
check_company=True
compute='_compute_location_id'
index=True
ondelete='cascade'
precompute=True
readonly=False
required=True
store=True
args: 'stock.location', 'Location'
name
Char
copy=False
default=<expr>
readonly=True
required=True
args: 'Name'
product_category_id
Many2one → product.category
name='Product Category'
related='product_id.categ_id'
store=True
args: 'product.category'
product_id
Many2one → product.product
check_company=True
domain="[('product_tmpl_id', '=', context.get('active_id', False))] if context.get('active_model') == 'product.template' else [('id', '=', context.get('default_product_id', False))] if context.get('default_product_id') else [('is_storable', '=', True)]"
ondelete='cascade'
required=True
args: 'product.product', 'Product'
product_max_qty
Float
compute='_compute_product_max_qty'
default=0.0
digits='Product Unit of Measure'
help='When the virtual stock goes below the Min Quantity, Odoo generates a procurement to bring the forecasted quantity up to (or near to) the Max Quantity specified for this field (or to Min Quantity, whichever is bigger).'
readonly=False
required=True
store=True
args: 'Max Quantity'
product_min_qty
Float
compute='_compute_product_min_qty'
default=0.0
digits='Product Unit of Measure'
help='When the virtual stock goes below the Min Quantity specified for this field, Odoo generates a procurement to bring the forecasted quantity above of this Min Quantity.'
readonly=False
required=True
store=True
args: 'Min Quantity'
product_tmpl_id
Many2one → product.template
related='product_id.product_tmpl_id'
args: 'product.template'
product_uom
Many2one → uom.uom
related='product_id.uom_id'
args: 'uom.uom', 'Unit of Measure'
product_uom_name
Char
readonly=True
related='product_uom.display_name'
string='Product unit of measure label'
qty_forecast
Float
compute='_compute_qty'
digits='Product Unit of Measure'
readonly=True
args: 'Forecast'
qty_multiple
Float
default=1
digits='Product Unit of Measure'
help='The procurement quantity will be rounded up to a multiple of this field quantity. If it is 0, it is not rounded.'
required=True
args: 'Multiple Quantity'
qty_on_hand
Float
compute='_compute_qty'
digits='Product Unit of Measure'
readonly=True
args: 'On Hand'
qty_to_order
Float
compute='_compute_qty_to_order'
digits='Product Unit of Measure'
inverse='_inverse_qty_to_order'
search='_search_qty_to_order'
args: 'To Order'
qty_to_order_computed
Float
compute='_compute_qty_to_order_computed'
digits='Product Unit of Measure'
args: 'To Order Computed'
qty_to_order_manual
Float
digits='Product Unit of Measure'
args: 'To Order Manual'
route_id
Many2one → stock.route
domain="[('product_selectable', '=', True)]"
string='Route'
args: 'stock.route'
rule_ids
Many2many → stock.rule
compute='_compute_rules'
string='Rules used'
args: 'stock.rule'
snoozed_until
Date
help='Hidden until next scheduler.'
args: 'Snoozed'
trigger
Selection
default='auto'
required=True
string='Trigger'
args: [('auto', 'Auto'), ('manual', 'Manual')]
unwanted_replenish
Boolean
compute='_compute_unwanted_replenish'
args: 'Unwanted Replenish'
visibility_days
Float
compute='_compute_visibility_days'
help='Consider product forecast these many days in the future upon product replenishment, set to 0 for just-in-time.\nThe value depends on the type of the route (Buy or Manufacture)'
inverse='_set_visibility_days'
readonly=False
warehouse_id
Many2one → stock.warehouse
check_company=True
compute='_compute_warehouse_id'
ondelete='cascade'
precompute=True
readonly=False
required=True
store=True
args: 'stock.warehouse', 'Warehouse'
action_open_orderpoints(self)
action_product_forecast_report(self)
action_remove_manual_qty_to_order(self)
action_replenish(self, force_to_max=False)
action_replenish_auto(self)
action_stock_replenishment_info(self)
create(self, vals_list)
get_visibility_days(self)
write(self, vals)
location_id
Many2one → stock.location
domain="[('usage', '=', 'internal')]"
required=True
args: 'stock.location', 'Location'
product_id
Many2one → product.product
required=True
args: 'product.product', 'Product'
product_uom_name
Char
required=True
args: 'Unit of Measure'
quant_ids
Many2many → stock.quant
compute='_compute_quant_ids'
args: 'stock.quant'
quantity
Float
required=True
string='Quantity'
action_done(self)
scrap_id
Many2one → stock.scrap
action_cancel(self)
action_done(self)
No new fields.
Public methods (1)write(self, values)
| XML ID | Name | Model | Type | Status |
|---|---|---|---|---|
duplicated_sn_warning |
stock.quant.duplicated.sn.warning | stock.quant | form | New |
exception_on_picking |
exception_on_picking | ir.ui.view | qweb | New |
inventory_warning_reset_view |
inventory.reset.warning.view | stock.inventory.warning | form | New |
inventory_warning_set_view |
inventory.set.warning.view | stock.inventory.warning | form | New |
label_lot_template_view |
label_lot_template_view | ir.ui.view | qweb | New |
label_package_template_view |
label_package_template_view | ir.ui.view | qweb | New |
label_picking_type_view |
label_picking_type_view | ir.ui.view | qweb | New |
label_product_packaging_view |
label_product_packaging_view | ir.ui.view | qweb | New |
label_product_product_view |
label_product_product_view | ir.ui.view | qweb | New |
label_transfer_template_view_pdf |
label_transfer_template_view_pdf | ir.ui.view | qweb | New |
label_transfer_template_view_zpl |
label_transfer_template_view_zpl | ir.ui.view | qweb | New |
lot_label_layout_form_picking |
lot.label.layout.form | lot.label.layout | form | New |
message_body |
message_body | ir.ui.view | qweb | New |
message_head |
message_head | ir.ui.view | qweb | New |
package_level_form_edit_view |
Package Level | stock.package_level | xpath | Inherits stock.package_level_form_view |
package_level_form_view |
Package Level | stock.package_level | form | New |
package_level_tree_view_picking |
Package Level Tree Picking | stock.package_level | tree | New |
picking_label_type_form |
picking.label.type.form | picking.label.type | form | New |
procurement_group_form_view |
procurement.group.form | procurement.group | form | New |
product_category_form_view_inherit |
product.category.form | product.category | div | Inherits product.product_category_form_view |
product_form_view_procurement_button |
product.product.procurement | product.product | data | Inherits product.product_normal_form_view |
product_label_layout_form_picking |
product.label.layout.form | product.label.layout | xpath | Inherits product.product_label_layout_form |
product_packaging_form_view |
product.packaging.form.view.stock | product.packaging | xpath | Inherits product.product_packaging_form_view |
product_packaging_tree_view |
product.packaging.tree.view.stock | product.packaging | xpath | Inherits product.product_packaging_tree_view |
product_product_stock_tree |
product.product.stock.tree | product.product | tree | New |
product_product_view_form_easy_inherit_stock |
product.product.view.form.easy.inherit.stock | product.product | xpath | Inherits product.product_variant_easy_edit_view |
product_search_form_view_stock |
product.search.stock.form | product.product | filter | Inherits product.product_search_form_view |
product_search_form_view_stock_report |
product.product.search.stock.form.stock.report | product.product | filter | Inherits stock_product_search_form_view |
product_template_form_view_procurement_button |
product.template_procurement | product.template | data | Inherits product.product_template_only_form_view |
product_template_kanban_stock_view |
Product Template Kanban Stock | product.template | xpath | Inherits product.product_template_kanban_view |
product_template_search_form_view_stock |
product.template.search.stock.form | product.template | xpath | Inherits product.product_template_search_view |
product_view_kanban_catalog |
product.view.kanban.catalog.inherit.stock | product.product | field | Inherits product.product_view_kanban_catalog |
quant_package_search_view |
stock.quant.package.search | stock.quant.package | search | New |
quant_search_view |
stock.quant.search | stock.quant | search | New |
replenishment_option_tree_view |
stock.replenishment.option.tree.view | stock.replenishment.option | tree | New |
replenishment_option_warning_view |
stock.replenishment.warning.view | stock.replenishment.option | form | New |
report_delivery_document |
report_delivery_document | ir.ui.view | qweb | New |
report_deliveryslip |
report_deliveryslip | ir.ui.view | qweb | New |
report_generic_barcode |
report_generic_barcode | ir.ui.view | qweb | New |
report_inventory |
report_inventory | ir.ui.view | qweb | New |
report_location_barcode |
report_location_barcode | ir.ui.view | qweb | New |
report_lot_label |
report_lot_label | ir.ui.view | qweb | New |
report_package_barcode |
report_package_barcode | ir.ui.view | qweb | New |
report_package_barcode_small |
report_package_barcode_small | ir.ui.view | qweb | New |
report_picking |
report_picking | ir.ui.view | qweb | New |
report_picking_packages |
report_picking_packages | ir.ui.view | qweb | New |
report_picking_type_label |
report_picking_type_label | ir.ui.view | qweb | New |
report_reception |
report_reception | ir.ui.view | qweb | New |
report_reception_body |
report_reception_body | ir.ui.view | qweb | New |
report_reception_report_label |
report_reception_report_label | ir.ui.view | qweb | New |
report_stock_body_print |
report_stock_body_print | ir.ui.view | qweb | New |
report_stock_inventory_print |
report_stock_inventory_print | ir.ui.view | qweb | New |
report_stock_rule |
report_stock_rule | ir.ui.view | qweb | New |
report_stock_rule_left_arrow |
report_stock_rule_left_arrow | ir.ui.view | qweb | New |
report_stock_rule_line |
report_stock_rule_line | ir.ui.view | qweb | New |
report_stock_rule_right_arrow |
report_stock_rule_right_arrow | ir.ui.view | qweb | New |
report_stock_rule_suspension_points |
report_stock_rule_suspension_points | ir.ui.view | qweb | New |
report_stock_rule_vertical_bar |
report_stock_rule_vertical_bar | ir.ui.view | qweb | New |
res_config_settings_view_form |
res.config.settings.view.form.inherit.stock | res.config.settings | xpath | Inherits base.res_config_settings_view_form |
search_product_lot_filter |
Production Lots Filter | stock.lot | search | New |
stock.report_return_slip |
stock.report_return_slip | ir.ui.view | qweb | New |
stock_inventory_adjustment_name_form_view |
stock.inventory.adjustment.name.form.view | stock.inventory.adjustment.name | form | New |
stock_inventory_conflict_form_view |
stock.inventory.conflict.form.view | stock.inventory.conflict | form | New |
stock_inventory_request_count_form_view |
stock.request.count.form.view | stock.request.count | form | New |
stock_location_route_form_view |
stock.location.route.form | stock.route | form | New |
stock_location_route_tree |
stock.location.route.tree | stock.route | tree | New |
stock_location_route_view_search |
stock.location.route.search | stock.route | search | New |
stock_location_view_form_editable |
stock.location.form.editable | stock.location | xpath | Inherits stock.view_location_form |
stock_location_view_tree2_editable |
stock.location.tree2.editable | stock.location | xpath | Inherits stock.view_location_tree2 |
stock_move_line_view_search |
stock.move.line.search | stock.move.line | search | New |
stock_package_destination_form_view |
stock.package.destination.view | stock.package.destination | form | New |
stock_package_type_form |
stock.package.type.form | stock.package.type | form | New |
stock_package_type_tree |
stock.package.type.tree | stock.package.type | tree | New |
stock_picking_calendar |
stock.picking.calendar | stock.picking | calendar | New |
stock_picking_kanban |
stock.picking.kanban | stock.picking | kanban | New |
stock_picking_type_kanban |
stock.picking.type.kanban | stock.picking.type | kanban | New |
stock_picking_view_activity |
stock.picking.view.activity | stock.picking | activity | New |
stock_product_search_form_view |
product.product.search.stock.form | product.product | xpath | Inherits product.product_search_form_view |
stock_putaway_list |
stock.putaway.rule.tree | stock.putaway.rule | tree | New |
stock_quant_relocate_view_form |
Stock Relocation | stock.quant.relocate | form | New |
stock_quant_view_graph |
stock.quant.graph | stock.quant | graph | New |
stock_reorder_report_search |
stock.warehouse.orderpoint.reorder.search | stock.warehouse.orderpoint | search | New |
stock_report_delivery_aggregated_move_lines |
stock_report_delivery_aggregated_move_lines | ir.ui.view | qweb | New |
stock_report_delivery_has_serial_move_line |
stock_report_delivery_has_serial_move_line | ir.ui.view | qweb | New |
stock_report_delivery_no_package_section_line |
stock_report_delivery_no_package_section_line | ir.ui.view | qweb | New |
stock_report_delivery_package_section_line |
stock_report_delivery_package_section_line | ir.ui.view | qweb | New |
stock_report_view_graph |
stock_report_view_graph | report.stock.quantity | graph | New |
stock_scrap_form_view |
stock.scrap.form | stock.scrap | form | New |
stock_scrap_form_view2 |
stock.scrap.form2 | stock.scrap | form | New |
stock_scrap_search_view |
stock.scrap.search | stock.scrap | search | New |
stock_scrap_tree_view |
stock.scrap.tree | stock.scrap | tree | New |
stock_scrap_view_kanban |
stock.scrap.kanban | stock.scrap | kanban | New |
stock_storage_category_capacity_tree |
stock.storage.category.capacity.tree | stock.storage.category.capacity | tree | New |
stock_storage_category_form |
stock.storage.category.form | stock.storage.category | form | New |
stock_storage_category_tree |
stock.storage.category.tree | stock.storage.category | tree | New |
stock_warehouse_view_search |
stock.warehouse.search | stock.warehouse | search | New |
stock_warn_insufficient_qty_form_view |
stock.warn.insufficient.qty | stock.warn.insufficient.qty | form | New |
stock_warn_insufficient_qty_scrap_form_view |
stock.warn.insufficient.qty.scrap | stock.warn.insufficient.qty.scrap | xpath | Inherits stock.stock_warn_insufficient_qty_form_view |
track_move_template |
track_move_template | ir.ui.view | qweb | New |
view_assign_serial_numbers |
stock_assign_serial_numbers | stock.assign.serial | form | New |
view_backorder_confirmation |
stock_backorder_confirmation | stock.backorder.confirmation | form | New |
view_change_product_quantity |
Change Product Quantity | stock.change.product.qty | form | New |
view_location_form |
stock.location.form | stock.location | form | New |
view_location_search |
stock.location.search | stock.location | search | New |
view_location_tree2 |
stock.location.tree | stock.location | tree | New |
view_move_form |
stock.move.form | stock.move | form | New |
view_move_graph |
stock.move.graph | stock.move | graph | New |
view_move_kandan |
stock.move.kanban | stock.move | kanban | New |
view_move_line_form |
stock.move.line.form | stock.move.line | form | New |
view_move_line_mobile_form |
stock.move.line.mobile.form | stock.move.line | xpath | Inherits stock.view_move_line_form |
view_move_line_tree |
stock.move.line.tree | stock.move.line | tree | New |
view_move_line_tree_detailed |
stock.move.line.tree.detailed | stock.move.line | tree | New |
view_move_pivot |
stock.move.pivot | stock.move | pivot | New |
view_move_search |
stock.move.search | stock.move | search | New |
view_move_tree |
stock.move.tree | stock.move | tree | New |
view_move_tree_receipt_picking |
stock.move.tree2 | stock.move | tree | New |
view_partner_stock_form |
res.partner.stock.property.form.inherit | res.partner | xpath | Inherits mail.res_partner_view_form_inherit_mail |
view_partner_stock_warnings_form |
res.partner.stock.warning | res.partner | page | Inherits base.view_partner_form |
view_picking_form |
stock.picking.form | stock.picking | form | New |
view_picking_internal_search |
stock.picking.internal.search | stock.picking | search | New |
view_picking_move_tree |
stock.picking.move.tree | stock.move | tree | New |
view_picking_type_form |
Operation Types | stock.picking.type | form | New |
view_picking_type_tree |
Operation types | stock.picking.type | tree | New |
view_pickingtype_filter |
stock.picking.type.filter | stock.picking.type | search | New |
view_procurement_compute_wizard |
Run Schedulers Manually | stock.scheduler.compute | form | New |
view_product_replenish |
Replenish | product.replenish | form | New |
view_production_lot_form |
stock.production.lot.form | stock.lot | form | New |
view_production_lot_kanban |
stock.production.lot.kanban | stock.lot | kanban | New |
view_production_lot_tree |
stock.production.lot.tree | stock.lot | tree | New |
view_putaway_search |
stock.putaway.rule.search | stock.putaway.rule | search | New |
view_quant_package_form |
stock.quant.package.form | stock.quant.package | form | New |
view_quant_package_kanban |
stock.quant.package.kanban | stock.quant.package | kanban | New |
view_quant_package_tree |
stock.quant.package.tree | stock.quant.package | tree | New |
view_removal |
product.removal.form | product.removal | form | New |
view_route_rule_form |
stock.rule.form | stock.rule | xpath | Inherits stock.view_stock_rule_form |
view_stock_move_line_detailed_operation_tree |
stock.move.line.operations.tree | stock.move.line | tree | New |
view_stock_move_line_kanban |
stock.move.line.kanban | stock.move.line | kanban | New |
view_stock_move_line_operation_tree |
stock.move.line.operations.tree | stock.move.line | tree | New |
view_stock_move_line_pivot |
stock.move.line.pivot | stock.move.line | pivot | New |
view_stock_move_operations |
stock.move.operations.form | stock.move | form | New |
view_stock_orderpoint_snooze |
Stock Orderpoint Snooze | stock.orderpoint.snooze | form | New |
view_stock_product_template_tree |
product.template.stock.tree.inherit | product.template | field | Inherits product.product_template_tree_view |
view_stock_product_tree |
product.stock.tree.inherit | product.product | field | Inherits product.product_product_tree_view |
view_stock_quant_form |
view.stock.quant.form | stock.quant | form | New |
view_stock_quant_form_editable |
stock.quant.form.editable | stock.quant | form | New |
view_stock_quant_pivot |
stock.quant.pivot | stock.quant | pivot | New |
view_stock_quant_tree |
stock.quant.tree | stock.quant | xpath | Inherits stock.view_stock_quant_tree_simple |
view_stock_quant_tree_editable |
stock.quant.tree.editable | stock.quant | tree | New |
view_stock_quant_tree_inventory_editable |
stock.quant.inventory.tree.editable | stock.quant | tree | New |
view_stock_quant_tree_simple |
stock.quant.tree | stock.quant | tree | New |
view_stock_quantity_history |
Inventory Report at Date | stock.quantity.history | form | New |
view_stock_replenishment_info |
Stock Replenishment Information | stock.replenishment.info | form | New |
view_stock_return_picking_form |
Return lines | stock.return.picking | form | New |
view_stock_rule_filter |
stock.rule.select | stock.rule | search | New |
view_stock_rule_form |
stock.rule.form | stock.rule | form | New |
view_stock_rule_tree |
stock.rule.tree | stock.rule | tree | New |
view_stock_rules_report |
Stock Rules Report | stock.rules.report | form | New |
view_stock_track_confirmation |
stock.track.confirmation.view.form | stock.track.confirmation | form | New |
view_stock_warehouse_orderpoint_kanban |
stock.warehouse.orderpoint.kanban | stock.warehouse.orderpoint | kanban | New |
view_template_property_form |
product.template.stock.property.form.inherit | product.template | xpath | Inherits product.product_template_form_view |
view_warehouse |
stock.warehouse | stock.warehouse | form | New |
view_warehouse_orderpoint_form |
stock.warehouse.orderpoint.form | stock.warehouse.orderpoint | form | New |
view_warehouse_orderpoint_tree_editable |
stock.warehouse.orderpoint.tree.editable | stock.warehouse.orderpoint | tree | New |
view_warehouse_tree |
stock.warehouse.tree | stock.warehouse | tree | New |
vpicktree |
stock.picking.tree | stock.picking | tree | New |
warehouse_orderpoint_search |
stock.warehouse.orderpoint.search | stock.warehouse.orderpoint | search | New |
type
Selection
ondelete={'weight': 'set default', 'location': 'set default', 'lot': 'set default', 'package': 'set default'}
selection_add=[('weight', 'Weighted Product'), ('location', 'Location'), ('lot', 'Lot'), ('package', 'Package')]
No public methods.
No new fields.
Public methods (0)No public methods.
label_quantity
Selection
default='lots'
help="If the UoM of a lot is not 'units', the lot will be considered as a unit and only one label will be printed for this lot."
required=True
string='Quantity to print'
args: [('lots', 'One per lot/SN'), ('units', 'One per unit')]
move_line_ids
Many2many → stock.move.line
print_format
Selection
default='4x12'
required=True
string='Format'
args: [('4x12', '4 x 12'), ('zpl', 'ZPL Labels')]
process(self)
label_type
Selection
default='products'
required=True
string='Labels to print'
args: [('products', 'Product Labels'), ('lots', 'Lot/SN Labels')]
picking_ids
Many2many → stock.picking
process(self)
move_type
Selection
default='direct'
required=True
string='Delivery Type'
args: [('direct', 'Partial'), ('one', 'All at once')]
name
Char
default=<expr>
required=True
args: 'Reference'
partner_id
Many2one → res.partner
stock_move_ids
One2many → stock.move
string='Related Stock Moves'
args: 'stock.move', 'group_id'
run(self, procurements, raise_user_error=True)
run_scheduler(self, use_new_cursor=False, company_id=False)
filter_for_stock_putaway_rule
Boolean
search='_search_filter_for_stock_putaway_rule'
store=False
args: 'stock.putaway.rule'
packaging_reserve_method
Selection
default='partial'
help='Reserve Only Full Packagings: will not reserve partial packagings. If customer orders 2 pallets of 1000 units each and you only have 1600 in stock, then only 1000 will be reserved\nReserve Partial Packagings: allow reserving partial packagings. If customer orders 2 pallets of 1000 units each and you only have 1600 in stock, then 1600 will be reserved'
string='Reserve Packagings'
args: [('full', 'Reserve Only Full Packagings'), ('partial', 'Reserve Partial Packagings')]
putaway_rule_ids
One2many → stock.putaway.rule
removal_strategy_id
Many2one → product.removal
help='Set a specific removal strategy that will be used regardless of the source location for this product category.\n\nFIFO: products/lots that were stocked first will be moved out first.\nLIFO: products/lots that were stocked last will be moved out first.\nCloset location: products/lots closest to the target location will be moved out first.\nFEFO: products/lots with the closest removal date will be moved out first (the availability of this method depends on the "Expiration Dates" setting).'
args: 'product.removal', 'Force Removal Strategy'
route_ids
Many2many → stock.route
domain=[('product_categ_selectable', '=', True)]
args: 'stock.route', 'stock_route_categ', 'categ_id', 'route_id', 'Routes'
total_route_ids
Many2many → stock.route
compute='_compute_total_route_ids'
readonly=True
search='_search_total_route_ids'
string='Total routes'
args: 'stock.route'
No public methods.
move_ids
Many2many → stock.move
move_quantity
Selection
default='custom'
required=True
string='Quantity to print'
args: [('move', 'Operation Quantities'), ('custom', 'Custom')]
print_format
Selection
ondelete={'zpl': 'set default', 'zplxprice': 'set default'}
selection_add=[('zpl', 'ZPL Labels'), ('zplxprice', 'ZPL Labels with price')]
No public methods.
package_type_id
Many2one → stock.package.type
route_ids
Many2many → stock.route
domain=[('packaging_selectable', '=', True)]
help='Depending on the modules installed, this will allow you to define the route of the product in this packaging: whether it will be bought, manufactured, replenished on order, etc.'
args: 'stock.route', 'stock_route_packaging', 'packaging_id', 'route_id', 'Routes'
No public methods.
No new fields.
Public methods (0)No public methods.
free_qty
Float
compute='_compute_quantities'
compute_sudo=False
digits='Product Unit of Measure'
help="Forecast quantity (computed as Quantity On Hand - reserved quantity)\nIn a context with a single Stock Location, this includes goods stored in this location, or any of its children.\nIn a context with a single Warehouse, this includes goods stored in the Stock Location of this Warehouse, or any of its children.\nOtherwise, this includes goods stored in any Stock Location with 'internal' type."
search='_search_free_qty'
args: 'Free To Use Quantity '
incoming_qty
Float
compute='_compute_quantities'
compute_sudo=False
digits='Product Unit of Measure'
help="Quantity of planned incoming products.\nIn a context with a single Stock Location, this includes goods arriving to this Location, or any of its children.\nIn a context with a single Warehouse, this includes goods arriving to the Stock Location of this Warehouse, or any of its children.\nOtherwise, this includes goods arriving to any Stock Location with 'internal' type."
search='_search_incoming_qty'
args: 'Incoming'
lot_properties_definition
PropertiesDefinition
nbr_moves_in
Integer
compute='_compute_nbr_moves'
compute_sudo=False
help='Number of incoming stock moves in the past 12 months'
nbr_moves_out
Integer
compute='_compute_nbr_moves'
compute_sudo=False
help='Number of outgoing stock moves in the past 12 months'
nbr_reordering_rules
Integer
compute='_compute_nbr_reordering_rules'
compute_sudo=False
args: 'Reordering Rules'
orderpoint_ids
One2many → stock.warehouse.orderpoint
outgoing_qty
Float
compute='_compute_quantities'
compute_sudo=False
digits='Product Unit of Measure'
help="Quantity of planned outgoing products.\nIn a context with a single Stock Location, this includes goods leaving this Location, or any of its children.\nIn a context with a single Warehouse, this includes goods leaving the Stock Location of this Warehouse, or any of its children.\nOtherwise, this includes goods leaving any Stock Location with 'internal' type."
search='_search_outgoing_qty'
args: 'Outgoing'
putaway_rule_ids
One2many → stock.putaway.rule
qty_available
Float
compute='_compute_quantities'
compute_sudo=False
digits='Product Unit of Measure'
help="Current quantity of products.\nIn a context with a single Stock Location, this includes goods stored at this Location, or any of its children.\nIn a context with a single Warehouse, this includes goods stored in the Stock Location of this Warehouse, or any of its children.\nstored in the Stock Location of the Warehouse of this Shop, or any of its children.\nOtherwise, this includes goods stored in any Stock Location with 'internal' type."
search='_search_qty_available'
args: 'Quantity On Hand'
reordering_max_qty
Float
compute='_compute_nbr_reordering_rules'
compute_sudo=False
reordering_min_qty
Float
compute='_compute_nbr_reordering_rules'
compute_sudo=False
show_forecasted_qty_status_button
Boolean
compute='_compute_show_qty_status_button'
show_on_hand_qty_status_button
Boolean
compute='_compute_show_qty_status_button'
stock_move_ids
One2many → stock.move
stock_quant_ids
One2many → stock.quant
storage_category_capacity_ids
One2many → stock.storage.category.capacity
valid_ean
Boolean
compute='_compute_valid_ean'
args: 'Barcode is valid EAN'
virtual_available
Float
compute='_compute_quantities'
compute_sudo=False
digits='Product Unit of Measure'
help="Forecast quantity (computed as Quantity On Hand - Outgoing + Incoming)\nIn a context with a single Stock Location, this includes goods stored in this location, or any of its children.\nIn a context with a single Warehouse, this includes goods stored in the Stock Location of this Warehouse, or any of its children.\nOtherwise, this includes goods stored in any Stock Location with 'internal' type."
search='_search_virtual_available'
args: 'Forecasted Quantity'
action_open_product_lot(self)
action_open_quants(self)
action_product_forecast_report(self)
action_update_quantity_on_hand(self)
action_view_orderpoints(self)
action_view_related_putaway_rules(self)
action_view_routes(self)
action_view_stock_move_lines(self)
action_view_storage_category_capacity(self)
fields_get(self, allfields=None, attributes=None)
filter_has_routes(self)
get_components(self)
view_header_get(self, view_id, view_type)
write(self, values)
method
Char
help='FIFO, LIFO...'
required=True
translate=True
args: 'Method'
name
Char
required=True
translate=True
args: 'Name'
No public methods.
allowed_route_ids
Many2many → stock.route
compute='_compute_allowed_route_ids'
args: 'stock.route'
company_id
Many2one → res.company
date_planned
Datetime
compute='_compute_date_planned'
help='Date at which the replenishment should take place.'
precompute=True
readonly=False
required=True
store=True
args: 'Scheduled Date'
forecast_uom_id
Many2one
related='product_id.uom_id'
forecasted_quantity
Float
compute='_compute_forecasted_quantity'
string='Forecasted Quantity'
product_has_variants
Boolean
default=False
required=True
args: 'Has variants'
product_id
Many2one → product.product
required=True
string='Product'
args: 'product.product'
product_tmpl_id
Many2one → product.template
required=True
string='Product Template'
args: 'product.template'
product_uom_category_id
Many2one → uom.category
readonly=True
related='product_id.uom_id.category_id'
required=True
args: 'uom.category'
product_uom_id
Many2one → uom.uom
required=True
string='Unity of measure'
args: 'uom.uom'
quantity
Float
default=1
required=True
args: 'Quantity'
route_id
Many2one → stock.route
check_company=True
help="Apply specific route for the replenishment instead of product's default routes."
string='Preferred Route'
args: 'stock.route'
warehouse_id
Many2one → stock.warehouse
check_company=True
required=True
string='Warehouse'
args: 'stock.warehouse'
default_get(self, fields)
launch_replenishment(self)
description_picking
Text
translate=True
args: 'Description on Picking'
description_pickingin
Text
translate=True
args: 'Description on Receptions'
description_pickingout
Text
translate=True
args: 'Description on Delivery Orders'
detailed_type
Selection
ondelete={'product': 'set consu'}
selection_add=[('product', 'Storable Product')]
tracking=True
has_available_route_ids
Boolean
compute='_compute_has_available_route_ids'
default=<expr>
args: 'Routes can be selected on this product'
incoming_qty
Float
compute='_compute_quantities'
compute_sudo=False
digits='Product Unit of Measure'
search='_search_incoming_qty'
args: 'Incoming'
location_id
Many2one → stock.location
store=False
args: 'stock.location', 'Location'
nbr_moves_in
Integer
compute='_compute_nbr_moves'
compute_sudo=False
help='Number of incoming stock moves in the past 12 months'
nbr_moves_out
Integer
compute='_compute_nbr_moves'
compute_sudo=False
help='Number of outgoing stock moves in the past 12 months'
nbr_reordering_rules
Integer
compute='_compute_nbr_reordering_rules'
compute_sudo=False
args: 'Reordering Rules'
outgoing_qty
Float
compute='_compute_quantities'
compute_sudo=False
digits='Product Unit of Measure'
search='_search_outgoing_qty'
args: 'Outgoing'
property_stock_inventory
Many2one → stock.location
check_company=True
company_dependent=True
domain="[('usage', '=', 'inventory'), '|', ('company_id', '=', False), ('company_id', '=', allowed_company_ids[0])]"
help='This stock location will be used, instead of the default one, as the source location for stock moves generated when you do an inventory.'
args: 'stock.location', 'Inventory Location'
property_stock_production
Many2one → stock.location
check_company=True
company_dependent=True
domain="[('usage', '=', 'production'), '|', ('company_id', '=', False), ('company_id', '=', allowed_company_ids[0])]"
help='This stock location will be used, instead of the default one, as the source location for stock moves generated by manufacturing orders.'
args: 'stock.location', 'Production Location'
qty_available
Float
compute='_compute_quantities'
compute_sudo=False
digits='Product Unit of Measure'
search='_search_qty_available'
args: 'Quantity On Hand'
reordering_max_qty
Float
compute='_compute_nbr_reordering_rules'
compute_sudo=False
reordering_min_qty
Float
compute='_compute_nbr_reordering_rules'
compute_sudo=False
responsible_id
Many2one → res.users
check_company=True
company_dependent=True
default=<expr>
help='This user will be responsible of the next activities related to logistic operations for this product.'
string='Responsible'
args: 'res.users'
route_from_categ_ids
Many2many
related='categ_id.total_route_ids'
related_sudo=False
relation='stock.route'
string='Category Routes'
route_ids
Many2many → stock.route
depends_context=['company', 'allowed_companies']
domain=[('product_selectable', '=', True)]
help='Depending on the modules installed, this will allow you to define the route of the product: whether it will be bought, manufactured, replenished on order, etc.'
args: 'stock.route', 'stock_route_product', 'product_id', 'route_id', 'Routes'
sale_delay
Integer
default=0
help="Delivery lead time, in days. It's the number of days, promised to the customer, between the confirmation of the sales order and the delivery."
args: 'Customer Lead Time'
show_forecasted_qty_status_button
Boolean
compute='_compute_show_qty_status_button'
show_on_hand_qty_status_button
Boolean
compute='_compute_show_qty_status_button'
tracking
Selection
compute='_compute_tracking'
default='none'
help='Ensure the traceability of a storable product in your warehouse.'
precompute=True
readonly=False
required=True
store=True
string='Tracking'
args: [('serial', 'By Unique Serial Number'), ('lot', 'By Lots'), ('none', 'No Tracking')]
type
Selection
ondelete={'product': 'set consu'}
selection_add=[('product', 'Storable Product')]
virtual_available
Float
compute='_compute_quantities'
compute_sudo=False
digits='Product Unit of Measure'
search='_search_virtual_available'
args: 'Forecasted Quantity'
warehouse_id
Many2one → stock.warehouse
store=False
args: 'stock.warehouse', 'Warehouse'
action_open_product_lot(self)
action_open_quants(self)
action_open_routes_diagram(self)
action_product_tmpl_forecast_report(self)
action_update_quantity_on_hand(self)
action_view_orderpoints(self)
action_view_related_putaway_rules(self)
action_view_stock_move_lines(self)
action_view_storage_category_capacity(self)
copy(self, default=None)
write(self, vals)
No new fields.
Public methods (0)No public methods.
No new fields.
Public methods (0)No public methods.
company_id
Many2one → res.company
readonly=True
args: 'res.company'
date
Date
readonly=True
string='Date'
product_id
Many2one → product.product
readonly=True
string='Product'
args: 'product.product'
product_qty
Float
readonly=True
string='Quantity'
product_tmpl_id
Many2one → product.template
readonly=True
args: 'product.template'
state
Selection
readonly=True
string='State'
args: [('forecast', 'Forecasted Stock'), ('in', 'Forecasted Receipts'), ('out', 'Forecasted Deliveries')]
warehouse_id
Many2one → stock.warehouse
readonly=True
args: 'stock.warehouse'
init(self)
No new fields.
Public methods (3)action_assign(self, move_ids, qtys, in_ids)
action_unassign(self, move_id, qty, in_ids)
get_report_data(self, docids, data)
No new fields.
Public methods (0)No public methods.
annual_inventory_day
Integer
default=31
help='Day of the month when the annual inventory should occur. If zero or negative, then the first day of the month will be selected instead.\n If greater than the last day of a month, then the last day of the month will be selected instead.'
string='Day of the month'
annual_inventory_month
Selection
default='12'
help='Annual inventory month for products not in a location with a cyclic inventory date. Set to no month if no automatic annual inventory.'
string='Annual Inventory Month'
args: [('1', 'January'), ('2', 'February'), ('3', 'March'), ('4', 'April'), ('5', 'May'), ('6', 'June'), ('7', 'July'), ('8', 'August'), ('9', 'September'), ('10', 'October'), ('11', 'November'), ('12', 'December')]
internal_transit_location_id
Many2one → stock.location
check_company=True
ondelete='restrict'
args: 'stock.location', 'Internal Transit Location'
stock_mail_confirmation_template_id
Many2one → mail.template
default=_default_confirmation_mail_template
domain="[('model', '=', 'stock.picking')]"
help='Email sent to the customer once the order is done.'
string='Email Template confirmation picking'
args: 'mail.template'
stock_move_email_validation
Boolean
default=False
args: 'Email Confirmation picking'
create(self, vals_list)
create_missing_inventory_loss_location(self)
create_missing_production_location(self)
create_missing_scrap_location(self)
create_missing_scrap_sequence(self)
create_missing_transit_location(self)
create_missing_warehouse(self)
annual_inventory_day
Integer
readonly=False
related='company_id.annual_inventory_day'
annual_inventory_month
Selection
readonly=False
related='company_id.annual_inventory_month'
group_lot_on_delivery_slip
Boolean
group='base.group_user,base.group_portal'
implied_group='stock.group_lot_on_delivery_slip'
args: 'Display Lots & Serial Numbers on Delivery Slips'
group_stock_adv_location
Boolean
help='Add and customize route operations to process product moves in your warehouse(s): e.g. unload > quality control > stock for incoming products, pick > pack > ship for outgoing products. \n You can also set putaway strategies on warehouse locations in order to send incoming products into specific child locations straight away (e.g. specific bins, racks).'
implied_group='stock.group_adv_location'
args: 'Multi-Step Routes'
group_stock_lot_print_gs1
Boolean
implied_group='stock.group_stock_lot_print_gs1'
args: 'Print GS1 Barcodes for Lots & Serial Numbers'
group_stock_multi_locations
Boolean
help='Store products in specific locations of your warehouse (e.g. bins, racks) and to track inventory accordingly.'
implied_group='stock.group_stock_multi_locations'
args: 'Storage Locations'
group_stock_picking_wave
Boolean
help='Group your move operations in wave transfer to process them together'
implied_group='stock.group_stock_picking_wave'
args: 'Wave Transfers'
group_stock_production_lot
Boolean
group='base.group_user,base.group_portal'
implied_group='stock.group_production_lot'
args: 'Lots & Serial Numbers'
group_stock_reception_report
Boolean
implied_group='stock.group_reception_report'
args: 'Reception Report'
group_stock_sign_delivery
Boolean
implied_group='stock.group_stock_sign_delivery'
args: 'Signature'
group_stock_storage_categories
Boolean
implied_group='stock.group_stock_storage_categories'
args: 'Storage Categories'
group_stock_tracking_lot
Boolean
implied_group='stock.group_tracking_lot'
args: 'Packages'
group_stock_tracking_owner
Boolean
implied_group='stock.group_tracking_owner'
args: 'Consignment'
group_warning_stock
Boolean
implied_group='stock.group_warning_stock'
args: 'Warnings for Stock'
module_delivery
Boolean
module_delivery_bpost
Boolean
module_delivery_dhl
Boolean
module_delivery_easypost
Boolean
module_delivery_fedex
Boolean
module_delivery_sendcloud
Boolean
module_delivery_shiprocket
Boolean
module_delivery_ups
Boolean
module_delivery_usps
Boolean
module_product_expiry
Boolean
help='Track following dates on lots & serial numbers: best before, removal, end of life, alert. \n Such dates are set automatically at lot/serial number creation based on values set on the product (in days).'
args: 'Expiration Dates'
module_quality_control
Boolean
module_quality_control_worksheet
Boolean
module_stock_barcode
Boolean
module_stock_dropshipping
Boolean
module_stock_picking_batch
Boolean
module_stock_sms
Boolean
stock_move_email_validation
Boolean
readonly=False
related='company_id.stock_move_email_validation'
onchange_adv_location(self)
set_values(self)
picking_warn
Selection
default='no-message'
help=WARNING_HELP
args: WARNING_MESSAGE, 'Stock Picking'
picking_warn_msg
Text
property_stock_customer
Many2one → stock.location
check_company=True
company_dependent=True
domain="['|', ('company_id', '=', False), ('company_id', '=', allowed_company_ids[0])]"
help='The stock location used as destination when sending goods to this contact.'
string='Customer Location'
args: 'stock.location'
property_stock_supplier
Many2one → stock.location
check_company=True
company_dependent=True
domain="['|', ('company_id', '=', False), ('company_id', '=', allowed_company_ids[0])]"
help='The stock location used as source when receiving goods from this contact.'
string='Vendor Location'
args: 'stock.location'
No public methods.
No new fields.
Public methods (0)No public methods.
move_id
Many2one → stock.move
next_serial_count
Integer
default=_default_next_serial_count
required=True
args: 'Number of SN'
next_serial_number
Char
required=True
args: 'First SN'
product_id
Many2one → product.product
related='move_id.product_id'
args: 'product.product', 'Product'
generate_serial_numbers(self)
backorder_confirmation_line_ids
One2many → stock.backorder.confirmation.line
string='Backorder Confirmation Lines'
args: 'stock.backorder.confirmation.line', 'backorder_confirmation_id'
pick_ids
Many2many → stock.picking
show_transfers
Boolean
default_get(self, fields)
process(self)
process_cancel_backorder(self)
backorder_confirmation_id
Many2one → stock.backorder.confirmation
picking_id
Many2one → stock.picking
to_backorder
Boolean
No public methods.
new_quantity
Float
default=1
digits='Product Unit of Measure'
help='This quantity is expressed in the Default Unit of Measure of the product.'
required=True
args: 'New Quantity on Hand'
product_id
Many2one → product.product
required=True
args: 'product.product', 'Product'
product_tmpl_id
Many2one → product.template
required=True
args: 'product.template', 'Template'
product_uom_id
Many2one
related='product_tmpl_id.uom_id'
product_variant_count
Integer
related='product_tmpl_id.product_variant_count'
args: 'Variant Count'
change_product_qty(self)
check_new_quantity(self)
No new fields.
Public methods (3)action_reserve_linked_picks(self, move_id)
action_unreserve_linked_picks(self, move_id)
get_report_values(self, docids, data=None)
No new fields.
Public methods (1)get_report_values(self, docids, data=None)
inventory_adjustment_name
Char
default='Quantity Updated'
string='Inventory Reason'
quant_ids
Many2many → stock.quant
action_apply(self)
quant_ids
Many2many → stock.quant
string='Quants'
args: 'stock.quant', 'stock_conflict_quant_rel'
quant_to_fix_ids
Many2many → stock.quant
string='Conflicts'
args: 'stock.quant'
action_keep_counted_quantity(self)
action_keep_difference(self)
quant_ids
Many2many → stock.quant
action_reset(self)
action_set(self)
No new fields.
Public methods (0)No public methods.
active
Boolean
default=True
help='By unchecking the active field, you may hide a location without deleting it.'
args: 'Active'
barcode
Char
copy=False
args: 'Barcode'
child_ids
One2many → stock.location
child_internal_location_ids
Many2many → stock.location
compute='_compute_child_internal_location_ids'
help="This location (if it's internal) and all its descendants filtered by type=Internal."
recursive=True
string='Internal locations among descendants'
args: 'stock.location'
comment
Html
company_id
Many2one → res.company
default=<expr>
help='Let this field empty if this location is shared between companies'
index=True
args: 'res.company', 'Company'
complete_name
Char
compute='_compute_complete_name'
recursive=True
store=True
args: 'Full Location Name'
cyclic_inventory_frequency
Integer
default=0
help=' When different than 0, inventory count date for products stored at this location will be automatically set at the defined frequency.'
args: 'Inventory Frequency (Days)'
forecast_weight
Float
compute='_compute_weight'
args: 'Forecasted Weight'
incoming_move_line_ids
One2many → stock.move.line
last_inventory_date
Date
help='Date of the last inventory at this location.'
readonly=True
args: 'Last Effective Inventory'
location_id
Many2one → stock.location
check_company=True
help="The parent location that includes this location. Example : The 'Dispatch Zone' is the 'Gate 1' parent location."
index=True
ondelete='cascade'
args: 'stock.location', 'Parent Location'
name
Char
required=True
args: 'Location Name'
net_weight
Float
compute='_compute_weight'
args: 'Net Weight'
next_inventory_date
Date
compute='_compute_next_inventory_date'
help='Date for next planned inventory based on cyclic schedule.'
store=True
args: 'Next Expected Inventory'
outgoing_move_line_ids
One2many → stock.move.line
parent_path
Char
index=True
unaccent=False
posx
Integer
default=0
help='Optional localization details, for information purpose only'
args: 'Corridor (X)'
posy
Integer
default=0
help='Optional localization details, for information purpose only'
args: 'Shelves (Y)'
posz
Integer
default=0
help='Optional localization details, for information purpose only'
args: 'Height (Z)'
putaway_rule_ids
One2many → stock.putaway.rule
quant_ids
One2many → stock.quant
removal_strategy_id
Many2one → product.removal
help='Defines the default method used for suggesting the exact location (shelf) where to take the products from, which lot etc. for this location. This method can be enforced at the product category level, and a fallback is made on the parent locations if none is set here.\n\nFIFO: products/lots that were stocked first will be moved out first.\nLIFO: products/lots that were stocked last will be moved out first.\nCloset location: products/lots closest to the target location will be moved out first.\nFEFO: products/lots with the closest removal date will be moved out first (the availability of this method depends on the "Expiration Dates" setting).'
args: 'product.removal', 'Removal Strategy'
replenish_location
Boolean
compute='_compute_replenish_location'
copy=False
help='Activate this function to get all quantities to replenish at this particular location'
readonly=False
store=True
args: 'Replenish Location'
return_location
Boolean
help='Check this box to allow using this location as a return location.'
args: 'Is a Return Location?'
scrap_location
Boolean
default=False
help='Check this box to allow using this location to put scrapped/damaged goods.'
args: 'Is a Scrap Location?'
storage_category_id
Many2one → stock.storage.category
check_company=True
string='Storage Category'
args: 'stock.storage.category'
usage
Selection
default='internal'
help="* Vendor Location: Virtual location representing the source location for products coming from your vendors\n* View: Virtual location used to create a hierarchical structures for your warehouse, aggregating its child locations ; can't directly contain products\n* Internal Location: Physical locations inside your own warehouses,\n* Customer Location: Virtual location representing the destination location for products sent to your customers\n* Inventory Loss: Virtual location serving as counterpart for inventory operations used to correct stock levels (Physical inventories)\n* Production: Virtual counterpart location for production operations: this location consumes the components and produces finished products\n* Transit Location: Counterpart location that should be used in inter-company or inter-warehouses operations"
index=True
required=True
string='Location Type'
args: [('supplier', 'Vendor Location'), ('view', 'View'), ('internal', 'Internal Location'), ('customer', 'Customer Location'), ('inventory', 'Inventory Loss'), ('production', 'Production'), ('transit', 'Transit Location')]
warehouse_id
Many2one → stock.warehouse
compute='_compute_warehouse_id'
store=True
args: 'stock.warehouse'
warehouse_view_ids
One2many → stock.warehouse
readonly=True
args: 'stock.warehouse', 'view_location_id'
copy(self, default=None)
create(self, vals_list)
default_get(self, fields)
name_create(self, name)
should_bypass_reservation(self)
write(self, values)
company_id
Many2one → res.company
default=<expr>
index=True
required=True
args: 'res.company', 'Company'
delivery_count
Integer
compute='_compute_delivery_ids'
args: 'Delivery order count'
delivery_ids
Many2many → stock.picking
compute='_compute_delivery_ids'
string='Transfers'
args: 'stock.picking'
display_complete
Boolean
compute='_compute_display_complete'
last_delivery_partner_id
Many2one → res.partner
compute='_compute_last_delivery_partner_id'
args: 'res.partner'
location_id
Many2one → stock.location
compute='_compute_single_location'
domain="[('usage', '!=', 'view')]"
group_expand='_read_group_location_id'
inverse='_set_single_location'
readonly=False
store=True
args: 'stock.location', 'Location'
lot_properties
Properties
copy=True
definition='product_id.lot_properties_definition'
args: 'Properties'
name
Char
default=<expr>
help='Unique Lot/Serial Number'
index='trigram'
required=True
args: 'Lot/Serial Number'
note
Html
string='Description'
product_id
Many2one → product.product
check_company=True
domain="[('tracking', '!=', 'none'), ('type', '=', 'product')] + ([('product_tmpl_id', '=', context['default_product_tmpl_id'])] if context.get('default_product_tmpl_id') else [])"
index=True
required=True
args: 'product.product', 'Product'
product_qty
Float
compute='_product_qty'
search='_search_product_qty'
args: 'On Hand Quantity'
product_uom_id
Many2one → uom.uom
related='product_id.uom_id'
store=True
args: 'uom.uom', 'Unit of Measure'
quant_ids
One2many → stock.quant
readonly=True
args: 'stock.quant', 'lot_id', 'Quants'
ref
Char
help="Internal reference number in case it differs from the manufacturer's lot/serial number"
args: 'Internal Reference'
action_lot_open_quants(self)
action_lot_open_transfers(self)
copy(self, default=None)
create(self, vals_list)
generate_lot_names(self, first_lot, count)
write(self, vals)
No new fields.
Public methods (0)No public methods.
additional
Boolean
default=False
args: "Whether the move was added after the picking's confirmation"
availability
Float
compute='_compute_product_availability'
help='Quantity in stock that can still be reserved for this move'
readonly=True
args: 'Forecasted Quantity'
company_id
Many2one → res.company
default=<expr>
index=True
required=True
args: 'res.company', 'Company'
date
Datetime
default=fields.Datetime.now
help='Scheduled date until move is done, then date of actual move processing'
index=True
required=True
args: 'Date Scheduled'
date_deadline
Datetime
copy=False
help='Date Promise to the customer on the top level document (SO/PO)'
readonly=True
args: 'Deadline'
delay_alert_date
Datetime
compute='_compute_delay_alert_date'
help='Process at this date to be on time'
store=True
args: 'Delay Alert Date'
description_picking
Text
display_assign_serial
Boolean
compute='_compute_display_assign_serial'
display_import_lot
Boolean
compute='_compute_display_assign_serial'
forecast_availability
Float
compute='_compute_forecast_information'
compute_sudo=True
digits='Product Unit of Measure'
args: 'Forecast Availability'
forecast_expected_date
Datetime
compute='_compute_forecast_information'
compute_sudo=True
args: 'Forecasted Expected date'
group_id
Many2one → procurement.group
default=_default_group_id
index=True
args: 'procurement.group', 'Procurement Group'
has_tracking
Selection
related='product_id.tracking'
string='Product with Tracking'
is_initial_demand_editable
Boolean
compute='_compute_is_initial_demand_editable'
args: 'Is initial demand editable'
is_inventory
Boolean
is_locked
Boolean
compute='_compute_is_locked'
readonly=True
is_quantity_done_editable
Boolean
compute='_compute_is_quantity_done_editable'
args: 'Is quantity done editable'
location_dest_id
Many2one → stock.location
auto_join=True
check_company=True
help='Location where the system will stock the finished products.'
index=True
required=True
args: 'stock.location', 'Destination Location'
location_dest_usage
Selection
related='location_dest_id.usage'
string='Destination Location Type'
location_id
Many2one → stock.location
auto_join=True
check_company=True
help='Sets a location if you produce at a fixed location. This can be a partner location if you subcontract the manufacturing operations.'
index=True
required=True
args: 'stock.location', 'Source Location'
location_usage
Selection
related='location_id.usage'
string='Source Location Type'
lot_ids
Many2many → stock.lot
compute='_compute_lot_ids'
inverse='_set_lot_ids'
readonly=False
string='Serial Numbers'
args: 'stock.lot'
move_dest_ids
Many2many → stock.move
copy=False
help='Optional: next stock move when chaining them'
args: 'stock.move', 'stock_move_move_rel', 'move_orig_id', 'move_dest_id', 'Destination Moves'
move_line_ids
One2many → stock.move.line
move_lines_count
Integer
compute='_compute_move_lines_count'
move_orig_ids
Many2many → stock.move
copy=False
help='Optional: previous stock move when chaining them'
args: 'stock.move', 'stock_move_move_rel', 'move_dest_id', 'move_orig_id', 'Original Move'
name
Char
required=True
args: 'Description'
next_serial
Char
next_serial_count
Integer
orderpoint_id
Many2one → stock.warehouse.orderpoint
index=True
args: 'stock.warehouse.orderpoint', 'Original Reordering Rule'
origin
Char
origin_returned_move_id
Many2one → stock.move
check_company=True
copy=False
help='Move that created the return move'
index=True
args: 'stock.move', 'Origin return move'
package_level_id
Many2one → stock.package_level
check_company=True
copy=False
args: 'stock.package_level', 'Package Level'
partner_id
Many2one → res.partner
compute='_compute_partner_id'
help='Optional address where goods are to be delivered, specifically used for allotment'
index='btree_not_null'
readonly=False
store=True
args: 'res.partner', 'Destination Address '
picked
Boolean
compute='_compute_picked'
copy=False
default=False
help="This checkbox is just indicative, it doesn't validate or generate any product moves."
inverse='_inverse_picked'
readonly=False
store=True
args: 'Picked'
picking_code
Selection
readonly=True
related='picking_id.picking_type_id.code'
picking_id
Many2one → stock.picking
check_company=True
index=True
args: 'stock.picking', 'Transfer'
picking_type_entire_packs
Boolean
readonly=True
related='picking_type_id.show_entire_packs'
picking_type_id
Many2one → stock.picking.type
check_company=True
compute='_compute_picking_type_id'
readonly=False
store=True
args: 'stock.picking.type', 'Operation Type'
price_unit
Float
copy=False
args: 'Unit Price'
priority
Selection
compute='_compute_priority'
default='0'
store=True
args: PROCUREMENT_PRIORITIES, 'Priority'
procure_method
Selection
copy=False
default='make_to_stock'
help='By default, the system will take from the stock in the source location and passively wait for availability. The other possibility allows you to directly create a procurement on the source location (and thus ignore its current stock) to gather products. If we want to chain moves and have this one to wait for the previous, this second option should be chosen.'
required=True
string='Supply Method'
args: [('make_to_stock', 'Default: Take From Stock'), ('make_to_order', 'Advanced: Apply Procurement Rules')]
product_id
Many2one → product.product
check_company=True
domain="[('type', 'in', ['product', 'consu'])]"
index=True
required=True
args: 'product.product', 'Product'
product_packaging_id
Many2one → product.packaging
check_company=True
domain="[('product_id', '=', product_id)]"
args: 'product.packaging', 'Packaging'
product_packaging_qty
Float
compute='_compute_product_packaging_qty'
string='Reserved Packaging Quantity'
product_packaging_quantity
Float
compute='_compute_product_packaging_quantity'
string='Done Packaging Quantity'
product_qty
Float
compute='_compute_product_qty'
compute_sudo=True
digits=0
help='Quantity in the default UoM of the product'
inverse='_set_product_qty'
store=True
args: 'Real Quantity'
product_tmpl_id
Many2one → product.template
related='product_id.product_tmpl_id'
args: 'product.template', 'Product Template'
product_type
Selection
readonly=True
related='product_id.detailed_type'
product_uom
Many2one → uom.uom
compute='_compute_product_uom'
domain="[('category_id', '=', product_uom_category_id)]"
precompute=True
readonly=False
required=True
store=True
args: 'uom.uom', 'UoM'
product_uom_category_id
Many2one
related='product_id.uom_id.category_id'
product_uom_qty
Float
default=0
digits='Product Unit of Measure'
help='This is the quantity of product that is planned to be moved.Lowering this quantity does not generate a backorder.Changing this quantity on assigned moves affects the product reservation, and should be done with care.'
required=True
args: 'Demand'
propagate_cancel
Boolean
default=True
help='If checked, when this move is cancelled, cancel the linked move too'
args: 'Propagate cancel and split'
quantity
Float
compute='_compute_quantity'
digits='Product Unit of Measure'
inverse='_set_quantity'
store=True
args: 'Quantity'
reference
Char
compute='_compute_reference'
store=True
string='Reference'
reservation_date
Date
compute='_compute_reservation_date'
help='Computes when a move should be reserved'
store=True
args: 'Date to Reserve'
restrict_partner_id
Many2one → res.partner
check_company=True
index='btree_not_null'
args: 'res.partner', 'Owner '
returned_move_ids
One2many → stock.move
help='Optional: all returned moves created from this move'
args: 'stock.move', 'origin_returned_move_id', 'All returned moves'
route_ids
Many2many → stock.route
help='Preferred route'
args: 'stock.route', 'stock_route_move', 'move_id', 'route_id', 'Destination route'
rule_id
Many2one → stock.rule
check_company=True
help='The stock rule that created this stock move'
ondelete='restrict'
args: 'stock.rule', 'Stock Rule'
scrap_id
Many2one → stock.scrap
check_company=True
readonly=True
args: 'stock.scrap', 'Scrap operation'
scrapped
Boolean
readonly=True
related='location_dest_id.scrap_location'
store=True
args: 'Scrapped'
sequence
Integer
default=10
args: 'Sequence'
show_details_visible
Boolean
compute='_compute_show_details_visible'
args: 'Details Visible'
show_lots_m2o
Boolean
compute='_compute_show_info'
args: 'Show lot_id'
show_lots_text
Boolean
compute='_compute_show_info'
args: 'Show lot_name'
show_operations
Boolean
related='picking_id.picking_type_id.show_operations'
show_quant
Boolean
compute='_compute_show_info'
args: 'Show Quant'
show_reserved
Boolean
compute='_compute_show_reserved'
state
Selection
copy=False
default='draft'
help="* New: The stock move is created but not confirmed.\n* Waiting Another Move: A linked stock move should be done before this one.\n* Waiting Availability: The stock move is confirmed but the product can't be reserved.\n* Available: The product of the stock move is reserved.\n* Done: The product has been transferred and the transfer has been confirmed."
index=True
readonly=True
string='Status'
args: [('draft', 'New'), ('waiting', 'Waiting Another Move'), ('confirmed', 'Waiting Availability'), ('partially_available', 'Partially Available'), ('assigned', 'Available'), ('done', 'Done'), ('cancel', 'Cancelled')]
warehouse_id
Many2one → stock.warehouse
help='the warehouse to consider for the route selection on the next procurement (if any).'
args: 'stock.warehouse', 'Warehouse'
action_assign_serial(self)
action_generate_lot_line_vals(self, context, mode, first_lot, count, lot_text)
action_open_reference(self)
action_product_forecast_report(self)
action_show_details(self)
create(self, vals_list)
default_get(self, fields_list)
init(self)
split_lots(self, lots)
unlink(self)
write(self, vals)
company_id
Many2one → res.company
index=True
readonly=True
required=True
string='Company'
args: 'res.company'
consume_line_ids
Many2many → stock.move.line
date
Datetime
default=fields.Datetime.now
required=True
args: 'Date'
description_picking
Text
string='Description picking'
is_inventory
Boolean
related='move_id.is_inventory'
is_locked
Boolean
readonly=True
related='move_id.is_locked'
location_dest_id
Many2one → stock.location
check_company=True
compute='_compute_location_id'
domain="[('usage', '!=', 'view')]"
precompute=True
readonly=False
required=True
store=True
args: 'stock.location', 'To'
location_dest_usage
Selection
related='location_dest_id.usage'
string='Destination Location Type'
location_id
Many2one → stock.location
check_company=True
compute='_compute_location_id'
domain="[('usage', '!=', 'view')]"
precompute=True
readonly=False
required=True
store=True
args: 'stock.location', 'From'
location_usage
Selection
related='location_id.usage'
string='Source Location Type'
lot_id
Many2one → stock.lot
check_company=True
domain="[('product_id', '=', product_id)]"
args: 'stock.lot', 'Lot/Serial Number'
lot_name
Char
lots_visible
Boolean
compute='_compute_lots_visible'
move_id
Many2one → stock.move
check_company=True
index=True
args: 'stock.move', 'Stock Operation'
origin
Char
related='move_id.origin'
string='Source'
owner_id
Many2one → res.partner
check_company=True
help='When validating the transfer, the products will be taken from this owner.'
index='btree_not_null'
args: 'res.partner', 'From Owner'
package_id
Many2one → stock.quant.package
check_company=True
domain="[('location_id', '=', location_id)]"
ondelete='restrict'
args: 'stock.quant.package', 'Source Package'
package_level_id
Many2one → stock.package_level
check_company=True
args: 'stock.package_level', 'Package Level'
picked
Boolean
compute='_compute_picked'
copy=False
readonly=False
store=True
args: 'Picked'
picking_code
Selection
readonly=True
related='picking_type_id.code'
picking_id
Many2one → stock.picking
auto_join=True
check_company=True
help='The stock operation where the packing has been made'
index=True
args: 'stock.picking', 'Transfer'
picking_location_dest_id
Many2one
related='picking_id.location_dest_id'
picking_location_id
Many2one
related='picking_id.location_id'
picking_partner_id
Many2one
readonly=True
related='picking_id.partner_id'
picking_type_entire_packs
Boolean
readonly=True
related='picking_id.picking_type_id.show_entire_packs'
picking_type_id
Many2one → stock.picking.type
compute='_compute_picking_type_id'
search='_search_picking_type_id'
args: 'stock.picking.type', 'Operation type'
picking_type_use_create_lots
Boolean
readonly=True
related='picking_type_id.use_create_lots'
picking_type_use_existing_lots
Boolean
readonly=True
related='picking_type_id.use_existing_lots'
produce_line_ids
Many2many → stock.move.line
product_category_name
Char
related='product_id.categ_id.complete_name'
store=True
string='Product Category'
product_id
Many2one → product.product
check_company=True
domain="[('type', '!=', 'service')]"
index=True
ondelete='cascade'
args: 'product.product', 'Product'
product_packaging_qty
Float
compute='_compute_product_packaging_qty'
string='Reserved Packaging Quantity'
product_uom_category_id
Many2one
related='product_id.uom_id.category_id'
product_uom_id
Many2one → uom.uom
compute='_compute_product_uom_id'
domain="[('category_id', '=', product_uom_category_id)]"
precompute=True
readonly=False
required=True
store=True
args: 'uom.uom', 'Unit of Measure'
quant_id
Many2one → stock.quant
store=False
args: 'stock.quant', 'Pick From'
quantity
Float
compute='_compute_quantity'
copy=False
digits='Product Unit of Measure'
readonly=False
store=True
args: 'Quantity'
quantity_product_uom
Float
compute='_compute_quantity_product_uom'
copy=False
digits='Product Unit of Measure'
store=True
args: 'Quantity in Product UoM'
reference
Char
readonly=False
related='move_id.reference'
related_sudo=False
store=True
result_package_id
Many2one → stock.quant.package
check_company=True
domain="['|', '|', ('location_id', '=', False), ('location_id', '=', location_dest_id), ('id', '=', package_id)]"
help='If set, the operations are packed into this package'
ondelete='restrict'
required=False
args: 'stock.quant.package', 'Destination Package'
state
Selection
related='move_id.state'
related_sudo=False
store=True
tracking
Selection
readonly=True
related='product_id.tracking'
action_open_reference(self)
action_put_in_pack(self)
action_revert_inventory(self)
create(self, vals_list)
get_move_line_quant_match(self, move_id, dirty_move_line_ids, dirty_quant_ids)
init(self)
unlink(self)
write(self, vals)
orderpoint_ids
Many2many → stock.warehouse.orderpoint
predefined_date
Selection
default='day'
string='Snooze for'
args: [('day', '1 Day'), ('week', '1 Week'), ('month', '1 Month'), ('custom', 'Custom')]
snoozed_until
Date
action_snooze(self)
filtered_location
One2many → stock.location
comodel_name='stock.location'
compute='_filter_location'
location_dest_id
Many2one → stock.location
required=True
args: 'stock.location', 'Destination location'
move_line_ids
Many2many → stock.move.line
compute='_compute_move_line_ids'
required=True
args: 'stock.move.line', 'Products'
picking_id
Many2one → stock.picking
required=True
args: 'stock.picking'
action_done(self)
barcode
Char
copy=False
args: 'Barcode'
base_weight
Float
help='Weight of the package type'
string='Weight'
company_id
Many2one → res.company
index=True
args: 'res.company', 'Company'
height
Float
help='Packaging Height'
args: 'Height'
length_uom_name
Char
compute='_compute_length_uom_name'
default=_get_default_length_uom
string='Length unit of measure label'
max_weight
Float
help='Maximum weight shippable in this packaging'
args: 'Max Weight'
name
Char
required=True
args: 'Package Type'
packaging_length
Float
help='Packaging Length'
args: 'Length'
sequence
Integer
default=1
help='The first in the sequence is the default one.'
args: 'Sequence'
storage_category_capacity_ids
One2many → stock.storage.category.capacity
copy=True
args: 'stock.storage.category.capacity', 'package_type_id', 'Storage Category Capacity'
weight_uom_name
Char
compute='_compute_weight_uom_name'
default=_get_default_weight_uom
string='Weight unit of measure label'
width
Float
help='Packaging Width'
args: 'Width'
copy(self, default=None)
company_id
Many2one → res.company
index=True
required=True
args: 'res.company', 'Company'
is_done
Boolean
compute='_compute_is_done'
inverse='_set_is_done'
args: 'Done'
is_fresh_package
Boolean
compute='_compute_fresh_pack'
location_dest_id
Many2one → stock.location
check_company=True
compute='_compute_location_dest_id'
domain="[('id', 'child_of', parent.location_dest_id), '|', ('company_id', '=', False), ('company_id', '=', company_id)]"
precompute=True
readonly=False
store=True
args: 'stock.location', 'To'
location_id
Many2one → stock.location
check_company=True
compute='_compute_location_id'
args: 'stock.location', 'From'
move_ids
One2many → stock.move
move_line_ids
One2many → stock.move.line
package_id
Many2one → stock.quant.package
check_company=True
domain="[('location_id', 'child_of', parent.location_id), '|', ('company_id', '=', False), ('company_id', '=', company_id)]"
required=True
args: 'stock.quant.package', 'Package'
picking_id
Many2one → stock.picking
check_company=True
args: 'stock.picking', 'Picking'
picking_type_code
Selection
related='picking_id.picking_type_code'
show_lots_m2o
Boolean
compute='_compute_show_lot'
show_lots_text
Boolean
compute='_compute_show_lot'
state
Selection
compute='_compute_state'
string='State'
args: [('draft', 'Draft'), ('confirmed', 'Confirmed'), ('assigned', 'Reserved'), ('new', 'New'), ('done', 'Done'), ('cancel', 'Cancelled')]
action_show_package_details(self)
create(self, vals_list)
unlink(self)
write(self, vals)
No new fields.
Public methods (0)No public methods.
backorder_id
Many2one → stock.picking
check_company=True
copy=False
help='If this shipment was split, then this field links to the shipment which contains the already processed part.'
index='btree_not_null'
readonly=True
args: 'stock.picking', 'Back Order of'
backorder_ids
One2many → stock.picking
company_id
Many2one → res.company
index=True
readonly=True
related='picking_type_id.company_id'
store=True
string='Company'
args: 'res.company'
date
Datetime
copy=False
default=fields.Datetime.now
help='Creation Date, usually the time of the order'
tracking=True
args: 'Creation Date'
date_deadline
Datetime
compute='_compute_date_deadline'
help='Date Promise to the customer on the top level document (SO/PO)'
store=True
args: 'Deadline'
date_done
Datetime
copy=False
help='Date at which the transfer has been processed or cancelled.'
readonly=True
args: 'Date of Transfer'
delay_alert_date
Datetime
compute='_compute_delay_alert_date'
search='_search_delay_alert_date'
args: 'Delay Alert Date'
group_id
Many2one → procurement.group
readonly=True
related='move_ids.group_id'
store=True
args: 'procurement.group', 'Procurement Group'
has_deadline_issue
Boolean
compute='_compute_has_deadline_issue'
default=False
help='Is late or will be late depending on the deadline and scheduled date'
store=True
args: 'Is late'
has_packages
Boolean
compute='_compute_has_packages'
help='Check the existence of destination packages on move lines'
args: 'Has Packages'
has_scrap_move
Boolean
compute='_has_scrap_move'
args: 'Has Scrap Moves'
has_tracking
Boolean
compute='_compute_has_tracking'
hide_picking_type
Boolean
compute='_compute_hide_picking_type'
is_locked
Boolean
default=True
help='When the picking is not done this allows changing the initial demand. When the picking is done this allows changing the done quantities.'
is_signed
Boolean
compute='_compute_is_signed'
args: 'Is Signed'
json_popover
Char
compute='_compute_json_popover'
args: 'JSON data for the popover widget'
location_dest_id
Many2one → stock.location
check_company=True
compute='_compute_location_id'
precompute=True
readonly=False
required=True
store=True
args: 'stock.location', 'Destination Location'
location_id
Many2one → stock.location
check_company=True
compute='_compute_location_id'
precompute=True
readonly=False
required=True
store=True
args: 'stock.location', 'Source Location'
lot_id
Many2one → stock.lot
readonly=True
related='move_line_ids.lot_id'
args: 'stock.lot', 'Lot/Serial Number'
move_ids
One2many → stock.move
copy=True
string='Stock Moves'
args: 'stock.move', 'picking_id'
move_ids_without_package
One2many → stock.move
domain=['|', ('package_level_id', '=', False), ('picking_type_entire_packs', '=', False)]
string='Stock move'
args: 'stock.move', 'picking_id'
move_line_exist
Boolean
compute='_compute_move_line_exist'
help='Check the existence of pack operation on the picking'
args: 'Has Pack Operations'
move_line_ids
One2many → stock.move.line
move_line_ids_without_package
One2many → stock.move.line
domain=['|', ('package_level_id', '=', False), ('picking_type_entire_packs', '=', False)]
args: 'stock.move.line', 'picking_id', 'Operations without package'
move_type
Selection
default='direct'
help='It specifies goods to be deliver partially or all at once'
required=True
args: [('direct', 'As soon as possible'), ('one', 'When all products are ready')], 'Shipping Policy'
name
Char
copy=False
default='/'
index='trigram'
readonly=True
args: 'Reference'
note
Html
origin
Char
help='Reference of the document'
index='trigram'
args: 'Source Document'
owner_id
Many2one → res.partner
check_company=True
help='When validating the transfer, the products will be assigned to this owner.'
index='btree_not_null'
args: 'res.partner', 'Assign Owner'
package_level_ids
One2many → stock.package_level
package_level_ids_details
One2many → stock.package_level
partner_id
Many2one → res.partner
check_company=True
index='btree_not_null'
args: 'res.partner', 'Contact'
picking_properties
Properties
copy=True
definition='picking_type_id.picking_properties_definition'
args: 'Properties'
picking_type_code
Selection
readonly=True
related='picking_type_id.code'
picking_type_entire_packs
Boolean
related='picking_type_id.show_entire_packs'
picking_type_id
Many2one → stock.picking.type
default=_default_picking_type_id
index=True
required=True
args: 'stock.picking.type', 'Operation Type'
printed
Boolean
copy=False
args: 'Printed'
priority
Selection
default='0'
help='Products will be reserved first for the transfers with the highest priorities.'
string='Priority'
args: PROCUREMENT_PRIORITIES
product_id
Many2one → product.product
readonly=True
related='move_ids.product_id'
args: 'product.product', 'Product'
products_availability
Char
compute='_compute_products_availability'
help='Latest product availability status of the picking'
string='Product Availability'
products_availability_state
Selection
compute='_compute_products_availability'
args: [('available', 'Available'), ('expected', 'Expected'), ('late', 'Late')]
return_count
Integer
compute='_compute_return_count'
compute_sudo=False
args: '# Returns'
return_id
Many2one → stock.picking
check_company=True
copy=False
help='If this picking was created as a return of another picking, this field links to the original picking.'
index='btree_not_null'
readonly=True
args: 'stock.picking', 'Return of'
return_ids
One2many → stock.picking
scheduled_date
Datetime
compute='_compute_scheduled_date'
default=fields.Datetime.now
help='Scheduled time for the first part of the shipment to be processed. Setting manually a value here would set it as expected date for all the stock moves.'
index=True
inverse='_set_scheduled_date'
store=True
tracking=True
args: 'Scheduled Date'
show_allocation
Boolean
compute='_compute_show_allocation'
help='Technical Field used to decide whether the button "Allocation" should be displayed.'
show_check_availability
Boolean
compute='_compute_show_check_availability'
help='Technical field used to compute whether the button "Check Availability" should be displayed.'
show_clear_qty_button
Boolean
compute='_compute_show_qty_button'
show_lots_text
Boolean
compute='_compute_show_lots_text'
show_operations
Boolean
related='picking_type_id.show_operations'
show_reserved
Boolean
related='picking_type_id.show_reserved'
show_set_qty_button
Boolean
compute='_compute_show_qty_button'
signature
Image
attachment=True
copy=False
help='Signature'
args: 'Signature'
state
Selection
compute='_compute_state'
copy=False
help=' * Draft: The transfer is not confirmed yet. Reservation doesn\'t apply.\n * Waiting another operation: This transfer is waiting for another operation before being ready.\n * Waiting: The transfer is waiting for the availability of some products.\n(a) The shipping policy is "As soon as possible": no product could be reserved.\n(b) The shipping policy is "When all products are ready": not all the products could be reserved.\n * Ready: The transfer is ready to be processed.\n(a) The shipping policy is "As soon as possible": at least one product has been reserved.\n(b) The shipping policy is "When all products are ready": all product have been reserved.\n * Done: The transfer has been processed.\n * Cancelled: The transfer has been cancelled.'
index=True
readonly=True
store=True
string='Status'
tracking=True
args: [('draft', 'Draft'), ('waiting', 'Waiting Another Operation'), ('confirmed', 'Waiting'), ('assigned', 'Ready'), ('done', 'Done'), ('cancel', 'Cancelled')]
use_create_lots
Boolean
related='picking_type_id.use_create_lots'
use_existing_lots
Boolean
related='picking_type_id.use_existing_lots'
user_id
Many2one → res.users
default=<expr>
domain=<expr>
tracking=True
args: 'res.users', 'Responsible'
action_assign(self)
action_cancel(self)
action_confirm(self)
action_detailed_operations(self)
action_open_label_layout(self)
action_open_label_type(self)
action_picking_move_tree(self)
action_put_in_pack(self)
action_see_move_scrap(self)
action_see_packages(self)
action_see_returns(self)
action_toggle_is_locked(self)
action_view_reception_report(self)
button_scrap(self)
button_validate(self)
create(self, vals_list)
do_print_picking(self)
do_unreserve(self)
should_print_delivery_address(self)
unlink(self)
write(self, vals)
No new fields.
Public methods (0)No public methods.
active
Boolean
default=True
args: 'Active'
auto_print_delivery_slip
Boolean
help='If this checkbox is ticked, Odoo will automatically print the delivery slip of a picking when it is validated.'
args: 'Auto Print Delivery Slip'
auto_print_lot_labels
Boolean
help='If this checkbox is ticked, Odoo will automatically print the lot/SN labels of a picking when it is validated.'
args: 'Auto Print Lot/SN Labels'
auto_print_package_label
Boolean
help='If this checkbox is ticked, Odoo will automatically print the package label when "Put in Pack" button is used.'
args: 'Auto Print Package Label'
auto_print_packages
Boolean
help='If this checkbox is ticked, Odoo will automatically print the packages and their contents of a picking when it is validated.'
args: 'Auto Print Packages'
auto_print_product_labels
Boolean
help='If this checkbox is ticked, Odoo will automatically print the product labels of a picking when it is validated.'
args: 'Auto Print Product Labels'
auto_print_reception_report
Boolean
help='If this checkbox is ticked, Odoo will automatically print the reception report of a picking when it is validated and has assigned moves.'
args: 'Auto Print Reception Report'
auto_print_reception_report_labels
Boolean
help='If this checkbox is ticked, Odoo will automatically print the reception report labels of a picking when it is validated.'
args: 'Auto Print Reception Report Labels'
auto_print_return_slip
Boolean
help='If this checkbox is ticked, Odoo will automatically print the return slip of a picking when it is validated.'
args: 'Auto Print Return Slip'
auto_show_reception_report
Boolean
help='If this checkbox is ticked, Odoo will automatically show the reception report (if there are moves to allocate to) when validating.'
args: 'Show Reception Report at Validation'
barcode
Char
copy=False
args: 'Barcode'
code
Selection
default='incoming'
required=True
args: [('incoming', 'Receipt'), ('outgoing', 'Delivery'), ('internal', 'Internal Transfer')], 'Type of Operation'
color
Integer
company_id
Many2one → res.company
default=<expr>
index=True
required=True
args: 'res.company', 'Company'
count_picking
Integer
compute='_compute_picking_count'
count_picking_backorders
Integer
compute='_compute_picking_count'
count_picking_draft
Integer
compute='_compute_picking_count'
count_picking_late
Integer
compute='_compute_picking_count'
count_picking_ready
Integer
compute='_compute_picking_count'
count_picking_waiting
Integer
compute='_compute_picking_count'
create_backorder
Selection
default='ask'
help='When validating a transfer:\n * Ask: users are asked to choose if they want to make a backorder for remaining products\n * Always: a backorder is automatically created for the remaining products\n * Never: remaining products are cancelled'
required=True
args: [('ask', 'Ask'), ('always', 'Always'), ('never', 'Never')], 'Create Backorder'
default_location_dest_id
Many2one → stock.location
check_company=True
compute='_compute_default_location_dest_id'
help='This is the default destination location when you create a picking manually with this operation type. It is possible however to change it or that the routes put another location. If it is empty, it will check for the customer location on the partner. '
precompute=True
readonly=False
store=True
args: 'stock.location', 'Default Destination Location'
default_location_return_id
Many2one → stock.location
check_company=True
domain="[('return_location', '=', 'True')]"
help='This is the default location for returns created from a picking with this operation type.'
args: 'stock.location', 'Default returns location'
default_location_src_id
Many2one → stock.location
check_company=True
compute='_compute_default_location_src_id'
help='This is the default source location when you create a picking manually with this operation type. It is possible however to change it or that the routes put another location. If it is empty, it will check for the supplier location on the partner. '
precompute=True
readonly=False
store=True
args: 'stock.location', 'Default Source Location'
hide_reservation_method
Boolean
compute='_compute_hide_reservation_method'
lot_label_format
Selection
default='4x12_lots'
string='Lot Label Format to auto-print'
args: [('4x12_lots', '4 x 12 - One per lot/SN'), ('4x12_units', '4 x 12 - One per unit'), ('zpl_lots', 'ZPL Labels - One per lot/SN'), ('zpl_units', 'ZPL Labels - One per unit')]
name
Char
required=True
translate=True
args: 'Operation Type'
package_label_to_print
Selection
default='pdf'
args: [('pdf', 'PDF'), ('zpl', 'ZPL')], 'Package Label to Print'
picking_properties_definition
PropertiesDefinition
print_label
Boolean
compute='_compute_print_label'
help='If this checkbox is ticked, label will be print in this operation.'
readonly=False
store=True
args: 'Print Label'
product_label_format
Selection
default='2x7xprice'
string='Product Label Format to auto-print'
args: [('dymo', 'Dymo'), ('2x7xprice', '2 x 7 with price'), ('4x7xprice', '4 x 7 with price'), ('4x12', '4 x 12'), ('4x12xprice', '4 x 12 with price'), ('zpl', 'ZPL Labels'), ('zplxprice', 'ZPL Labels with price')]
reservation_days_before
Integer
help='Maximum number of days before scheduled date that products should be reserved.'
args: 'Days'
reservation_days_before_priority
Integer
help='Maximum number of days before scheduled date that priority picking products should be reserved.'
args: 'Days when starred'
reservation_method
Selection
default='at_confirm'
help='How products in transfers of this operation type should be reserved.'
required=True
args: [('at_confirm', 'At Confirmation'), ('manual', 'Manually'), ('by_date', 'Before scheduled date')], 'Reservation Method'
return_picking_type_id
Many2one → stock.picking.type
check_company=True
args: 'stock.picking.type', 'Operation Type for Returns'
sequence
Integer
help="Used to order the 'All Operations' kanban view"
args: 'Sequence'
sequence_code
Char
required=True
args: 'Sequence Prefix'
sequence_id
Many2one → ir.sequence
check_company=True
copy=False
args: 'ir.sequence', 'Reference Sequence'
show_entire_packs
Boolean
help='If ticked, you will be able to select entire packages to move'
args: 'Move Entire Packages'
show_operations
Boolean
default=False
help='If this checkbox is ticked, the pickings lines will represent detailed stock operations. If not, the picking lines will represent an aggregate of detailed stock operations.'
args: 'Show Detailed Operations'
show_picking_type
Boolean
compute='_compute_show_picking_type'
show_reserved
Boolean
compute='_compute_show_reserved'
default=True
help='If this checkbox is ticked, Odoo will automatically pre-fill the detailed operations with the corresponding products, locations and lot/serial numbers. For moves that are returns, the detailed operations will always be prefilled, regardless of this option.'
store=True
args: 'Pre-fill Detailed Operations'
use_create_lots
Boolean
compute='_compute_use_create_lots'
default=True
help='If this is checked only, it will suppose you want to create new Lots/Serial Numbers, so you can provide them in a text field. '
readonly=False
store=True
args: 'Create New Lots/Serial Numbers'
use_existing_lots
Boolean
compute='_compute_use_existing_lots'
default=True
help='If this is checked, you will be able to choose the Lots/Serial Numbers. You can also decide to not put lots in this operation type. This means it will create stock with no lot or not put a restriction on the lot taken. '
readonly=False
store=True
args: 'Use Existing Lots/Serial Numbers'
warehouse_id
Many2one → stock.warehouse
check_company=True
compute='_compute_warehouse_id'
ondelete='cascade'
readonly=False
store=True
args: 'stock.warehouse', 'Warehouse'
copy(self, default=None)
create(self, vals_list)
get_action_picking_tree_backorder(self)
get_action_picking_tree_late(self)
get_action_picking_tree_ready(self)
get_action_picking_tree_waiting(self)
get_action_picking_type_operations(self)
get_stock_picking_action_picking_type(self)
write(self, vals)
No new fields.
Public methods (0)No public methods.
active
Boolean
default=True
args: 'Active'
category_id
Many2one → product.category
default=_default_category_id
domain=[('filter_for_stock_putaway_rule', '=', True)]
ondelete='cascade'
args: 'product.category', 'Product Category'
company_id
Many2one → res.company
default=<expr>
index=True
required=True
args: 'res.company', 'Company'
location_in_id
Many2one → stock.location
check_company=True
default=_default_location_id
domain="[('child_ids', '!=', False)]"
index=True
ondelete='cascade'
required=True
args: 'stock.location', 'When product arrives in'
location_out_id
Many2one → stock.location
check_company=True
domain="[('id', 'child_of', location_in_id)]"
ondelete='cascade'
required=True
args: 'stock.location', 'Store to sublocation'
package_type_ids
Many2many → stock.package.type
check_company=True
string='Package Type'
args: 'stock.package.type'
product_id
Many2one → product.product
check_company=True
default=_default_product_id
domain="[('product_tmpl_id', '=', context.get('active_id', False))] if context.get('active_model') == 'product.template' else [('type', '!=', 'service')]"
ondelete='cascade'
args: 'product.product', 'Product'
sequence
Integer
help='Give to the more specialized category, a higher priority to have them in top of the list.'
args: 'Priority'
storage_category_id
Many2one → stock.storage.category
check_company=True
ondelete='cascade'
args: 'stock.storage.category', 'Storage Category'
create(self, vals_list)
write(self, vals)
No new fields.
Public methods (0)No public methods.
available_quantity
Float
compute='_compute_available_quantity'
digits='Product Unit of Measure'
help="On hand quantity which hasn't been reserved on a transfer, in the default unit of measure of the product"
args: 'Available Quantity'
company_id
Many2one
readonly=True
related='location_id.company_id'
store=True
string='Company'
cyclic_inventory_frequency
Integer
related='location_id.cyclic_inventory_frequency'
in_date
Datetime
default=fields.Datetime.now
readonly=True
required=True
args: 'Incoming Date'
inventory_date
Date
compute='_compute_inventory_date'
help='Next date the On Hand Quantity should be counted.'
readonly=False
store=True
args: 'Scheduled Date'
inventory_diff_quantity
Float
compute='_compute_inventory_diff_quantity'
digits='Product Unit of Measure'
help="Indicates the gap between the product's theoretical quantity and its counted quantity."
readonly=True
store=True
args: 'Difference'
inventory_quantity
Float
digits='Product Unit of Measure'
help="The product's counted quantity."
args: 'Counted Quantity'
inventory_quantity_auto_apply
Float
compute='_compute_inventory_quantity_auto_apply'
digits='Product Unit of Measure'
groups='stock.group_stock_manager'
inverse='_set_inventory_quantity'
args: 'Inventoried Quantity'
inventory_quantity_set
Boolean
compute='_compute_inventory_quantity_set'
default=False
readonly=False
store=True
is_outdated
Boolean
compute='_compute_is_outdated'
search='_search_is_outdated'
args: 'Quantity has been moved since last count'
last_count_date
Date
compute='_compute_last_count_date'
help='Last time the Quantity was Updated'
location_id
Many2one → stock.location
auto_join=True
domain=<expr>
index=True
ondelete='restrict'
required=True
args: 'stock.location', 'Location'
lot_id
Many2one → stock.lot
check_company=True
domain=<expr>
index=True
ondelete='restrict'
args: 'stock.lot', 'Lot/Serial Number'
lot_properties
Properties
definition='product_id.lot_properties_definition'
readonly=True
related='lot_id.lot_properties'
on_hand
Boolean
search='_search_on_hand'
store=False
args: 'On Hand'
owner_id
Many2one → res.partner
check_company=True
help='This is the owner of the quant'
index='btree_not_null'
args: 'res.partner', 'Owner'
package_id
Many2one → stock.quant.package
check_company=True
domain="[('location_id', '=', location_id)]"
help='The package containing this quant'
index=True
ondelete='restrict'
args: 'stock.quant.package', 'Package'
priority
Selection
related='product_tmpl_id.priority'
product_categ_id
Many2one
related='product_tmpl_id.categ_id'
product_id
Many2one → product.product
check_company=True
domain=<expr>
index=True
ondelete='restrict'
required=True
args: 'product.product', 'Product'
product_tmpl_id
Many2one → product.template
related='product_id.product_tmpl_id'
string='Product Template'
args: 'product.template'
product_uom_id
Many2one → uom.uom
readonly=True
related='product_id.uom_id'
args: 'uom.uom', 'Unit of Measure'
quantity
Float
digits='Product Unit of Measure'
help='Quantity of products in this quant, in the default unit of measure of the product'
readonly=True
args: 'Quantity'
reserved_quantity
Float
default=0.0
digits='Product Unit of Measure'
help='Quantity of reserved products in this quant, in the default unit of measure of the product'
readonly=True
required=True
args: 'Reserved Quantity'
sn_duplicated
Boolean
compute='_compute_sn_duplicated'
help='If the same SN is in another Quant'
string='Duplicated Serial Number'
storage_category_id
Many2one
related='location_id.storage_category_id'
store=True
tracking
Selection
readonly=True
related='product_id.tracking'
user_id
Many2one → res.users
domain=<expr>
help='User assigned to do product count.'
args: 'res.users', 'Assigned To'
warehouse_id
Many2one → stock.warehouse
related='location_id.warehouse_id'
args: 'stock.warehouse'
action_apply_inventory(self)
action_clear_inventory_quantity(self)
action_inventory_at_date(self)
action_inventory_history(self)
action_reset(self)
action_set_inventory_quantity(self)
action_set_inventory_quantity_zero(self)
action_stock_quant_relocate(self)
action_view_inventory(self)
action_view_orderpoints(self)
action_view_quants(self)
action_view_stock_moves(self)
action_warning_duplicated_sn(self)
check_location_id(self)
check_lot_id(self)
check_product_id(self)
check_quantity(self)
copy(self, default=None)
create(self, vals_list)
get_import_templates(self)
move_quants(self, location_dest_id=False, package_dest_id=False, message=False, unpack=False)
name_create(self, name)
read_group(self, domain, fields, groupby, offset=0, limit=None, orderby=False, lazy=True)
write(self, vals)
company_id
Many2one → res.company
compute='_compute_package_info'
index=True
readonly=True
store=True
args: 'res.company', 'Company'
location_id
Many2one → stock.location
compute='_compute_package_info'
index=True
readonly=True
store=True
args: 'stock.location', 'Location'
name
Char
copy=False
default=<expr>
index='trigram'
required=True
args: 'Package Reference'
owner_id
Many2one → res.partner
compute='_compute_owner_id'
compute_sudo=True
readonly=True
search='_search_owner'
args: 'res.partner', 'Owner'
pack_date
Date
default=fields.Date.today
args: 'Pack Date'
package_type_id
Many2one → stock.package.type
index=True
args: 'stock.package.type', 'Package Type'
package_use
Selection
default='disposable'
help="Reusable boxes are used for batch picking and emptied afterwards to be reused. In the barcode application, scanning a reusable box will add the products in this box.\n Disposable boxes aren't reused, when scanning a disposable box in the barcode application, the contained products are added to the transfer."
required=True
string='Package Use'
args: [('disposable', 'Disposable Box'), ('reusable', 'Reusable Box')]
quant_ids
One2many → stock.quant
domain=['|', ('quantity', '!=', 0), ('reserved_quantity', '!=', 0)]
readonly=True
args: 'stock.quant', 'package_id', 'Bulk Content'
valid_sscc
Boolean
compute='_compute_valid_sscc'
args: 'Package name is valid SSCC'
action_view_picking(self)
unpack(self)
company_id
Many2one
related='quant_ids.company_id'
dest_location_id
Many2one → stock.location
domain="[('usage', '=', 'internal'), ('company_id', '=', company_id)]"
args: 'stock.location'
dest_package_id
Many2one → stock.quant.package
compute='_compute_dest_package_id'
domain='dest_package_id_domain'
store=True
args: 'stock.quant.package'
dest_package_id_domain
Char
compute='_compute_dest_package_id_domain'
is_multi_location
Boolean
compute='_compute_is_multi_location'
is_partial_package
Boolean
compute='_compute_is_partial_package'
message
Text
partial_package_names
Char
compute='_compute_is_partial_package'
quant_ids
Many2many → stock.quant
action_relocate_quants(self)
inventory_datetime
Datetime
default=fields.Datetime.now
help='Choose a date to get the inventory at that date'
args: 'Inventory at Date'
open_at_date(self)
json_lead_days
Char
compute='_compute_json_lead_days'
json_replenishment_history
Char
compute='_compute_json_replenishment_history'
orderpoint_id
Many2one → stock.warehouse.orderpoint
product_id
Many2one → product.product
related='orderpoint_id.product_id'
args: 'product.product'
qty_to_order
Float
related='orderpoint_id.qty_to_order'
warehouseinfo_ids
One2many
related='orderpoint_id.warehouse_id.resupply_route_ids'
wh_replenishment_option_ids
One2many → stock.replenishment.option
compute='_compute_wh_replenishment_options'
args: 'stock.replenishment.option', 'replenishment_info_id'
No public methods.
free_qty
Float
compute='_compute_free_qty'
lead_time
Char
compute='_compute_lead_time'
location_id
Many2one → stock.location
related='warehouse_id.lot_stock_id'
args: 'stock.location'
product_id
Many2one → product.product
qty_to_order
Float
related='replenishment_info_id.qty_to_order'
replenishment_info_id
Many2one → stock.replenishment.info
route_id
Many2one → stock.route
uom
Char
related='product_id.uom_name'
warehouse_id
Many2one → stock.warehouse
related='route_id.supplier_wh_id'
args: 'stock.warehouse'
warning_message
Char
compute='_compute_warning_message'
order_all(self)
order_avbl(self)
select_route(self)
inventory_date
Date
default=fields.Datetime.now
help='Choose a date to get the inventory at that date'
required=True
args: 'Inventory Date'
quant_ids
Many2many → stock.quant
set_count
Selection
default='empty'
string='Count'
args: [('empty', 'Leave Empty'), ('set', 'Set Current Value')]
user_id
Many2one → res.users
domain=<expr>
string='User'
args: 'res.users'
action_request_count(self)
company_id
Many2one
related='picking_id.company_id'
location_id
Many2one → stock.location
compute='_compute_moves_locations'
domain="['|', ('id', '=', original_location_id), '|', '&', ('return_location', '=', True), ('company_id', '=', False), '&', ('return_location', '=', True), ('company_id', '=', company_id)]"
readonly=False
store=True
args: 'stock.location', 'Return Location'
move_dest_exists
Boolean
compute='_compute_moves_locations'
store=True
args: 'Chained Move Exists'
original_location_id
Many2one → stock.location
compute='_compute_moves_locations'
store=True
args: 'stock.location'
parent_location_id
Many2one → stock.location
compute='_compute_moves_locations'
store=True
args: 'stock.location'
picking_id
Many2one → stock.picking
product_return_moves
One2many → stock.return.picking.line
compute='_compute_moves_locations'
readonly=False
store=True
args: 'stock.return.picking.line', 'wizard_id', 'Moves'
create_returns(self)
default_get(self, fields)
move_id
Many2one → stock.move
product_id
Many2one → product.product
domain="[('id', '=', product_id)]"
required=True
string='Product'
args: 'product.product'
quantity
Float
digits='Product Unit of Measure'
required=True
args: 'Quantity'
uom_id
Many2one → uom.uom
related='product_id.uom_id'
string='Unit of Measure'
args: 'uom.uom'
wizard_id
Many2one → stock.return.picking
string='Wizard'
args: 'stock.return.picking'
No public methods.
active
Boolean
default=True
help='If the active field is set to False, it will allow you to hide the route without removing it.'
args: 'Active'
categ_ids
Many2many → product.category
copy=False
args: 'product.category', 'stock_route_categ', 'route_id', 'categ_id', 'Product Categories'
company_id
Many2one → res.company
default=<expr>
help='Leave this field empty if this route is shared between all companies'
index=True
args: 'res.company', 'Company'
name
Char
required=True
translate=True
args: 'Route'
packaging_ids
Many2many → product.packaging
check_company=True
copy=False
args: 'product.packaging', 'stock_route_packaging', 'route_id', 'packaging_id', 'Packagings'
packaging_selectable
Boolean
help='When checked, the route will be selectable on the Product Packaging.'
args: 'Applicable on Packaging'
product_categ_selectable
Boolean
help='When checked, the route will be selectable on the Product Category.'
args: 'Applicable on Product Category'
product_ids
Many2many → product.template
check_company=True
copy=False
args: 'product.template', 'stock_route_product', 'route_id', 'product_id', 'Products'
product_selectable
Boolean
default=True
help='When checked, the route will be selectable in the Inventory tab of the Product form.'
args: 'Applicable on Product'
rule_ids
One2many → stock.rule
copy=True
args: 'stock.rule', 'route_id', 'Rules'
sequence
Integer
default=0
args: 'Sequence'
supplied_wh_id
Many2one → stock.warehouse
supplier_wh_id
Many2one → stock.warehouse
warehouse_domain_ids
One2many → stock.warehouse
compute='_compute_warehouses'
args: 'stock.warehouse'
warehouse_ids
Many2many → stock.warehouse
copy=False
domain="[('id', 'in', warehouse_domain_ids)]"
args: 'stock.warehouse', 'stock_route_warehouse', 'route_id', 'warehouse_id', 'Warehouses'
warehouse_selectable
Boolean
help='When a warehouse is selected for this route, this route should be seen as the default route when products pass through this warehouse.'
args: 'Applicable on Warehouse'
copy(self, default=None)
toggle_active(self)
action
Selection
default='pull'
index=True
required=True
selection=[('pull', 'Pull From'), ('push', 'Push To'), ('pull_push', 'Pull & Push')]
string='Action'
active
Boolean
default=True
help='If unchecked, it will allow you to hide the rule without removing it.'
args: 'Active'
auto
Selection
default='manual'
help="The 'Manual Operation' value will create a stock move after the current one. With 'Automatic No Step Added', the location is replaced in the original move."
required=True
string='Automatic Move'
args: [('manual', 'Manual Operation'), ('transparent', 'Automatic No Step Added')]
company_id
Many2one → res.company
default=<expr>
domain="[('id', '=?', route_company_id)]"
index=True
args: 'res.company', 'Company'
delay
Integer
default=0
help='The expected date of the created transfer will be computed based on this lead time.'
args: 'Lead Time'
group_id
Many2one → procurement.group
group_propagation_option
Selection
default='propagate'
string='Propagation of Procurement Group'
args: [('none', 'Leave Empty'), ('propagate', 'Propagate'), ('fixed', 'Fixed')]
location_dest_id
Many2one → stock.location
check_company=True
index=True
required=True
args: 'stock.location', 'Destination Location'
location_src_id
Many2one → stock.location
check_company=True
index=True
args: 'stock.location', 'Source Location'
name
Char
help='This field will fill the packing origin and the name of its moves'
required=True
translate=True
args: 'Name'
partner_address_id
Many2one → res.partner
check_company=True
help='Address where goods should be delivered. Optional.'
args: 'res.partner', 'Partner Address'
picking_type_code_domain
Char
compute='_compute_picking_type_code_domain'
picking_type_id
Many2one → stock.picking.type
check_company=True
domain="[('code', '=?', picking_type_code_domain)]"
required=True
args: 'stock.picking.type', 'Operation Type'
procure_method
Selection
default='make_to_stock'
help='Take From Stock: the products will be taken from the available stock of the source location.\nTrigger Another Rule: the system will try to find a stock rule to bring the products in the source location. The available stock will be ignored.\nTake From Stock, if Unavailable, Trigger Another Rule: the products will be taken from the available stock of the source location.If there is no stock available, the system will try to find a rule to bring the products in the source location.'
required=True
string='Supply Method'
args: [('make_to_stock', 'Take From Stock'), ('make_to_order', 'Trigger Another Rule'), ('mts_else_mto', 'Take From Stock, if unavailable, Trigger Another Rule')]
propagate_cancel
Boolean
default=False
help='When ticked, if the move created by this rule is cancelled, the next move will be cancelled too.'
args: 'Cancel Next Move'
propagate_carrier
Boolean
default=False
help='When ticked, carrier of shipment will be propagated.'
args: 'Propagation of carrier'
propagate_warehouse_id
Many2one → stock.warehouse
help='The warehouse to propagate on the created move/procurement, which can be different of the warehouse this rule is for (e.g for resupplying rules from another warehouse)'
args: 'stock.warehouse', 'Warehouse to Propagate'
route_company_id
Many2one
related='route_id.company_id'
string='Route Company'
route_id
Many2one → stock.route
index=True
ondelete='cascade'
required=True
args: 'stock.route', 'Route'
route_sequence
Integer
compute_sudo=True
related='route_id.sequence'
store=True
args: 'Route Sequence'
rule_message
Html
compute='_compute_action_message'
sequence
Integer
default=20
args: 'Sequence'
warehouse_id
Many2one → stock.warehouse
check_company=True
index=True
args: 'stock.warehouse', 'Warehouse'
copy(self, default=None)
default_get(self, fields_list)
product_has_variants
Boolean
default=False
required=True
args: 'Has variants'
product_id
Many2one → product.product
required=True
string='Product'
args: 'product.product'
product_tmpl_id
Many2one → product.template
required=True
string='Product Template'
args: 'product.template'
warehouse_ids
Many2many → stock.warehouse
help='Show the routes that apply on selected warehouses.'
required=True
string='Warehouses'
args: 'stock.warehouse'
default_get(self, fields)
print_report(self)
No new fields.
Public methods (1)procure_calculation(self)
company_id
Many2one → res.company
default=<expr>
required=True
string='Company'
args: 'res.company'
date_done
Datetime
readonly=True
args: 'Date'
location_id
Many2one → stock.location
check_company=True
compute='_compute_location_id'
domain="[('usage', '=', 'internal')]"
precompute=True
readonly=False
required=True
store=True
args: 'stock.location', 'Source Location'
lot_id
Many2one → stock.lot
check_company=True
domain="[('product_id', '=', product_id)]"
args: 'stock.lot', 'Lot/Serial'
move_ids
One2many → stock.move
name
Char
copy=False
default=<expr>
readonly=True
required=True
args: 'Reference'
origin
Char
string='Source Document'
owner_id
Many2one → res.partner
check_company=True
args: 'res.partner', 'Owner'
package_id
Many2one → stock.quant.package
check_company=True
args: 'stock.quant.package', 'Package'
picking_id
Many2one → stock.picking
check_company=True
args: 'stock.picking', 'Picking'
product_id
Many2one → product.product
check_company=True
domain="[('type', 'in', ['product', 'consu'])]"
required=True
args: 'product.product', 'Product'
product_uom_category_id
Many2one
related='product_id.uom_id.category_id'
product_uom_id
Many2one → uom.uom
compute='_compute_product_uom_id'
domain="[('category_id', '=', product_uom_category_id)]"
precompute=True
readonly=False
required=True
store=True
args: 'uom.uom', 'Unit of Measure'
scrap_location_id
Many2one → stock.location
check_company=True
compute='_compute_scrap_location_id'
domain="[('scrap_location', '=', True)]"
precompute=True
readonly=False
required=True
store=True
args: 'stock.location', 'Scrap Location'
scrap_qty
Float
compute='_compute_scrap_qty'
default=1.0
digits='Product Unit of Measure'
readonly=False
required=True
store=True
args: 'Quantity'
should_replenish
Boolean
string='Replenish Quantities'
state
Selection
default='draft'
readonly=True
string='Status'
tracking=True
args: [('draft', 'Draft'), ('done', 'Done')]
tracking
Selection
readonly=True
related='product_id.tracking'
string='Product Tracking'
action_get_stock_move_lines(self)
action_get_stock_picking(self)
action_validate(self)
check_available_qty(self)
do_replenish(self, values=False)
do_scrap(self)
No new fields.
Public methods (0)No public methods.
allow_new_product
Selection
default='mixed'
required=True
args: [('empty', 'If the location is empty'), ('same', 'If all products are same'), ('mixed', 'Allow mixed products')]
capacity_ids
One2many → stock.storage.category.capacity
copy=True
args: 'stock.storage.category.capacity', 'storage_category_id'
company_id
Many2one → res.company
location_ids
One2many → stock.location
max_weight
Float
digits='Stock Weight'
args: 'Max Weight'
name
Char
required=True
args: 'Storage Category'
package_capacity_ids
One2many → stock.storage.category.capacity
compute='_compute_storage_capacity_ids'
inverse='_set_storage_capacity_ids'
args: 'stock.storage.category.capacity'
product_capacity_ids
One2many → stock.storage.category.capacity
compute='_compute_storage_capacity_ids'
inverse='_set_storage_capacity_ids'
args: 'stock.storage.category.capacity'
weight_uom_name
Char
compute='_compute_weight_uom_name'
string='Weight unit'
copy(self, default=None)
company_id
Many2one → res.company
related='storage_category_id.company_id'
args: 'res.company', 'Company'
package_type_id
Many2one → stock.package.type
check_company=True
ondelete='cascade'
args: 'stock.package.type', 'Package Type'
product_id
Many2one → product.product
check_company=True
domain="[('product_tmpl_id', '=', context.get('active_id', False))] if context.get('active_model') == 'product.template' else [('id', '=', context.get('default_product_id', False))] if context.get('default_product_id') else [('type', '=', 'product')]"
ondelete='cascade'
args: 'product.product', 'Product'
product_uom_id
Many2one
related='product_id.uom_id'
quantity
Float
required=True
args: 'Quantity'
storage_category_id
Many2one → stock.storage.category
index=True
ondelete='cascade'
required=True
args: 'stock.storage.category'
No public methods.
No new fields.
Public methods (4)get_lines(self, line_id=False, **kw)
get_main_lines(self, given_context=None)
get_pdf(self, line_data=None)
get_pdf_lines(self, line_data=[])
product_ids
Many2many → product.product
string='Products'
args: 'product.product'
quant_ids
Many2many → stock.quant
string='Quants'
args: 'stock.quant'
tracking_line_ids
One2many → stock.track.line
action_confirm(self)
product_display_name
Char
compute='_compute_product_display_name'
readonly=True
args: 'Name'
product_id
Many2one → product.product
readonly=True
args: 'product.product', 'Product'
tracking
Selection
related='product_id.tracking'
wizard_id
Many2one → stock.track.confirmation
readonly=True
args: 'stock.track.confirmation'
No public methods.
No new fields.
Public methods (0)No public methods.
active
Boolean
default=True
args: 'Active'
code
Char
help='Short name used to identify your warehouse'
required=True
size=5
args: 'Short Name'
company_id
Many2one → res.company
default=<expr>
help='The company is automatically set from your user preferences.'
readonly=True
required=True
args: 'res.company', 'Company'
crossdock_route_id
Many2one → stock.route
copy=False
ondelete='restrict'
args: 'stock.route', 'Crossdock Route'
delivery_route_id
Many2one → stock.route
copy=False
ondelete='restrict'
args: 'stock.route', 'Delivery Route'
delivery_steps
Selection
default='ship_only'
help='Default outgoing route to follow'
required=True
args: [('ship_only', 'Deliver goods directly (1 step)'), ('pick_ship', 'Send goods in output and then deliver (2 steps)'), ('pick_pack_ship', 'Pack goods, send goods in output and then deliver (3 steps)')], 'Outgoing Shipments'
in_type_id
Many2one → stock.picking.type
check_company=True
copy=False
args: 'stock.picking.type', 'In Type'
int_type_id
Many2one → stock.picking.type
check_company=True
copy=False
args: 'stock.picking.type', 'Internal Type'
lot_stock_id
Many2one → stock.location
check_company=True
domain="[('usage', '=', 'internal'), ('company_id', '=', company_id)]"
required=True
args: 'stock.location', 'Location Stock'
mto_pull_id
Many2one → stock.rule
copy=False
args: 'stock.rule', 'MTO rule'
name
Char
default=_default_name
required=True
args: 'Warehouse'
out_type_id
Many2one → stock.picking.type
check_company=True
copy=False
args: 'stock.picking.type', 'Out Type'
pack_type_id
Many2one → stock.picking.type
check_company=True
copy=False
args: 'stock.picking.type', 'Pack Type'
partner_id
Many2one → res.partner
check_company=True
default=<expr>
args: 'res.partner', 'Address'
pick_type_id
Many2one → stock.picking.type
check_company=True
copy=False
args: 'stock.picking.type', 'Pick Type'
reception_route_id
Many2one → stock.route
copy=False
ondelete='restrict'
args: 'stock.route', 'Receipt Route'
reception_steps
Selection
default='one_step'
help='Default incoming route to follow'
required=True
args: [('one_step', 'Receive goods directly (1 step)'), ('two_steps', 'Receive goods in input and then stock (2 steps)'), ('three_steps', 'Receive goods in input, then quality and then stock (3 steps)')], 'Incoming Shipments'
resupply_route_ids
One2many → stock.route
copy=False
help='Routes will be created for these resupply warehouses and you can select them on products and product categories'
args: 'stock.route', 'supplied_wh_id', 'Resupply Routes'
resupply_wh_ids
Many2many → stock.warehouse
help='Routes will be created automatically to resupply this warehouse from the warehouses ticked'
args: 'stock.warehouse', 'stock_wh_resupply_table', 'supplied_wh_id', 'supplier_wh_id', 'Resupply From'
route_ids
Many2many → stock.route
check_company=True
copy=False
domain="[('warehouse_selectable', '=', True), '|', ('company_id', '=', False), ('company_id', '=', company_id)]"
help='Defaults routes through the warehouse'
args: 'stock.route', 'stock_route_warehouse', 'warehouse_id', 'route_id', 'Routes'
sequence
Integer
default=10
help='Gives the sequence of this line when displaying the warehouses.'
view_location_id
Many2one → stock.location
check_company=True
domain="[('usage', '=', 'view'), ('company_id', '=', company_id)]"
required=True
args: 'stock.location', 'View Location'
wh_input_stock_loc_id
Many2one → stock.location
check_company=True
args: 'stock.location', 'Input Location'
wh_output_stock_loc_id
Many2one → stock.location
check_company=True
args: 'stock.location', 'Output Location'
wh_pack_stock_loc_id
Many2one → stock.location
check_company=True
args: 'stock.location', 'Packing Location'
wh_qc_stock_loc_id
Many2one → stock.location
check_company=True
args: 'stock.location', 'Quality Control Location'
action_view_all_routes(self)
copy(self, default=None)
create(self, vals_list)
create_resupply_routes(self, supplier_warehouses)
get_current_warehouses(self)
get_rules_dict(self)
unlink(self)
write(self, vals)
No new fields.
Public methods (0)No public methods.
active
Boolean
default=True
help='If the active field is set to False, it will allow you to hide the orderpoint without removing it.'
args: 'Active'
allowed_location_ids
One2many → stock.location
comodel_name='stock.location'
compute='_compute_allowed_location_ids'
company_id
Many2one → res.company
default=<expr>
index=True
required=True
args: 'res.company', 'Company'
days_to_order
Float
compute='_compute_days_to_order'
help='Numbers of days in advance that replenishments demands are created.'
group_id
Many2one → procurement.group
copy=False
help='Moves created through this orderpoint will be put in this procurement group. If none is given, the moves generated by stock rules will be grouped into one big picking.'
args: 'procurement.group', 'Procurement Group'
lead_days_date
Date
compute='_compute_lead_days'
location_id
Many2one → stock.location
check_company=True
compute='_compute_location_id'
index=True
ondelete='cascade'
precompute=True
readonly=False
required=True
store=True
args: 'stock.location', 'Location'
name
Char
copy=False
default=<expr>
readonly=True
required=True
args: 'Name'
product_category_id
Many2one → product.category
name='Product Category'
related='product_id.categ_id'
store=True
args: 'product.category'
product_id
Many2one → product.product
check_company=True
domain="[('product_tmpl_id', '=', context.get('active_id', False))] if context.get('active_model') == 'product.template' else [('id', '=', context.get('default_product_id', False))] if context.get('default_product_id') else [('type', '=', 'product')]"
ondelete='cascade'
required=True
args: 'product.product', 'Product'
product_max_qty
Float
default=0.0
digits='Product Unit of Measure'
help='When the virtual stock goes below the Min Quantity, Odoo generates a procurement to bring the forecasted quantity to the Quantity specified as Max Quantity.'
required=True
args: 'Max Quantity'
product_min_qty
Float
default=0.0
digits='Product Unit of Measure'
help='When the virtual stock goes below the Min Quantity specified for this field, Odoo generates a procurement to bring the forecasted quantity to the Max Quantity.'
required=True
args: 'Min Quantity'
product_tmpl_id
Many2one → product.template
related='product_id.product_tmpl_id'
args: 'product.template'
product_uom
Many2one → uom.uom
related='product_id.uom_id'
args: 'uom.uom', 'Unit of Measure'
product_uom_name
Char
readonly=True
related='product_uom.display_name'
string='Product unit of measure label'
qty_forecast
Float
compute='_compute_qty'
digits='Product Unit of Measure'
readonly=True
args: 'Forecast'
qty_multiple
Float
default=1
digits='Product Unit of Measure'
help='The procurement quantity will be rounded up to this multiple. If it is 0, the exact quantity will be used.'
required=True
args: 'Multiple Quantity'
qty_on_hand
Float
compute='_compute_qty'
digits='Product Unit of Measure'
readonly=True
args: 'On Hand'
qty_to_order
Float
compute='_compute_qty_to_order'
digits='Product Unit of Measure'
readonly=False
store=True
args: 'To Order'
route_id
Many2one → stock.route
domain="[('product_selectable', '=', True)]"
string='Route'
args: 'stock.route'
rule_ids
Many2many → stock.rule
compute='_compute_rules'
string='Rules used'
args: 'stock.rule'
snoozed_until
Date
help='Hidden until next scheduler.'
args: 'Snoozed'
trigger
Selection
default='auto'
required=True
string='Trigger'
args: [('auto', 'Auto'), ('manual', 'Manual')]
unwanted_replenish
Boolean
compute='_compute_unwanted_replenish'
args: 'Unwanted Replenish'
visibility_days
Float
compute='_compute_visibility_days'
help='Consider product forecast these many days in the future upon product replenishment, set to 0 for just-in-time.\nThe value depends on the type of the route (Buy or Manufacture)'
inverse='_set_visibility_days'
readonly=False
warehouse_id
Many2one → stock.warehouse
check_company=True
compute='_compute_warehouse_id'
index=True
ondelete='cascade'
precompute=True
readonly=False
required=True
store=True
args: 'stock.warehouse', 'Warehouse'
action_open_orderpoints(self)
action_product_forecast_report(self)
action_replenish(self, force_to_max=False)
action_replenish_auto(self)
action_stock_replenishment_info(self)
create(self, vals_list)
write(self, vals)
location_id
Many2one → stock.location
domain="[('usage', '=', 'internal')]"
required=True
args: 'stock.location', 'Location'
product_id
Many2one → product.product
required=True
args: 'product.product', 'Product'
product_uom_name
Char
required=True
args: 'Unit of Measure'
quant_ids
Many2many → stock.quant
compute='_compute_quant_ids'
args: 'stock.quant'
quantity
Float
required=True
string='Quantity'
action_done(self)
scrap_id
Many2one → stock.scrap
action_cancel(self)
action_done(self)
No new fields.
Public methods (1)write(self, values)
| XML ID | Name | Model | Type | Status |
|---|---|---|---|---|
duplicated_sn_warning |
stock.quant.duplicated.sn.warning | stock.quant | form | New |
exception_on_picking |
exception_on_picking | ir.ui.view | qweb | New |
inventory_warning_reset_view |
inventory.reset.warning.view | stock.inventory.warning | form | New |
inventory_warning_set_view |
inventory.set.warning.view | stock.inventory.warning | form | New |
label_lot_template_view |
label_lot_template_view | ir.ui.view | qweb | New |
label_package_template_view |
label_package_template_view | ir.ui.view | qweb | New |
label_picking_type_view |
label_picking_type_view | ir.ui.view | qweb | New |
label_product_packaging_view |
label_product_packaging_view | ir.ui.view | qweb | New |
label_product_product_view |
label_product_product_view | ir.ui.view | qweb | New |
label_transfer_template_view_pdf |
label_transfer_template_view_pdf | ir.ui.view | qweb | New |
label_transfer_template_view_zpl |
label_transfer_template_view_zpl | ir.ui.view | qweb | New |
lot_label_layout_form_picking |
lot.label.layout.form | lot.label.layout | form | New |
message_body |
message_body | ir.ui.view | qweb | New |
message_head |
message_head | ir.ui.view | qweb | New |
package_level_form_edit_view |
Package Level | stock.package_level | xpath | Inherits stock.package_level_form_view |
package_level_form_view |
Package Level | stock.package_level | form | New |
package_level_tree_view_picking |
Package Level Tree Picking | stock.package_level | tree | New |
picking_label_type_form |
picking.label.type.form | picking.label.type | form | New |
procurement_group_form_view |
procurement.group.form | procurement.group | form | New |
product_category_form_view_inherit |
product.category.form | product.category | div | Inherits product.product_category_form_view |
product_form_view_procurement_button |
product.product.procurement | product.product | data | Inherits product.product_normal_form_view |
product_label_layout_form_picking |
product.label.layout.form | product.label.layout | xpath | Inherits product.product_label_layout_form |
product_packaging_form_view |
product.packaging.form.view.stock | product.packaging | xpath | Inherits product.product_packaging_form_view |
product_packaging_tree_view |
product.packaging.tree.view.stock | product.packaging | xpath | Inherits product.product_packaging_tree_view |
product_product_stock_tree |
product.product.stock.tree | product.product | tree | New |
product_product_view_form_easy_inherit_stock |
product.product.view.form.easy.inherit.stock | product.product | header | Inherits product.product_variant_easy_edit_view |
product_search_form_view_stock |
product.search.stock.form | product.product | filter | Inherits product.product_search_form_view |
product_search_form_view_stock_report |
product.product.search.stock.form.stock.report | product.product | filter | Inherits stock_product_search_form_view |
product_template_form_view_procurement_button |
product.template_procurement | product.template | data | Inherits product.product_template_only_form_view |
product_template_kanban_stock_view |
Product Template Kanban Stock | product.template | xpath | Inherits product.product_template_kanban_view |
product_template_search_form_view_stock |
product.template.search.stock.form | product.template | xpath | Inherits product.product_template_search_view |
quant_package_search_view |
stock.quant.package.search | stock.quant.package | search | New |
quant_search_view |
stock.quant.search | stock.quant | search | New |
replenishment_option_tree_view |
stock.replenishment.option.tree.view | stock.replenishment.option | tree | New |
replenishment_option_warning_view |
stock.replenishment.warning.view | stock.replenishment.option | form | New |
report_delivery_document |
report_delivery_document | ir.ui.view | qweb | New |
report_deliveryslip |
report_deliveryslip | ir.ui.view | qweb | New |
report_generic_barcode |
report_generic_barcode | ir.ui.view | qweb | New |
report_inventory |
report_inventory | ir.ui.view | qweb | New |
report_location_barcode |
report_location_barcode | ir.ui.view | qweb | New |
report_lot_label |
report_lot_label | ir.ui.view | qweb | New |
report_mrp_line |
report_mrp_line | ir.ui.view | qweb | New |
report_package_barcode |
report_package_barcode | ir.ui.view | qweb | New |
report_package_barcode_small |
report_package_barcode_small | ir.ui.view | qweb | New |
report_picking |
report_picking | ir.ui.view | qweb | New |
report_picking_packages |
report_picking_packages | ir.ui.view | qweb | New |
report_picking_type_label |
report_picking_type_label | ir.ui.view | qweb | New |
report_product_product_replenishment |
report_product_product_replenishment | ir.ui.view | qweb | New |
report_product_template_replenishment |
report_product_template_replenishment | ir.ui.view | qweb | New |
report_reception |
report_reception | ir.ui.view | qweb | New |
report_reception_body |
report_reception_body | ir.ui.view | qweb | New |
report_reception_report_label |
report_reception_report_label | ir.ui.view | qweb | New |
report_replenishment_header |
report_replenishment_header | ir.ui.view | qweb | New |
report_stock_body_print |
report_stock_body_print | ir.ui.view | qweb | New |
report_stock_inventory |
report_stock_inventory | ir.ui.view | qweb | New |
report_stock_inventory_print |
report_stock_inventory_print | ir.ui.view | qweb | New |
report_stock_rule |
report_stock_rule | ir.ui.view | qweb | New |
report_stock_rule_left_arrow |
report_stock_rule_left_arrow | ir.ui.view | qweb | New |
report_stock_rule_line |
report_stock_rule_line | ir.ui.view | qweb | New |
report_stock_rule_right_arrow |
report_stock_rule_right_arrow | ir.ui.view | qweb | New |
report_stock_rule_suspension_points |
report_stock_rule_suspension_points | ir.ui.view | qweb | New |
report_stock_rule_vertical_bar |
report_stock_rule_vertical_bar | ir.ui.view | qweb | New |
res_config_settings_view_form |
res.config.settings.view.form.inherit.stock | res.config.settings | xpath | Inherits base.res_config_settings_view_form |
search_product_lot_filter |
Production Lots Filter | stock.lot | search | New |
stock_inventory_adjustment_name_form_view |
stock.inventory.adjustment.name.form.view | stock.inventory.adjustment.name | form | New |
stock_inventory_conflict_form_view |
stock.inventory.conflict.form.view | stock.inventory.conflict | form | New |
stock_inventory_request_count_form_view |
stock.request.count.form.view | stock.request.count | form | New |
stock_location_route_form_view |
stock.location.route.form | stock.route | form | New |
stock_location_route_tree |
stock.location.route.tree | stock.route | tree | New |
stock_location_route_view_search |
stock.location.route.search | stock.route | search | New |
stock_location_view_form_editable |
stock.location.form.editable | stock.location | xpath | Inherits stock.view_location_form |
stock_location_view_tree2_editable |
stock.location.tree2.editable | stock.location | xpath | Inherits stock.view_location_tree2 |
stock_move_line_view_search |
stock.move.line.search | stock.move.line | search | New |
stock_package_destination_form_view |
stock.package.destination.view | stock.package.destination | form | New |
stock_package_type_form |
stock.package.type.form | stock.package.type | form | New |
stock_package_type_tree |
stock.package.type.tree | stock.package.type | tree | New |
stock_picking_calendar |
stock.picking.calendar | stock.picking | calendar | New |
stock_picking_kanban |
stock.picking.kanban | stock.picking | kanban | New |
stock_picking_type_kanban |
stock.picking.type.kanban | stock.picking.type | kanban | New |
stock_product_search_form_view |
product.product.search.stock.form | product.product | xpath | Inherits product.product_search_form_view |
stock_putaway_list |
stock.putaway.rule.tree | stock.putaway.rule | tree | New |
stock_quant_view_graph |
stock.quant.graph | stock.quant | graph | New |
stock_reorder_report_search |
stock.warehouse.orderpoint.reorder.search | stock.warehouse.orderpoint | search | New |
stock_report_delivery_aggregated_move_lines |
stock_report_delivery_aggregated_move_lines | ir.ui.view | qweb | New |
stock_report_delivery_has_serial_move_line |
stock_report_delivery_has_serial_move_line | ir.ui.view | qweb | New |
stock_report_delivery_no_package_section_line |
stock_report_delivery_no_package_section_line | ir.ui.view | qweb | New |
stock_report_delivery_package_section_line |
stock_report_delivery_package_section_line | ir.ui.view | qweb | New |
stock_report_view_graph |
stock_report_view_graph | report.stock.quantity | graph | New |
stock_scrap_form_view |
stock.scrap.form | stock.scrap | form | New |
stock_scrap_form_view2 |
stock.scrap.form2 | stock.scrap | form | New |
stock_scrap_search_view |
stock.scrap.search | stock.scrap | search | New |
stock_scrap_tree_view |
stock.scrap.tree | stock.scrap | tree | New |
stock_scrap_view_kanban |
stock.scrap.kanban | stock.scrap | kanban | New |
stock_storage_category_capacity_tree |
stock.storage.category.capacity.tree | stock.storage.category.capacity | tree | New |
stock_storage_category_form |
stock.storage.category.form | stock.storage.category | form | New |
stock_storage_category_tree |
stock.storage.category.tree | stock.storage.category | tree | New |
stock_warehouse_view_search |
stock.warehouse.search | stock.warehouse | search | New |
stock_warn_insufficient_qty_form_view |
stock.warn.insufficient.qty | stock.warn.insufficient.qty | form | New |
stock_warn_insufficient_qty_scrap_form_view |
stock.warn.insufficient.qty.scrap | stock.warn.insufficient.qty.scrap | xpath | Inherits stock.stock_warn_insufficient_qty_form_view |
track_move_template |
track_move_template | ir.ui.view | qweb | New |
view_assign_serial_numbers |
stock_assign_serial_numbers | stock.assign.serial | form | New |
view_backorder_confirmation |
stock_backorder_confirmation | stock.backorder.confirmation | form | New |
view_change_product_quantity |
Change Product Quantity | stock.change.product.qty | form | New |
view_immediate_transfer |
stock.immediate.transfer.view.form | stock.immediate.transfer | form | New |
view_location_form |
stock.location.form | stock.location | form | New |
view_location_search |
stock.location.search | stock.location | search | New |
view_location_tree2 |
stock.location.tree | stock.location | tree | New |
view_move_form |
stock.move.form | stock.move | form | New |
view_move_graph |
stock.move.graph | stock.move | graph | New |
view_move_kandan |
stock.move.kanban | stock.move | kanban | New |
view_move_line_form |
stock.move.line.form | stock.move.line | form | New |
view_move_line_mobile_form |
stock.move.line.mobile.form | stock.move.line | xpath | Inherits stock.view_move_line_form |
view_move_line_tree |
stock.move.line.tree | stock.move.line | tree | New |
view_move_line_tree_detailed |
stock.move.line.tree.detailed | stock.move.line | tree | New |
view_move_pivot |
stock.move.pivot | stock.move | pivot | New |
view_move_search |
stock.move.search | stock.move | search | New |
view_move_tree |
stock.move.tree | stock.move | tree | New |
view_move_tree_receipt_picking |
stock.move.tree2 | stock.move | tree | New |
view_partner_stock_form |
res.partner.stock.property.form.inherit | res.partner | xpath | Inherits mail.res_partner_view_form_inherit_mail |
view_partner_stock_warnings_form |
res.partner.stock.warning | res.partner | page | Inherits base.view_partner_form |
view_picking_form |
stock.picking.form | stock.picking | form | New |
view_picking_internal_search |
stock.picking.internal.search | stock.picking | search | New |
view_picking_move_tree |
stock.picking.move.tree | stock.move | tree | New |
view_picking_type_form |
Operation Types | stock.picking.type | form | New |
view_picking_type_tree |
Operation types | stock.picking.type | tree | New |
view_pickingtype_filter |
stock.picking.type.filter | stock.picking.type | search | New |
view_procurement_compute_wizard |
Run Schedulers Manually | stock.scheduler.compute | form | New |
view_product_replenish |
Replenish | product.replenish | form | New |
view_production_lot_form |
stock.production.lot.form | stock.lot | form | New |
view_production_lot_tree |
stock.production.lot.tree | stock.lot | tree | New |
view_putaway_search |
stock.putaway.rule.search | stock.putaway.rule | search | New |
view_quant_package_form |
stock.quant.package.form | stock.quant.package | form | New |
view_quant_package_kanban |
stock.quant.package.kanban | stock.quant.package | kanban | New |
view_quant_package_tree |
stock.quant.package.tree | stock.quant.package | tree | New |
view_removal |
product.removal.form | product.removal | form | New |
view_route_rule_form |
stock.rule.form | stock.rule | xpath | Inherits stock.view_stock_rule_form |
view_stock_move_line_detailed_operation_tree |
stock.move.line.operations.tree | stock.move.line | tree | New |
view_stock_move_line_kanban |
stock.move.line.kanban | stock.move.line | kanban | New |
view_stock_move_line_operation_tree |
stock.move.line.operations.tree | stock.move.line | tree | New |
view_stock_move_nosuggest_operations |
stock.move.operations.nosuggest.form | stock.move | field | Inherits stock.view_stock_move_operations |
view_stock_move_operations |
stock.move.operations.form | stock.move | form | New |
view_stock_orderpoint_snooze |
Stock Orderpoint Snooze | stock.orderpoint.snooze | form | New |
view_stock_product_template_tree |
product.template.stock.tree.inherit | product.template | field | Inherits product.product_template_tree_view |
view_stock_product_tree |
product.stock.tree.inherit | product.product | field | Inherits product.product_product_tree_view |
view_stock_quant_form_editable |
stock.quant.form.editable | stock.quant | form | New |
view_stock_quant_pivot |
stock.quant.pivot | stock.quant | pivot | New |
view_stock_quant_tree |
stock.quant.tree | stock.quant | tree | New |
view_stock_quant_tree_editable |
stock.quant.tree.editable | stock.quant | tree | New |
view_stock_quant_tree_inventory_editable |
stock.quant.inventory.tree.editable | stock.quant | tree | New |
view_stock_quantity_history |
Inventory Report at Date | stock.quantity.history | form | New |
view_stock_replenishment_info |
Stock Replenishment Information | stock.replenishment.info | form | New |
view_stock_return_picking_form |
Return lines | stock.return.picking | form | New |
view_stock_rule_filter |
stock.rule.select | stock.rule | search | New |
view_stock_rule_form |
stock.rule.form | stock.rule | form | New |
view_stock_rule_tree |
stock.rule.tree | stock.rule | tree | New |
view_stock_rules_report |
Stock Rules Report | stock.rules.report | form | New |
view_stock_track_confirmation |
stock.track.confirmation.view.form | stock.track.confirmation | form | New |
view_stock_warehouse_orderpoint_kanban |
stock.warehouse.orderpoint.kanban | stock.warehouse.orderpoint | kanban | New |
view_template_property_form |
product.template.stock.property.form.inherit | product.template | xpath | Inherits product.product_template_form_view |
view_warehouse |
stock.warehouse | stock.warehouse | form | New |
view_warehouse_orderpoint_form |
stock.warehouse.orderpoint.form | stock.warehouse.orderpoint | form | New |
view_warehouse_orderpoint_tree_editable |
stock.warehouse.orderpoint.tree.editable | stock.warehouse.orderpoint | tree | New |
view_warehouse_tree |
stock.warehouse.tree | stock.warehouse | tree | New |
vpicktree |
stock.picking.tree | stock.picking | tree | New |
warehouse_orderpoint_search |
stock.warehouse.orderpoint.search | stock.warehouse.orderpoint | search | New |
type
Selection
ondelete={'weight': 'set default', 'location': 'set default', 'lot': 'set default', 'package': 'set default'}
selection_add=[('weight', 'Weighted Product'), ('location', 'Location'), ('lot', 'Lot'), ('package', 'Package')]
No public methods.
label_quantity
Selection
default='lots'
help="If the UoM of a lot is not 'units', the lot will be considered as a unit and only one label will be printed for this lot."
required=True
string='Quantity to print'
args: [('lots', 'One per lot/SN'), ('units', 'One per unit')]
picking_ids
Many2many → stock.picking
print_format
Selection
default='4x12'
required=True
string='Format'
args: [('4x12', '4 x 12'), ('zpl', 'ZPL Labels')]
process(self)
label_type
Selection
default='products'
required=True
string='Labels to print'
args: [('products', 'Product Labels'), ('lots', 'Lot/SN Labels')]
picking_ids
Many2many → stock.picking
process(self)
move_type
Selection
default='direct'
required=True
string='Delivery Type'
args: [('direct', 'Partial'), ('one', 'All at once')]
name
Char
default=<expr>
required=True
args: 'Reference'
partner_id
Many2one → res.partner
stock_move_ids
One2many → stock.move
string='Related Stock Moves'
args: 'stock.move', 'group_id'
run(self, procurements, raise_user_error=True)
run_scheduler(self, use_new_cursor=False, company_id=False)
packaging_reserve_method
Selection
default='partial'
help='Reserve Only Full Packagings: will not reserve partial packagings. If customer orders 2 pallets of 1000 units each and you only have 1600 in stock, then only 1000 will be reserved\nReserve Partial Packagings: allow reserving partial packagings. If customer orders 2 pallets of 1000 units each and you only have 1600 in stock, then 1600 will be reserved'
string='Reserve Packagings'
args: [('full', 'Reserve Only Full Packagings'), ('partial', 'Reserve Partial Packagings')]
putaway_rule_ids
One2many → stock.putaway.rule
removal_strategy_id
Many2one → product.removal
help='Set a specific removal strategy that will be used regardless of the source location for this product category.\n\nFIFO: products/lots that were stocked first will be moved out first.\nLIFO: products/lots that were stocked last will be moved out first.\nCloset location: products/lots closest to the target location will be moved out first.\nFEFO: products/lots with the closest removal date will be moved out first (the availability of this method depends on the "Expiration Dates" setting).'
args: 'product.removal', 'Force Removal Strategy'
route_ids
Many2many → stock.route
domain=[('product_categ_selectable', '=', True)]
args: 'stock.route', 'stock_route_categ', 'categ_id', 'route_id', 'Routes'
total_route_ids
Many2many → stock.route
compute='_compute_total_route_ids'
readonly=True
string='Total routes'
args: 'stock.route'
No public methods.
move_line_ids
Many2many → stock.move.line
picking_quantity
Selection
default='custom'
required=True
string='Quantity to print'
args: [('picking', 'Transfer Quantities'), ('custom', 'Custom')]
print_format
Selection
ondelete={'zpl': 'set default', 'zplxprice': 'set default'}
selection_add=[('zpl', 'ZPL Labels'), ('zplxprice', 'ZPL Labels with price')]
No public methods.
package_type_id
Many2one → stock.package.type
route_ids
Many2many → stock.route
domain=[('packaging_selectable', '=', True)]
help='Depending on the modules installed, this will allow you to define the route of the product in this packaging: whether it will be bought, manufactured, replenished on order, etc.'
args: 'stock.route', 'stock_route_packaging', 'packaging_id', 'route_id', 'Routes'
No public methods.
No new fields.
Public methods (0)No public methods.
free_qty
Float
compute='_compute_quantities'
compute_sudo=False
digits='Product Unit of Measure'
help="Forecast quantity (computed as Quantity On Hand - reserved quantity)\nIn a context with a single Stock Location, this includes goods stored in this location, or any of its children.\nIn a context with a single Warehouse, this includes goods stored in the Stock Location of this Warehouse, or any of its children.\nOtherwise, this includes goods stored in any Stock Location with 'internal' type."
search='_search_free_qty'
args: 'Free To Use Quantity '
incoming_qty
Float
compute='_compute_quantities'
compute_sudo=False
digits='Product Unit of Measure'
help="Quantity of planned incoming products.\nIn a context with a single Stock Location, this includes goods arriving to this Location, or any of its children.\nIn a context with a single Warehouse, this includes goods arriving to the Stock Location of this Warehouse, or any of its children.\nOtherwise, this includes goods arriving to any Stock Location with 'internal' type."
search='_search_incoming_qty'
args: 'Incoming'
nbr_moves_in
Integer
compute='_compute_nbr_moves'
compute_sudo=False
help='Number of incoming stock moves in the past 12 months'
nbr_moves_out
Integer
compute='_compute_nbr_moves'
compute_sudo=False
help='Number of outgoing stock moves in the past 12 months'
nbr_reordering_rules
Integer
compute='_compute_nbr_reordering_rules'
compute_sudo=False
args: 'Reordering Rules'
orderpoint_ids
One2many → stock.warehouse.orderpoint
outgoing_qty
Float
compute='_compute_quantities'
compute_sudo=False
digits='Product Unit of Measure'
help="Quantity of planned outgoing products.\nIn a context with a single Stock Location, this includes goods leaving this Location, or any of its children.\nIn a context with a single Warehouse, this includes goods leaving the Stock Location of this Warehouse, or any of its children.\nOtherwise, this includes goods leaving any Stock Location with 'internal' type."
search='_search_outgoing_qty'
args: 'Outgoing'
putaway_rule_ids
One2many → stock.putaway.rule
qty_available
Float
compute='_compute_quantities'
compute_sudo=False
digits='Product Unit of Measure'
help="Current quantity of products.\nIn a context with a single Stock Location, this includes goods stored at this Location, or any of its children.\nIn a context with a single Warehouse, this includes goods stored in the Stock Location of this Warehouse, or any of its children.\nstored in the Stock Location of the Warehouse of this Shop, or any of its children.\nOtherwise, this includes goods stored in any Stock Location with 'internal' type."
search='_search_qty_available'
args: 'Quantity On Hand'
reordering_max_qty
Float
compute='_compute_nbr_reordering_rules'
compute_sudo=False
reordering_min_qty
Float
compute='_compute_nbr_reordering_rules'
compute_sudo=False
show_forecasted_qty_status_button
Boolean
compute='_compute_show_qty_status_button'
show_on_hand_qty_status_button
Boolean
compute='_compute_show_qty_status_button'
stock_move_ids
One2many → stock.move
stock_quant_ids
One2many → stock.quant
storage_category_capacity_ids
One2many → stock.storage.category.capacity
valid_ean
Boolean
compute='_compute_valid_ean'
args: 'Barcode is valid EAN'
virtual_available
Float
compute='_compute_quantities'
compute_sudo=False
digits='Product Unit of Measure'
help="Forecast quantity (computed as Quantity On Hand - Outgoing + Incoming)\nIn a context with a single Stock Location, this includes goods stored in this location, or any of its children.\nIn a context with a single Warehouse, this includes goods stored in the Stock Location of this Warehouse, or any of its children.\nOtherwise, this includes goods stored in any Stock Location with 'internal' type."
search='_search_virtual_available'
args: 'Forecasted Quantity'
action_open_product_lot(self)
action_open_quants(self)
action_product_forecast_report(self)
action_update_quantity_on_hand(self)
action_view_orderpoints(self)
action_view_related_putaway_rules(self)
action_view_routes(self)
action_view_stock_move_lines(self)
action_view_storage_category_capacity(self)
fields_get(self, allfields=None, attributes=None)
get_components(self)
view_header_get(self, view_id, view_type)
write(self, values)
method
Char
help='FIFO, LIFO...'
required=True
args: 'Method'
name
Char
required=True
args: 'Name'
No public methods.
company_id
Many2one → res.company
date_planned
Datetime
help='Date at which the replenishment should take place.'
required=True
args: 'Scheduled Date'
product_has_variants
Boolean
default=False
required=True
args: 'Has variants'
product_id
Many2one → product.product
required=True
string='Product'
args: 'product.product'
product_tmpl_id
Many2one → product.template
required=True
string='Product Template'
args: 'product.template'
product_uom_category_id
Many2one → uom.category
readonly=True
related='product_id.uom_id.category_id'
required=True
args: 'uom.category'
product_uom_id
Many2one → uom.uom
required=True
string='Unit of measure'
args: 'uom.uom'
quantity
Float
default=1
required=True
args: 'Quantity'
route_ids
Many2many → stock.route
domain="['|', ('company_id', '=', False), ('company_id', '=', company_id)]"
help="Apply specific route(s) for the replenishment instead of product's default routes."
string='Preferred Routes'
args: 'stock.route'
warehouse_id
Many2one → stock.warehouse
domain="[('company_id', '=', company_id)]"
required=True
string='Warehouse'
args: 'stock.warehouse'
default_get(self, fields)
launch_replenishment(self)
description_picking
Text
translate=True
args: 'Description on Picking'
description_pickingin
Text
translate=True
args: 'Description on Receptions'
description_pickingout
Text
translate=True
args: 'Description on Delivery Orders'
detailed_type
Selection
ondelete={'product': 'set consu'}
selection_add=[('product', 'Storable Product')]
tracking=True
has_available_route_ids
Boolean
compute='_compute_has_available_route_ids'
default=<expr>
args: 'Routes can be selected on this product'
incoming_qty
Float
compute='_compute_quantities'
compute_sudo=False
digits='Product Unit of Measure'
search='_search_incoming_qty'
args: 'Incoming'
location_id
Many2one → stock.location
store=False
args: 'stock.location', 'Location'
nbr_moves_in
Integer
compute='_compute_nbr_moves'
compute_sudo=False
help='Number of incoming stock moves in the past 12 months'
nbr_moves_out
Integer
compute='_compute_nbr_moves'
compute_sudo=False
help='Number of outgoing stock moves in the past 12 months'
nbr_reordering_rules
Integer
compute='_compute_nbr_reordering_rules'
compute_sudo=False
args: 'Reordering Rules'
outgoing_qty
Float
compute='_compute_quantities'
compute_sudo=False
digits='Product Unit of Measure'
search='_search_outgoing_qty'
args: 'Outgoing'
property_stock_inventory
Many2one → stock.location
check_company=True
company_dependent=True
domain="[('usage', '=', 'inventory'), '|', ('company_id', '=', False), ('company_id', '=', allowed_company_ids[0])]"
help='This stock location will be used, instead of the default one, as the source location for stock moves generated when you do an inventory.'
args: 'stock.location', 'Inventory Location'
property_stock_production
Many2one → stock.location
check_company=True
company_dependent=True
domain="[('usage', '=', 'production'), '|', ('company_id', '=', False), ('company_id', '=', allowed_company_ids[0])]"
help='This stock location will be used, instead of the default one, as the source location for stock moves generated by manufacturing orders.'
args: 'stock.location', 'Production Location'
qty_available
Float
compute='_compute_quantities'
compute_sudo=False
digits='Product Unit of Measure'
search='_search_qty_available'
args: 'Quantity On Hand'
reordering_max_qty
Float
compute='_compute_nbr_reordering_rules'
compute_sudo=False
reordering_min_qty
Float
compute='_compute_nbr_reordering_rules'
compute_sudo=False
responsible_id
Many2one → res.users
check_company=True
company_dependent=True
default=<expr>
help='This user will be responsible of the next activities related to logistic operations for this product.'
string='Responsible'
args: 'res.users'
route_from_categ_ids
Many2many
related='categ_id.total_route_ids'
related_sudo=False
relation='stock.route'
string='Category Routes'
route_ids
Many2many → stock.route
depends_context=['company', 'allowed_companies']
domain=[('product_selectable', '=', True)]
help='Depending on the modules installed, this will allow you to define the route of the product: whether it will be bought, manufactured, replenished on order, etc.'
args: 'stock.route', 'stock_route_product', 'product_id', 'route_id', 'Routes'
sale_delay
Float
default=0
help="Delivery lead time, in days. It's the number of days, promised to the customer, between the confirmation of the sales order and the delivery."
args: 'Customer Lead Time'
show_forecasted_qty_status_button
Boolean
compute='_compute_show_qty_status_button'
show_on_hand_qty_status_button
Boolean
compute='_compute_show_qty_status_button'
tracking
Selection
compute='_compute_tracking'
default='none'
help='Ensure the traceability of a storable product in your warehouse.'
precompute=True
readonly=False
required=True
store=True
string='Tracking'
args: [('serial', 'By Unique Serial Number'), ('lot', 'By Lots'), ('none', 'No Tracking')]
type
Selection
ondelete={'product': 'set consu'}
selection_add=[('product', 'Storable Product')]
virtual_available
Float
compute='_compute_quantities'
compute_sudo=False
digits='Product Unit of Measure'
search='_search_virtual_available'
args: 'Forecasted Quantity'
warehouse_id
Many2one → stock.warehouse
store=False
args: 'stock.warehouse', 'Warehouse'
action_open_product_lot(self)
action_open_quants(self)
action_open_routes_diagram(self)
action_product_tmpl_forecast_report(self)
action_update_quantity_on_hand(self)
action_view_orderpoints(self)
action_view_related_putaway_rules(self)
action_view_stock_move_lines(self)
action_view_storage_category_capacity(self)
copy(self, default=None)
write(self, vals)
No new fields.
Public methods (0)No public methods.
No new fields.
Public methods (0)No public methods.
company_id
Many2one → res.company
readonly=True
args: 'res.company'
date
Date
readonly=True
string='Date'
product_id
Many2one → product.product
readonly=True
string='Product'
args: 'product.product'
product_qty
Float
readonly=True
string='Quantity'
product_tmpl_id
Many2one → product.template
readonly=True
args: 'product.template'
state
Selection
readonly=True
string='State'
args: [('forecast', 'Forecasted Stock'), ('in', 'Forecasted Receipts'), ('out', 'Forecasted Deliveries')]
warehouse_id
Many2one → stock.warehouse
readonly=True
args: 'stock.warehouse'
init(self)
No new fields.
Public methods (2)get_report_values(self, docids, data=None, serialize=False)
get_warehouses(self)
No new fields.
Public methods (1)get_report_values(self, docids, data=None, serialize=False)
No new fields.
Public methods (3)action_assign(self, move_ids, qtys, in_ids)
action_unassign(self, move_id, qty, in_ids)
get_report_data(self, docids, data)
No new fields.
Public methods (0)No public methods.
annual_inventory_day
Integer
default=31
help='Day of the month when the annual inventory should occur. If zero or negative, then the first day of the month will be selected instead.\n If greater than the last day of a month, then the last day of the month will be selected instead.'
string='Day of the month'
annual_inventory_month
Selection
default='12'
help='Annual inventory month for products not in a location with a cyclic inventory date. Set to no month if no automatic annual inventory.'
string='Annual Inventory Month'
args: [('1', 'January'), ('2', 'February'), ('3', 'March'), ('4', 'April'), ('5', 'May'), ('6', 'June'), ('7', 'July'), ('8', 'August'), ('9', 'September'), ('10', 'October'), ('11', 'November'), ('12', 'December')]
internal_transit_location_id
Many2one → stock.location
check_company=True
ondelete='restrict'
args: 'stock.location', 'Internal Transit Location'
stock_mail_confirmation_template_id
Many2one → mail.template
default=_default_confirmation_mail_template
domain="[('model', '=', 'stock.picking')]"
help='Email sent to the customer once the order is done.'
string='Email Template confirmation picking'
args: 'mail.template'
stock_move_email_validation
Boolean
default=False
args: 'Email Confirmation picking'
create(self, vals_list)
create_missing_inventory_loss_location(self)
create_missing_production_location(self)
create_missing_scrap_location(self)
create_missing_scrap_sequence(self)
create_missing_transit_location(self)
create_missing_warehouse(self)
annual_inventory_day
Integer
readonly=False
related='company_id.annual_inventory_day'
annual_inventory_month
Selection
readonly=False
related='company_id.annual_inventory_month'
group_lot_on_delivery_slip
Boolean
group='base.group_user,base.group_portal'
implied_group='stock.group_lot_on_delivery_slip'
args: 'Display Lots & Serial Numbers on Delivery Slips'
group_stock_adv_location
Boolean
help='Add and customize route operations to process product moves in your warehouse(s): e.g. unload > quality control > stock for incoming products, pick > pack > ship for outgoing products. \n You can also set putaway strategies on warehouse locations in order to send incoming products into specific child locations straight away (e.g. specific bins, racks).'
implied_group='stock.group_adv_location'
args: 'Multi-Step Routes'
group_stock_lot_print_gs1
Boolean
implied_group='stock.group_stock_lot_print_gs1'
args: 'Print GS1 Barcodes for Lots & Serial Numbers'
group_stock_multi_locations
Boolean
help='Store products in specific locations of your warehouse (e.g. bins, racks) and to track inventory accordingly.'
implied_group='stock.group_stock_multi_locations'
args: 'Storage Locations'
group_stock_picking_wave
Boolean
help='Group your move operations in wave transfer to process them together'
implied_group='stock.group_stock_picking_wave'
args: 'Wave Transfers'
group_stock_production_lot
Boolean
group='base.group_user,base.group_portal'
implied_group='stock.group_production_lot'
args: 'Lots & Serial Numbers'
group_stock_reception_report
Boolean
implied_group='stock.group_reception_report'
args: 'Reception Report'
group_stock_sign_delivery
Boolean
implied_group='stock.group_stock_sign_delivery'
args: 'Signature'
group_stock_storage_categories
Boolean
implied_group='stock.group_stock_storage_categories'
args: 'Storage Categories'
group_stock_tracking_lot
Boolean
implied_group='stock.group_tracking_lot'
args: 'Packages'
group_stock_tracking_owner
Boolean
implied_group='stock.group_tracking_owner'
args: 'Consignment'
group_warning_stock
Boolean
implied_group='stock.group_warning_stock'
args: 'Warnings for Stock'
module_delivery
Boolean
module_delivery_bpost
Boolean
module_delivery_dhl
Boolean
module_delivery_easypost
Boolean
module_delivery_fedex
Boolean
module_delivery_sendcloud
Boolean
module_delivery_ups
Boolean
module_delivery_usps
Boolean
module_product_expiry
Boolean
help='Track following dates on lots & serial numbers: best before, removal, end of life, alert. \n Such dates are set automatically at lot/serial number creation based on values set on the product (in days).'
args: 'Expiration Dates'
module_quality_control
Boolean
module_quality_control_worksheet
Boolean
module_stock_barcode
Boolean
module_stock_picking_batch
Boolean
module_stock_sms
Boolean
stock_move_email_validation
Boolean
readonly=False
related='company_id.stock_move_email_validation'
onchange_adv_location(self)
set_values(self)
picking_warn
Selection
default='no-message'
help=WARNING_HELP
args: WARNING_MESSAGE, 'Stock Picking'
picking_warn_msg
Text
property_stock_customer
Many2one → stock.location
check_company=True
company_dependent=True
domain="['|', ('company_id', '=', False), ('company_id', '=', allowed_company_ids[0])]"
help='The stock location used as destination when sending goods to this contact.'
string='Customer Location'
args: 'stock.location'
property_stock_supplier
Many2one → stock.location
check_company=True
company_dependent=True
domain="['|', ('company_id', '=', False), ('company_id', '=', allowed_company_ids[0])]"
help='The stock location used as source when receiving goods from this contact.'
string='Vendor Location'
args: 'stock.location'
No public methods.
move_id
Many2one → stock.move
next_serial_count
Integer
default=_default_next_serial_count
required=True
args: 'Number of SN'
next_serial_number
Char
required=True
args: 'First SN'
product_id
Many2one → product.product
related='move_id.product_id'
args: 'product.product', 'Product'
generate_serial_numbers(self)
backorder_confirmation_line_ids
One2many → stock.backorder.confirmation.line
string='Backorder Confirmation Lines'
args: 'stock.backorder.confirmation.line', 'backorder_confirmation_id'
pick_ids
Many2many → stock.picking
show_transfers
Boolean
default_get(self, fields)
process(self)
process_cancel_backorder(self)
backorder_confirmation_id
Many2one → stock.backorder.confirmation
picking_id
Many2one → stock.picking
to_backorder
Boolean
No public methods.
new_quantity
Float
default=1
digits='Product Unit of Measure'
help='This quantity is expressed in the Default Unit of Measure of the product.'
required=True
args: 'New Quantity on Hand'
product_id
Many2one → product.product
required=True
args: 'product.product', 'Product'
product_tmpl_id
Many2one → product.template
required=True
args: 'product.template', 'Template'
product_variant_count
Integer
related='product_tmpl_id.product_variant_count'
args: 'Variant Count'
change_product_qty(self)
check_new_quantity(self)
immediate_transfer_line_ids
One2many → stock.immediate.transfer.line
string='Immediate Transfer Lines'
args: 'stock.immediate.transfer.line', 'immediate_transfer_id'
pick_ids
Many2many → stock.picking
show_transfers
Boolean
default_get(self, fields)
process(self)
immediate_transfer_id
Many2one → stock.immediate.transfer
required=True
args: 'stock.immediate.transfer', 'Immediate Transfer'
picking_id
Many2one → stock.picking
required=True
args: 'stock.picking', 'Transfer'
to_immediate
Boolean
No public methods.
inventory_adjustment_name
Char
default='Quantity Updated'
quant_ids
Many2many → stock.quant
show_info
Boolean
action_apply(self)
default_get(self, fields_list)
quant_ids
Many2many → stock.quant
string='Quants'
args: 'stock.quant', 'stock_conflict_quant_rel'
quant_to_fix_ids
Many2many → stock.quant
string='Conflicts'
args: 'stock.quant'
action_keep_counted_quantity(self)
action_keep_difference(self)
quant_ids
Many2many → stock.quant
action_reset(self)
action_set(self)
No new fields.
Public methods (0)No public methods.
active
Boolean
default=True
help='By unchecking the active field, you may hide a location without deleting it.'
args: 'Active'
barcode
Char
copy=False
args: 'Barcode'
child_ids
One2many → stock.location
child_internal_location_ids
Many2many → stock.location
compute='_compute_child_internal_location_ids'
help="This location (if it's internal) and all its descendants filtered by type=Internal."
recursive=True
string='Internal locations among descendants'
args: 'stock.location'
comment
Html
company_id
Many2one → res.company
default=<expr>
help='Let this field empty if this location is shared between companies'
index=True
args: 'res.company', 'Company'
complete_name
Char
compute='_compute_complete_name'
recursive=True
store=True
args: 'Full Location Name'
cyclic_inventory_frequency
Integer
default=0
help=' When different than 0, inventory count date for products stored at this location will be automatically set at the defined frequency.'
args: 'Inventory Frequency (Days)'
forecast_weight
Float
compute='_compute_weight'
args: 'Forecasted Weight'
incoming_move_line_ids
One2many → stock.move.line
last_inventory_date
Date
help='Date of the last inventory at this location.'
readonly=True
args: 'Last Effective Inventory'
location_id
Many2one → stock.location
check_company=True
help="The parent location that includes this location. Example : The 'Dispatch Zone' is the 'Gate 1' parent location."
index=True
ondelete='cascade'
args: 'stock.location', 'Parent Location'
name
Char
required=True
args: 'Location Name'
net_weight
Float
compute='_compute_weight'
args: 'Net Weight'
next_inventory_date
Date
compute='_compute_next_inventory_date'
help='Date for next planned inventory based on cyclic schedule.'
store=True
args: 'Next Expected Inventory'
outgoing_move_line_ids
One2many → stock.move.line
parent_path
Char
index=True
unaccent=False
posx
Integer
default=0
help='Optional localization details, for information purpose only'
args: 'Corridor (X)'
posy
Integer
default=0
help='Optional localization details, for information purpose only'
args: 'Shelves (Y)'
posz
Integer
default=0
help='Optional localization details, for information purpose only'
args: 'Height (Z)'
putaway_rule_ids
One2many → stock.putaway.rule
quant_ids
One2many → stock.quant
removal_strategy_id
Many2one → product.removal
help='Defines the default method used for suggesting the exact location (shelf) where to take the products from, which lot etc. for this location. This method can be enforced at the product category level, and a fallback is made on the parent locations if none is set here.\n\nFIFO: products/lots that were stocked first will be moved out first.\nLIFO: products/lots that were stocked last will be moved out first.\nCloset location: products/lots closest to the target location will be moved out first.\nFEFO: products/lots with the closest removal date will be moved out first (the availability of this method depends on the "Expiration Dates" setting).'
args: 'product.removal', 'Removal Strategy'
replenish_location
Boolean
compute='_compute_replenish_location'
copy=False
help='Activate this function to get all quantities to replenish at this particular location'
readonly=False
store=True
args: 'Replenish Location'
return_location
Boolean
help='Check this box to allow using this location as a return location.'
args: 'Is a Return Location?'
scrap_location
Boolean
default=False
help='Check this box to allow using this location to put scrapped/damaged goods.'
args: 'Is a Scrap Location?'
storage_category_id
Many2one → stock.storage.category
check_company=True
string='Storage Category'
args: 'stock.storage.category'
usage
Selection
default='internal'
help="* Vendor Location: Virtual location representing the source location for products coming from your vendors\n* View: Virtual location used to create a hierarchical structures for your warehouse, aggregating its child locations ; can't directly contain products\n* Internal Location: Physical locations inside your own warehouses,\n* Customer Location: Virtual location representing the destination location for products sent to your customers\n* Inventory Loss: Virtual location serving as counterpart for inventory operations used to correct stock levels (Physical inventories)\n* Production: Virtual counterpart location for production operations: this location consumes the components and produces finished products\n* Transit Location: Counterpart location that should be used in inter-company or inter-warehouses operations"
index=True
required=True
string='Location Type'
args: [('supplier', 'Vendor Location'), ('view', 'View'), ('internal', 'Internal Location'), ('customer', 'Customer Location'), ('inventory', 'Inventory Loss'), ('production', 'Production'), ('transit', 'Transit Location')]
warehouse_id
Many2one → stock.warehouse
compute='_compute_warehouse_id'
store=True
args: 'stock.warehouse'
warehouse_view_ids
One2many → stock.warehouse
readonly=True
args: 'stock.warehouse', 'view_location_id'
copy(self, default=None)
create(self, vals_list)
default_get(self, fields)
name_create(self, name)
should_bypass_reservation(self)
write(self, values)
company_id
Many2one → res.company
default=<expr>
index=True
required=True
args: 'res.company', 'Company'
delivery_count
Integer
compute='_compute_delivery_ids'
args: 'Delivery order count'
delivery_ids
Many2many → stock.picking
compute='_compute_delivery_ids'
string='Transfers'
args: 'stock.picking'
display_complete
Boolean
compute='_compute_display_complete'
last_delivery_partner_id
Many2one → res.partner
compute='_compute_last_delivery_partner_id'
args: 'res.partner'
name
Char
default=<expr>
help='Unique Lot/Serial Number'
index='trigram'
required=True
args: 'Lot/Serial Number'
note
Html
string='Description'
product_id
Many2one → product.product
check_company=True
domain=<expr>
index=True
required=True
args: 'product.product', 'Product'
product_qty
Float
compute='_product_qty'
search='_search_product_qty'
args: 'Quantity'
product_uom_id
Many2one → uom.uom
related='product_id.uom_id'
store=True
args: 'uom.uom', 'Unit of Measure'
quant_ids
One2many → stock.quant
readonly=True
args: 'stock.quant', 'lot_id', 'Quants'
ref
Char
help="Internal reference number in case it differs from the manufacturer's lot/serial number"
args: 'Internal Reference'
action_lot_open_quants(self)
action_lot_open_transfers(self)
copy(self, default=None)
create(self, vals_list)
generate_lot_names(self, first_lot, count)
write(self, vals)
No new fields.
Public methods (0)No public methods.
additional
Boolean
default=False
args: "Whether the move was added after the picking's confirmation"
availability
Float
compute='_compute_product_availability'
help='Quantity in stock that can still be reserved for this move'
readonly=True
args: 'Forecasted Quantity'
company_id
Many2one → res.company
default=<expr>
index=True
required=True
args: 'res.company', 'Company'
date
Datetime
default=fields.Datetime.now
help='Scheduled date until move is done, then date of actual move processing'
index=True
required=True
args: 'Date Scheduled'
date_deadline
Datetime
copy=False
help='Date Promise to the customer on the top level document (SO/PO)'
readonly=True
args: 'Deadline'
delay_alert_date
Datetime
compute='_compute_delay_alert_date'
help='Process at this date to be on time'
store=True
args: 'Delay Alert Date'
description_picking
Text
display_assign_serial
Boolean
compute='_compute_display_assign_serial'
display_clear_serial
Boolean
compute='_compute_display_clear_serial'
forecast_availability
Float
compute='_compute_forecast_information'
compute_sudo=True
digits='Product Unit of Measure'
args: 'Forecast Availability'
forecast_expected_date
Datetime
compute='_compute_forecast_information'
compute_sudo=True
args: 'Forecasted Expected date'
from_immediate_transfer
Boolean
related='picking_id.immediate_transfer'
group_id
Many2one → procurement.group
default=_default_group_id
index=True
args: 'procurement.group', 'Procurement Group'
has_tracking
Selection
related='product_id.tracking'
string='Product with Tracking'
is_initial_demand_editable
Boolean
compute='_compute_is_initial_demand_editable'
args: 'Is initial demand editable'
is_inventory
Boolean
is_locked
Boolean
compute='_compute_is_locked'
readonly=True
is_quantity_done_editable
Boolean
compute='_compute_is_quantity_done_editable'
args: 'Is quantity done editable'
location_dest_id
Many2one → stock.location
auto_join=True
check_company=True
help='Location where the system will stock the finished products.'
index=True
required=True
args: 'stock.location', 'Destination Location'
location_dest_usage
Selection
related='location_dest_id.usage'
string='Destination Location Type'
location_id
Many2one → stock.location
auto_join=True
check_company=True
help='Sets a location if you produce at a fixed location. This can be a partner location if you subcontract the manufacturing operations.'
index=True
required=True
args: 'stock.location', 'Source Location'
location_usage
Selection
related='location_id.usage'
string='Source Location Type'
lot_ids
Many2many → stock.lot
compute='_compute_lot_ids'
inverse='_set_lot_ids'
readonly=False
string='Serial Numbers'
args: 'stock.lot'
move_dest_ids
Many2many → stock.move
copy=False
help='Optional: next stock move when chaining them'
args: 'stock.move', 'stock_move_move_rel', 'move_orig_id', 'move_dest_id', 'Destination Moves'
move_line_ids
One2many → stock.move.line
move_line_nosuggest_ids
One2many → stock.move.line
domain=['|', ('reserved_qty', '=', 0.0), ('qty_done', '!=', 0.0)]
args: 'stock.move.line', 'move_id'
move_lines_count
Integer
compute='_compute_move_lines_count'
move_orig_ids
Many2many → stock.move
copy=False
help='Optional: previous stock move when chaining them'
args: 'stock.move', 'stock_move_move_rel', 'move_dest_id', 'move_orig_id', 'Original Move'
name
Char
required=True
args: 'Description'
next_serial
Char
next_serial_count
Integer
orderpoint_id
Many2one → stock.warehouse.orderpoint
check_company=True
index=True
args: 'stock.warehouse.orderpoint', 'Original Reordering Rule'
origin
Char
origin_returned_move_id
Many2one → stock.move
check_company=True
copy=False
help='Move that created the return move'
index=True
args: 'stock.move', 'Origin return move'
package_level_id
Many2one → stock.package_level
check_company=True
copy=False
args: 'stock.package_level', 'Package Level'
partner_id
Many2one → res.partner
help='Optional address where goods are to be delivered, specifically used for allotment'
states={'done': [('readonly', True)]}
args: 'res.partner', 'Destination Address '
picking_code
Selection
readonly=True
related='picking_id.picking_type_id.code'
picking_id
Many2one → stock.picking
check_company=True
index=True
states={'done': [('readonly', True)]}
args: 'stock.picking', 'Transfer'
picking_type_entire_packs
Boolean
readonly=True
related='picking_type_id.show_entire_packs'
picking_type_id
Many2one → stock.picking.type
check_company=True
compute='_compute_picking_type_id'
store=True
args: 'stock.picking.type', 'Operation Type'
price_unit
Float
copy=False
args: 'Unit Price'
priority
Selection
compute='_compute_priority'
default='0'
store=True
args: PROCUREMENT_PRIORITIES, 'Priority'
procure_method
Selection
copy=False
default='make_to_stock'
help='By default, the system will take from the stock in the source location and passively wait for availability. The other possibility allows you to directly create a procurement on the source location (and thus ignore its current stock) to gather products. If we want to chain moves and have this one to wait for the previous, this second option should be chosen.'
required=True
string='Supply Method'
args: [('make_to_stock', 'Default: Take From Stock'), ('make_to_order', 'Advanced: Apply Procurement Rules')]
product_id
Many2one → product.product
check_company=True
domain="[('type', 'in', ['product', 'consu']), '|', ('company_id', '=', False), ('company_id', '=', company_id)]"
index=True
required=True
states={'done': [('readonly', True)]}
args: 'product.product', 'Product'
product_packaging_id
Many2one → product.packaging
check_company=True
domain="[('product_id', '=', product_id)]"
args: 'product.packaging', 'Packaging'
product_qty
Float
compute='_compute_product_qty'
compute_sudo=True
digits=0
help='Quantity in the default UoM of the product'
inverse='_set_product_qty'
store=True
args: 'Real Quantity'
product_tmpl_id
Many2one → product.template
related='product_id.product_tmpl_id'
args: 'product.template', 'Product Template'
product_type
Selection
readonly=True
related='product_id.detailed_type'
product_uom
Many2one → uom.uom
compute='_compute_product_uom'
domain="[('category_id', '=', product_uom_category_id)]"
precompute=True
readonly=False
required=True
store=True
args: 'uom.uom', 'UoM'
product_uom_category_id
Many2one
related='product_id.uom_id.category_id'
product_uom_qty
Float
default=1.0
digits='Product Unit of Measure'
help="This is the quantity of products from an inventory point of view. For moves in the state 'done', this is the quantity of products that were actually moved. For other moves, this is the quantity of product that is planned to be moved. Lowering this quantity does not generate a backorder. Changing this quantity on assigned moves affects the product reservation, and should be done with care."
required=True
states={'done': [('readonly', True)]}
args: 'Demand'
propagate_cancel
Boolean
default=True
help='If checked, when this move is cancelled, cancel the linked move too'
args: 'Propagate cancel and split'
quantity_done
Float
compute='_quantity_done_compute'
digits='Product Unit of Measure'
inverse='_quantity_done_set'
store=True
args: 'Quantity Done'
reference
Char
compute='_compute_reference'
store=True
string='Reference'
reservation_date
Date
compute='_compute_reservation_date'
help='Computes when a move should be reserved'
store=True
args: 'Date to Reserve'
reserved_availability
Float
compute='_compute_reserved_availability'
digits='Product Unit of Measure'
help='Quantity that has already been reserved for this move'
readonly=True
args: 'Quantity Reserved'
restrict_partner_id
Many2one → res.partner
check_company=True
args: 'res.partner', 'Owner '
returned_move_ids
One2many → stock.move
help='Optional: all returned moves created from this move'
args: 'stock.move', 'origin_returned_move_id', 'All returned moves'
route_ids
Many2many → stock.route
check_company=True
help='Preferred route'
args: 'stock.route', 'stock_route_move', 'move_id', 'route_id', 'Destination route'
rule_id
Many2one → stock.rule
check_company=True
help='The stock rule that created this stock move'
ondelete='restrict'
args: 'stock.rule', 'Stock Rule'
scrap_ids
One2many → stock.scrap
scrapped
Boolean
readonly=True
related='location_dest_id.scrap_location'
store=True
args: 'Scrapped'
sequence
Integer
default=10
args: 'Sequence'
show_details_visible
Boolean
compute='_compute_show_details_visible'
args: 'Details Visible'
show_operations
Boolean
related='picking_id.picking_type_id.show_operations'
show_reserved_availability
Boolean
compute='_compute_show_reserved_availability'
args: 'From Supplier'
state
Selection
copy=False
default='draft'
help="* New: When the stock move is created and not yet confirmed.\n* Waiting Another Move: This state can be seen when a move is waiting for another one, for example in a chained flow.\n* Waiting Availability: This state is reached when the procurement resolution is not straight forward. It may need the scheduler to run, a component to be manufactured...\n* Available: When products are reserved, it is set to 'Available'.\n* Done: When the shipment is processed, the state is 'Done'."
index=True
readonly=True
string='Status'
args: [('draft', 'New'), ('cancel', 'Cancelled'), ('waiting', 'Waiting Another Move'), ('confirmed', 'Waiting Availability'), ('partially_available', 'Partially Available'), ('assigned', 'Available'), ('done', 'Done')]
warehouse_id
Many2one → stock.warehouse
help='the warehouse to consider for the route selection on the next procurement (if any).'
args: 'stock.warehouse', 'Warehouse'
action_assign_serial(self)
action_assign_serial_show_details(self)
action_clear_lines_show_details(self)
action_open_reference(self)
action_product_forecast_report(self)
action_show_details(self)
create(self, vals_list)
default_get(self, fields_list)
init(self)
name_get(self)
unlink(self)
write(self, vals)
company_id
Many2one → res.company
index=True
readonly=True
required=True
string='Company'
args: 'res.company'
consume_line_ids
Many2many → stock.move.line
date
Datetime
default=fields.Datetime.now
required=True
args: 'Date'
description_picking
Text
string='Description picking'
is_initial_demand_editable
Boolean
related='move_id.is_initial_demand_editable'
is_inventory
Boolean
related='move_id.is_inventory'
is_locked
Boolean
readonly=True
related='move_id.is_locked'
location_dest_id
Many2one → stock.location
check_company=True
compute='_compute_location_id'
domain="[('usage', '!=', 'view')]"
precompute=True
readonly=False
required=True
store=True
args: 'stock.location', 'To'
location_dest_usage
Selection
related='location_dest_id.usage'
string='Destination Location Type'
location_id
Many2one → stock.location
check_company=True
compute='_compute_location_id'
domain="[('usage', '!=', 'view')]"
precompute=True
readonly=False
required=True
store=True
args: 'stock.location', 'From'
location_usage
Selection
related='location_id.usage'
string='Source Location Type'
lot_id
Many2one → stock.lot
check_company=True
domain="[('product_id', '=', product_id), ('company_id', '=', company_id)]"
args: 'stock.lot', 'Lot/Serial Number'
lot_name
Char
lots_visible
Boolean
compute='_compute_lots_visible'
move_id
Many2one → stock.move
check_company=True
index=True
args: 'stock.move', 'Stock Operation'
origin
Char
related='move_id.origin'
string='Source'
owner_id
Many2one → res.partner
check_company=True
help='When validating the transfer, the products will be taken from this owner.'
args: 'res.partner', 'From Owner'
package_id
Many2one → stock.quant.package
check_company=True
domain="[('location_id', '=', location_id)]"
ondelete='restrict'
args: 'stock.quant.package', 'Source Package'
package_level_id
Many2one → stock.package_level
check_company=True
args: 'stock.package_level', 'Package Level'
picking_code
Selection
readonly=True
related='picking_id.picking_type_id.code'
picking_id
Many2one → stock.picking
auto_join=True
check_company=True
help='The stock operation where the packing has been made'
index=True
args: 'stock.picking', 'Transfer'
picking_partner_id
Many2one
readonly=True
related='picking_id.partner_id'
picking_type_entire_packs
Boolean
readonly=True
related='picking_id.picking_type_id.show_entire_packs'
picking_type_id
Many2one → stock.picking.type
compute='_compute_picking_type_id'
search='_search_picking_type_id'
args: 'stock.picking.type', 'Operation type'
picking_type_use_create_lots
Boolean
readonly=True
related='picking_id.picking_type_id.use_create_lots'
picking_type_use_existing_lots
Boolean
readonly=True
related='picking_id.picking_type_id.use_existing_lots'
produce_line_ids
Many2many → stock.move.line
product_category_name
Char
related='product_id.categ_id.complete_name'
store=True
string='Product Category'
product_id
Many2one → product.product
check_company=True
domain="[('type', '!=', 'service'), '|', ('company_id', '=', False), ('company_id', '=', company_id)]"
index=True
ondelete='cascade'
args: 'product.product', 'Product'
product_uom_category_id
Many2one
related='product_id.uom_id.category_id'
product_uom_id
Many2one → uom.uom
compute='_compute_product_uom_id'
domain="[('category_id', '=', product_uom_category_id)]"
precompute=True
readonly=False
required=True
store=True
args: 'uom.uom', 'Unit of Measure'
qty_done
Float
copy=False
default=0.0
digits='Product Unit of Measure'
args: 'Done'
reference
Char
readonly=False
related='move_id.reference'
related_sudo=False
store=True
reserved_qty
Float
compute='_compute_reserved_qty'
copy=False
digits=0
inverse='_set_reserved_qty'
store=True
args: 'Real Reserved Quantity'
reserved_uom_qty
Float
copy=False
default=0.0
digits='Product Unit of Measure'
required=True
args: 'Reserved'
result_package_id
Many2one → stock.quant.package
check_company=True
domain="['|', '|', ('location_id', '=', False), ('location_id', '=', location_dest_id), ('id', '=', package_id)]"
help='If set, the operations are packed into this package'
ondelete='restrict'
required=False
args: 'stock.quant.package', 'Destination Package'
state
Selection
related='move_id.state'
related_sudo=False
store=True
tracking
Selection
readonly=True
related='product_id.tracking'
action_open_reference(self)
action_revert_inventory(self)
create(self, vals_list)
init(self)
unlink(self)
write(self, vals)
orderpoint_ids
Many2many → stock.warehouse.orderpoint
predefined_date
Selection
default='day'
string='Snooze for'
args: [('day', '1 Day'), ('week', '1 Week'), ('month', '1 Month'), ('custom', 'Custom')]
snoozed_until
Date
action_snooze(self)
filtered_location
One2many → stock.location
comodel_name='stock.location'
compute='_filter_location'
location_dest_id
Many2one → stock.location
required=True
args: 'stock.location', 'Destination location'
move_line_ids
Many2many → stock.move.line
compute='_compute_move_line_ids'
required=True
args: 'stock.move.line', 'Products'
picking_id
Many2one → stock.picking
required=True
args: 'stock.picking'
action_done(self)
barcode
Char
copy=False
args: 'Barcode'
base_weight
Float
help='Weight of the package type'
string='Weight'
company_id
Many2one → res.company
index=True
args: 'res.company', 'Company'
height
Integer
help='Packaging Height'
args: 'Height'
length_uom_name
Char
compute='_compute_length_uom_name'
default=_get_default_length_uom
string='Length unit of measure label'
max_weight
Float
help='Maximum weight shippable in this packaging'
args: 'Max Weight'
name
Char
required=True
args: 'Package Type'
packaging_length
Integer
help='Packaging Length'
args: 'Length'
sequence
Integer
default=1
help='The first in the sequence is the default one.'
args: 'Sequence'
storage_category_capacity_ids
One2many → stock.storage.category.capacity
copy=True
args: 'stock.storage.category.capacity', 'package_type_id', 'Storage Category Capacity'
weight_uom_name
Char
compute='_compute_weight_uom_name'
default=_get_default_weight_uom
string='Weight unit of measure label'
width
Integer
help='Packaging Width'
args: 'Width'
copy(self, default=None)
company_id
Many2one → res.company
index=True
required=True
args: 'res.company', 'Company'
is_done
Boolean
compute='_compute_is_done'
inverse='_set_is_done'
args: 'Done'
is_fresh_package
Boolean
compute='_compute_fresh_pack'
location_dest_id
Many2one → stock.location
check_company=True
compute='_compute_location_dest_id'
domain="[('id', 'child_of', parent.location_dest_id), '|', ('company_id', '=', False), ('company_id', '=', company_id)]"
precompute=True
readonly=False
store=True
args: 'stock.location', 'To'
location_id
Many2one → stock.location
check_company=True
compute='_compute_location_id'
args: 'stock.location', 'From'
move_ids
One2many → stock.move
move_line_ids
One2many → stock.move.line
package_id
Many2one → stock.quant.package
check_company=True
domain="[('location_id', 'child_of', parent.location_id), '|', ('company_id', '=', False), ('company_id', '=', company_id)]"
required=True
args: 'stock.quant.package', 'Package'
picking_id
Many2one → stock.picking
check_company=True
args: 'stock.picking', 'Picking'
picking_type_code
Selection
related='picking_id.picking_type_code'
show_lots_m2o
Boolean
compute='_compute_show_lot'
show_lots_text
Boolean
compute='_compute_show_lot'
state
Selection
compute='_compute_state'
string='State'
args: [('draft', 'Draft'), ('confirmed', 'Confirmed'), ('assigned', 'Reserved'), ('new', 'New'), ('done', 'Done'), ('cancel', 'Cancelled')]
action_show_package_details(self)
create(self, vals_list)
unlink(self)
write(self, vals)
No new fields.
Public methods (0)No public methods.
backorder_id
Many2one → stock.picking
check_company=True
copy=False
help='If this shipment was split, then this field links to the shipment which contains the already processed part.'
index='btree_not_null'
readonly=True
args: 'stock.picking', 'Back Order of'
backorder_ids
One2many → stock.picking
company_id
Many2one → res.company
index=True
readonly=True
related='picking_type_id.company_id'
store=True
string='Company'
args: 'res.company'
date
Datetime
copy=False
default=fields.Datetime.now
help='Creation Date, usually the time of the order'
states={'done': [('readonly', True)], 'cancel': [('readonly', True)]}
tracking=True
args: 'Creation Date'
date_deadline
Datetime
compute='_compute_date_deadline'
help='Date Promise to the customer on the top level document (SO/PO)'
store=True
args: 'Deadline'
date_done
Datetime
copy=False
help='Date at which the transfer has been processed or cancelled.'
readonly=True
args: 'Date of Transfer'
delay_alert_date
Datetime
compute='_compute_delay_alert_date'
search='_search_delay_alert_date'
args: 'Delay Alert Date'
group_id
Many2one → procurement.group
readonly=True
related='move_ids.group_id'
store=True
args: 'procurement.group', 'Procurement Group'
has_deadline_issue
Boolean
compute='_compute_has_deadline_issue'
default=False
help='Is late or will be late depending on the deadline and scheduled date'
store=True
args: 'Is late'
has_packages
Boolean
compute='_compute_has_packages'
help='Check the existence of destination packages on move lines'
args: 'Has Packages'
has_scrap_move
Boolean
compute='_has_scrap_move'
args: 'Has Scrap Moves'
has_tracking
Boolean
compute='_compute_has_tracking'
hide_picking_type
Boolean
compute='_compute_hide_pickign_type'
immediate_transfer
Boolean
default=False
is_locked
Boolean
default=True
help='When the picking is not done this allows changing the initial demand. When the picking is done this allows changing the done quantities.'
is_signed
Boolean
compute='_compute_is_signed'
args: 'Is Signed'
json_popover
Char
compute='_compute_json_popover'
args: 'JSON data for the popover widget'
location_dest_id
Many2one → stock.location
check_company=True
compute='_compute_location_id'
precompute=True
readonly=False
required=True
states={'done': [('readonly', True)]}
store=True
args: 'stock.location', 'Destination Location'
location_id
Many2one → stock.location
check_company=True
compute='_compute_location_id'
precompute=True
readonly=False
required=True
states={'done': [('readonly', True)]}
store=True
args: 'stock.location', 'Source Location'
move_ids
One2many → stock.move
copy=True
string='Stock Moves'
args: 'stock.move', 'picking_id'
move_ids_without_package
One2many → stock.move
compute='_compute_move_without_package'
compute_sudo=True
inverse='_set_move_without_package'
string='Stock moves not in package'
args: 'stock.move', 'picking_id'
move_line_exist
Boolean
compute='_compute_move_line_exist'
help='Check the existence of pack operation on the picking'
args: 'Has Pack Operations'
move_line_ids
One2many → stock.move.line
move_line_ids_without_package
One2many → stock.move.line
domain=['|', ('package_level_id', '=', False), ('picking_type_entire_packs', '=', False)]
args: 'stock.move.line', 'picking_id', 'Operations without package'
move_line_nosuggest_ids
One2many → stock.move.line
domain=['|', ('reserved_qty', '=', 0.0), '&', ('reserved_qty', '!=', 0.0), ('qty_done', '!=', 0.0)]
args: 'stock.move.line', 'picking_id'
move_type
Selection
default='direct'
help='It specifies goods to be deliver partially or all at once'
required=True
states={'done': [('readonly', True)], 'cancel': [('readonly', True)]}
args: [('direct', 'As soon as possible'), ('one', 'When all products are ready')], 'Shipping Policy'
name
Char
copy=False
default='/'
index='trigram'
readonly=True
args: 'Reference'
note
Html
origin
Char
help='Reference of the document'
index='trigram'
states={'done': [('readonly', True)], 'cancel': [('readonly', True)]}
args: 'Source Document'
owner_id
Many2one → res.partner
check_company=True
help='When validating the transfer, the products will be assigned to this owner.'
states={'done': [('readonly', True)], 'cancel': [('readonly', True)]}
args: 'res.partner', 'Assign Owner'
package_level_ids
One2many → stock.package_level
package_level_ids_details
One2many → stock.package_level
partner_id
Many2one → res.partner
check_company=True
states={'done': [('readonly', True)], 'cancel': [('readonly', True)]}
args: 'res.partner', 'Contact'
picking_type_code
Selection
readonly=True
related='picking_type_id.code'
picking_type_entire_packs
Boolean
related='picking_type_id.show_entire_packs'
picking_type_id
Many2one → stock.picking.type
index=True
readonly=True
required=True
states={'draft': [('readonly', False)]}
args: 'stock.picking.type', 'Operation Type'
printed
Boolean
copy=False
args: 'Printed'
priority
Selection
default='0'
help='Products will be reserved first for the transfers with the highest priorities.'
string='Priority'
args: PROCUREMENT_PRIORITIES
product_id
Many2one → product.product
readonly=True
related='move_ids.product_id'
args: 'product.product', 'Product'
products_availability
Char
compute='_compute_products_availability'
help='Latest product availability status of the picking'
string='Product Availability'
products_availability_state
Selection
compute='_compute_products_availability'
args: [('available', 'Available'), ('expected', 'Expected'), ('late', 'Late')]
scheduled_date
Datetime
compute='_compute_scheduled_date'
default=fields.Datetime.now
help='Scheduled time for the first part of the shipment to be processed. Setting manually a value here would set it as expected date for all the stock moves.'
index=True
inverse='_set_scheduled_date'
states={'done': [('readonly', True)], 'cancel': [('readonly', True)]}
store=True
tracking=True
args: 'Scheduled Date'
show_allocation
Boolean
compute='_compute_show_allocation'
help='Technical Field used to decide whether the button "Allocation" should be displayed.'
show_check_availability
Boolean
compute='_compute_show_check_availability'
help='Technical field used to compute whether the button "Check Availability" should be displayed.'
show_clear_qty_button
Boolean
compute='_compute_show_qty_button'
show_lots_text
Boolean
compute='_compute_show_lots_text'
show_mark_as_todo
Boolean
compute='_compute_show_mark_as_todo'
help='Technical field used to compute whether the button "Mark as Todo" should be displayed.'
show_operations
Boolean
compute='_compute_show_operations'
show_reserved
Boolean
related='picking_type_id.show_reserved'
show_set_qty_button
Boolean
compute='_compute_show_qty_button'
show_validate
Boolean
compute='_compute_show_validate'
help='Technical field used to decide whether the button "Validate" should be displayed.'
signature
Image
attachment=True
copy=False
help='Signature'
args: 'Signature'
state
Selection
compute='_compute_state'
copy=False
help=' * Draft: The transfer is not confirmed yet. Reservation doesn\'t apply.\n * Waiting another operation: This transfer is waiting for another operation before being ready.\n * Waiting: The transfer is waiting for the availability of some products.\n(a) The shipping policy is "As soon as possible": no product could be reserved.\n(b) The shipping policy is "When all products are ready": not all the products could be reserved.\n * Ready: The transfer is ready to be processed.\n(a) The shipping policy is "As soon as possible": at least one product has been reserved.\n(b) The shipping policy is "When all products are ready": all product have been reserved.\n * Done: The transfer has been processed.\n * Cancelled: The transfer has been cancelled.'
index=True
readonly=True
store=True
string='Status'
tracking=True
args: [('draft', 'Draft'), ('waiting', 'Waiting Another Operation'), ('confirmed', 'Waiting'), ('assigned', 'Ready'), ('done', 'Done'), ('cancel', 'Cancelled')]
use_create_lots
Boolean
related='picking_type_id.use_create_lots'
use_existing_lots
Boolean
related='picking_type_id.use_existing_lots'
user_id
Many2one → res.users
default=<expr>
domain=<expr>
states={'done': [('readonly', True)], 'cancel': [('readonly', True)]}
tracking=True
args: 'res.users', 'Responsible'
action_assign(self)
action_cancel(self)
action_clear_quantities_to_zero(self)
action_confirm(self)
action_open_label_layout(self)
action_open_label_type(self)
action_picking_move_tree(self)
action_put_in_pack(self)
action_see_move_scrap(self)
action_see_packages(self)
action_set_quantities_to_reservation(self)
action_toggle_is_locked(self)
action_view_reception_report(self)
button_scrap(self)
button_validate(self)
create(self, vals_list)
do_print_picking(self)
do_unreserve(self)
onchange_partner_id(self)
should_print_delivery_address(self)
unlink(self)
write(self, vals)
No new fields.
Public methods (0)No public methods.
active
Boolean
default=True
args: 'Active'
auto_show_reception_report
Boolean
help='If this checkbox is ticked, Odoo will automatically show the reception report (if there are moves to allocate to) when validating.'
args: 'Show Reception Report at Validation'
barcode
Char
copy=False
args: 'Barcode'
code
Selection
default='incoming'
required=True
args: [('incoming', 'Receipt'), ('outgoing', 'Delivery'), ('internal', 'Internal Transfer')], 'Type of Operation'
color
Integer
company_id
Many2one → res.company
default=<expr>
index=True
required=True
args: 'res.company', 'Company'
count_picking
Integer
compute='_compute_picking_count'
count_picking_backorders
Integer
compute='_compute_picking_count'
count_picking_draft
Integer
compute='_compute_picking_count'
count_picking_late
Integer
compute='_compute_picking_count'
count_picking_ready
Integer
compute='_compute_picking_count'
count_picking_waiting
Integer
compute='_compute_picking_count'
create_backorder
Selection
default='ask'
help='When validating a transfer:\n * Ask: users are asked to choose if they want to make a backorder for remaining products\n * Always: a backorder is automatically created for the remaining products\n * Never: remaining products are cancelled'
required=True
args: [('ask', 'Ask'), ('always', 'Always'), ('never', 'Never')], 'Create Backorder'
default_location_dest_id
Many2one → stock.location
check_company=True
help='This is the default destination location when you create a picking manually with this operation type. It is possible however to change it or that the routes put another location. If it is empty, it will check for the customer location on the partner. '
args: 'stock.location', 'Default Destination Location'
default_location_src_id
Many2one → stock.location
check_company=True
help='This is the default source location when you create a picking manually with this operation type. It is possible however to change it or that the routes put another location. If it is empty, it will check for the supplier location on the partner. '
args: 'stock.location', 'Default Source Location'
hide_reservation_method
Boolean
compute='_compute_hide_reservation_method'
name
Char
required=True
translate=True
args: 'Operation Type'
print_label
Boolean
help='If this checkbox is ticked, label will be print in this operation.'
args: 'Print Label'
reservation_days_before
Integer
help='Maximum number of days before scheduled date that products should be reserved.'
args: 'Days'
reservation_days_before_priority
Integer
help='Maximum number of days before scheduled date that priority picking products should be reserved.'
args: 'Days when starred'
reservation_method
Selection
default='at_confirm'
help='How products in transfers of this operation type should be reserved.'
required=True
args: [('at_confirm', 'At Confirmation'), ('manual', 'Manually'), ('by_date', 'Before scheduled date')], 'Reservation Method'
return_picking_type_id
Many2one → stock.picking.type
check_company=True
args: 'stock.picking.type', 'Operation Type for Returns'
sequence
Integer
help="Used to order the 'All Operations' kanban view"
args: 'Sequence'
sequence_code
Char
required=True
args: 'Sequence Prefix'
sequence_id
Many2one → ir.sequence
check_company=True
copy=False
args: 'ir.sequence', 'Reference Sequence'
show_entire_packs
Boolean
help='If ticked, you will be able to select entire packages to move'
args: 'Move Entire Packages'
show_operations
Boolean
default=_default_show_operations
help='If this checkbox is ticked, the pickings lines will represent detailed stock operations. If not, the picking lines will represent an aggregate of detailed stock operations.'
args: 'Show Detailed Operations'
show_reserved
Boolean
default=True
help='If this checkbox is ticked, Odoo will automatically pre-fill the detailed operations with the corresponding products, locations and lot/serial numbers.'
args: 'Pre-fill Detailed Operations'
use_create_lots
Boolean
default=True
help='If this is checked only, it will suppose you want to create new Lots/Serial Numbers, so you can provide them in a text field. '
args: 'Create New Lots/Serial Numbers'
use_existing_lots
Boolean
default=True
help='If this is checked, you will be able to choose the Lots/Serial Numbers. You can also decide to not put lots in this operation type. This means it will create stock with no lot or not put a restriction on the lot taken. '
args: 'Use Existing Lots/Serial Numbers'
warehouse_id
Many2one → stock.warehouse
check_company=True
compute='_compute_warehouse_id'
ondelete='cascade'
readonly=False
store=True
args: 'stock.warehouse', 'Warehouse'
copy(self, default=None)
create(self, vals_list)
get_action_picking_tree_backorder(self)
get_action_picking_tree_late(self)
get_action_picking_tree_ready(self)
get_action_picking_tree_waiting(self)
get_action_picking_type_operations(self)
get_stock_picking_action_picking_type(self)
name_get(self)
write(self, vals)
No new fields.
Public methods (0)No public methods.
active
Boolean
default=True
args: 'Active'
category_id
Many2one → product.category
default=_default_category_id
domain=_domain_category_id
ondelete='cascade'
args: 'product.category', 'Product Category'
company_id
Many2one → res.company
default=<expr>
index=True
required=True
args: 'res.company', 'Company'
location_in_id
Many2one → stock.location
check_company=True
default=_default_location_id
domain="[('child_ids', '!=', False), '|', ('company_id', '=', False), ('company_id', '=', company_id)]"
index=True
ondelete='cascade'
required=True
args: 'stock.location', 'When product arrives in'
location_out_id
Many2one → stock.location
check_company=True
domain="[('id', 'child_of', location_in_id), '|', ('company_id', '=', False), ('company_id', '=', company_id)]"
ondelete='cascade'
required=True
args: 'stock.location', 'Store to sublocation'
package_type_ids
Many2many → stock.package.type
check_company=True
string='Package Type'
args: 'stock.package.type'
product_id
Many2one → product.product
check_company=True
default=_default_product_id
domain=_domain_product_id
ondelete='cascade'
args: 'product.product', 'Product'
sequence
Integer
help='Give to the more specialized category, a higher priority to have them in top of the list.'
args: 'Priority'
storage_category_id
Many2one → stock.storage.category
check_company=True
ondelete='cascade'
args: 'stock.storage.category', 'Storage Category'
create(self, vals_list)
write(self, vals)
No new fields.
Public methods (0)No public methods.
available_quantity
Float
compute='_compute_available_quantity'
digits='Product Unit of Measure'
help="On hand quantity which hasn't been reserved on a transfer, in the default unit of measure of the product"
args: 'Available Quantity'
company_id
Many2one
readonly=True
related='location_id.company_id'
store=True
string='Company'
cyclic_inventory_frequency
Integer
related='location_id.cyclic_inventory_frequency'
in_date
Datetime
default=fields.Datetime.now
readonly=True
required=True
args: 'Incoming Date'
inventory_date
Date
compute='_compute_inventory_date'
help='Next date the On Hand Quantity should be counted.'
readonly=False
store=True
args: 'Scheduled Date'
inventory_diff_quantity
Float
compute='_compute_inventory_diff_quantity'
digits='Product Unit of Measure'
help="Indicates the gap between the product's theoretical quantity and its counted quantity."
readonly=True
store=True
args: 'Difference'
inventory_quantity
Float
digits='Product Unit of Measure'
help="The product's counted quantity."
args: 'Counted Quantity'
inventory_quantity_auto_apply
Float
compute='_compute_inventory_quantity_auto_apply'
digits='Product Unit of Measure'
groups='stock.group_stock_manager'
inverse='_set_inventory_quantity'
args: 'Inventoried Quantity'
inventory_quantity_set
Boolean
compute='_compute_inventory_quantity_set'
default=False
readonly=False
store=True
is_outdated
Boolean
compute='_compute_is_outdated'
args: 'Quantity has been moved since last count'
last_count_date
Date
compute='_compute_last_count_date'
help='Last time the Quantity was Updated'
location_id
Many2one → stock.location
auto_join=True
check_company=True
domain=<expr>
index=True
ondelete='restrict'
required=True
args: 'stock.location', 'Location'
lot_id
Many2one → stock.lot
check_company=True
domain=<expr>
index=True
ondelete='restrict'
args: 'stock.lot', 'Lot/Serial Number'
on_hand
Boolean
search='_search_on_hand'
store=False
args: 'On Hand'
owner_id
Many2one → res.partner
check_company=True
help='This is the owner of the quant'
args: 'res.partner', 'Owner'
package_id
Many2one → stock.quant.package
check_company=True
domain="[('location_id', '=', location_id)]"
help='The package containing this quant'
index=True
ondelete='restrict'
args: 'stock.quant.package', 'Package'
priority
Selection
related='product_tmpl_id.priority'
product_categ_id
Many2one
related='product_tmpl_id.categ_id'
product_id
Many2one → product.product
check_company=True
domain=<expr>
index=True
ondelete='restrict'
required=True
args: 'product.product', 'Product'
product_tmpl_id
Many2one → product.template
related='product_id.product_tmpl_id'
string='Product Template'
args: 'product.template'
product_uom_id
Many2one → uom.uom
readonly=True
related='product_id.uom_id'
args: 'uom.uom', 'Unit of Measure'
quantity
Float
digits='Product Unit of Measure'
help='Quantity of products in this quant, in the default unit of measure of the product'
readonly=True
args: 'Quantity'
reserved_quantity
Float
default=0.0
digits='Product Unit of Measure'
help='Quantity of reserved products in this quant, in the default unit of measure of the product'
readonly=True
required=True
args: 'Reserved Quantity'
sn_duplicated
Boolean
compute='_compute_sn_duplicated'
help='If the same SN is in another Quant'
string='Duplicated Serial Number'
storage_category_id
Many2one
related='location_id.storage_category_id'
store=True
tracking
Selection
readonly=True
related='product_id.tracking'
user_id
Many2one → res.users
domain=<expr>
help='User assigned to do product count.'
args: 'res.users', 'Assigned To'
warehouse_id
Many2one → stock.warehouse
related='location_id.warehouse_id'
args: 'stock.warehouse'
action_apply_inventory(self)
action_inventory_history(self)
action_reset(self)
action_set_inventory_quantity(self)
action_set_inventory_quantity_to_zero(self)
action_view_inventory(self)
action_view_orderpoints(self)
action_view_quants(self)
action_view_stock_moves(self)
action_warning_duplicated_sn(self)
check_location_id(self)
check_product_id(self)
check_quantity(self)
create(self, vals_list)
get_import_templates(self)
read_group(self, domain, fields, groupby, offset=0, limit=None, orderby=False, lazy=True)
write(self, vals)
company_id
Many2one → res.company
compute='_compute_package_info'
index=True
readonly=True
store=True
args: 'res.company', 'Company'
location_id
Many2one → stock.location
compute='_compute_package_info'
index=True
readonly=True
store=True
args: 'stock.location', 'Location'
name
Char
copy=False
default=<expr>
index='trigram'
required=True
args: 'Package Reference'
owner_id
Many2one → res.partner
compute='_compute_package_info'
compute_sudo=True
index='btree_not_null'
readonly=True
search='_search_owner'
args: 'res.partner', 'Owner'
pack_date
Date
default=fields.Date.today
args: 'Pack Date'
package_type_id
Many2one → stock.package.type
index=True
args: 'stock.package.type', 'Package Type'
package_use
Selection
default='disposable'
help="Reusable boxes are used for batch picking and emptied afterwards to be reused. In the barcode application, scanning a reusable box will add the products in this box.\n Disposable boxes aren't reused, when scanning a disposable box in the barcode application, the contained products are added to the transfer."
required=True
string='Package Use'
args: [('disposable', 'Disposable Box'), ('reusable', 'Reusable Box')]
quant_ids
One2many → stock.quant
domain=['|', ('quantity', '!=', 0), ('reserved_quantity', '!=', 0)]
readonly=True
args: 'stock.quant', 'package_id', 'Bulk Content'
valid_sscc
Boolean
compute='_compute_valid_sscc'
args: 'Package name is valid SSCC'
action_view_picking(self)
unpack(self)
inventory_datetime
Datetime
default=fields.Datetime.now
help='Choose a date to get the inventory at that date'
args: 'Inventory at Date'
open_at_date(self)
json_lead_days
Char
compute='_compute_json_lead_days'
json_replenishment_history
Char
compute='_compute_json_replenishment_history'
orderpoint_id
Many2one → stock.warehouse.orderpoint
product_id
Many2one → product.product
related='orderpoint_id.product_id'
args: 'product.product'
qty_to_order
Float
related='orderpoint_id.qty_to_order'
warehouseinfo_ids
One2many
related='orderpoint_id.warehouse_id.resupply_route_ids'
wh_replenishment_option_ids
One2many → stock.replenishment.option
compute='_compute_wh_replenishment_options'
args: 'stock.replenishment.option', 'replenishment_info_id'
No public methods.
free_qty
Float
compute='_compute_free_qty'
lead_time
Char
compute='_compute_lead_time'
location_id
Many2one → stock.location
related='warehouse_id.lot_stock_id'
args: 'stock.location'
product_id
Many2one → product.product
qty_to_order
Float
related='replenishment_info_id.qty_to_order'
replenishment_info_id
Many2one → stock.replenishment.info
route_id
Many2one → stock.route
uom
Char
related='product_id.uom_name'
warehouse_id
Many2one → stock.warehouse
related='route_id.supplier_wh_id'
args: 'stock.warehouse'
warning_message
Char
compute='_compute_warning_message'
order_all(self)
order_avbl(self)
select_route(self)
inventory_date
Date
default=fields.Datetime.now
help='Choose a date to get the inventory at that date'
required=True
args: 'Inventory Date'
quant_ids
Many2many → stock.quant
set_count
Selection
default='empty'
string='Count'
args: [('empty', 'Leave Empty'), ('set', 'Set Current Value')]
user_id
Many2one → res.users
domain=<expr>
string='User'
args: 'res.users'
action_request_count(self)
company_id
Many2one
related='picking_id.company_id'
location_id
Many2one → stock.location
domain="['|', ('id', '=', original_location_id), '|', '&', ('return_location', '=', True), ('company_id', '=', False), '&', ('return_location', '=', True), ('company_id', '=', company_id)]"
args: 'stock.location', 'Return Location'
move_dest_exists
Boolean
readonly=True
args: 'Chained Move Exists'
original_location_id
Many2one → stock.location
parent_location_id
Many2one → stock.location
picking_id
Many2one → stock.picking
product_return_moves
One2many → stock.return.picking.line
create_returns(self)
default_get(self, fields)
move_id
Many2one → stock.move
product_id
Many2one → product.product
domain="[('id', '=', product_id)]"
required=True
string='Product'
args: 'product.product'
quantity
Float
digits='Product Unit of Measure'
required=True
args: 'Quantity'
uom_id
Many2one → uom.uom
related='product_id.uom_id'
string='Unit of Measure'
args: 'uom.uom'
wizard_id
Many2one → stock.return.picking
string='Wizard'
args: 'stock.return.picking'
No public methods.
active
Boolean
default=True
help='If the active field is set to False, it will allow you to hide the route without removing it.'
args: 'Active'
categ_ids
Many2many → product.category
copy=False
args: 'product.category', 'stock_route_categ', 'route_id', 'categ_id', 'Product Categories'
company_id
Many2one → res.company
default=<expr>
help='Leave this field empty if this route is shared between all companies'
index=True
args: 'res.company', 'Company'
name
Char
required=True
translate=True
args: 'Route'
packaging_ids
Many2many → product.packaging
check_company=True
copy=False
args: 'product.packaging', 'stock_route_packaging', 'route_id', 'packaging_id', 'Packagings'
packaging_selectable
Boolean
help='When checked, the route will be selectable on the Product Packaging.'
args: 'Applicable on Packaging'
product_categ_selectable
Boolean
help='When checked, the route will be selectable on the Product Category.'
args: 'Applicable on Product Category'
product_ids
Many2many → product.template
check_company=True
copy=False
args: 'product.template', 'stock_route_product', 'route_id', 'product_id', 'Products'
product_selectable
Boolean
default=True
help='When checked, the route will be selectable in the Inventory tab of the Product form.'
args: 'Applicable on Product'
rule_ids
One2many → stock.rule
copy=True
args: 'stock.rule', 'route_id', 'Rules'
sequence
Integer
default=0
args: 'Sequence'
supplied_wh_id
Many2one → stock.warehouse
supplier_wh_id
Many2one → stock.warehouse
warehouse_domain_ids
One2many → stock.warehouse
compute='_compute_warehouses'
args: 'stock.warehouse'
warehouse_ids
Many2many → stock.warehouse
copy=False
domain="[('id', 'in', warehouse_domain_ids)]"
args: 'stock.warehouse', 'stock_route_warehouse', 'route_id', 'warehouse_id', 'Warehouses'
warehouse_selectable
Boolean
help='When a warehouse is selected for this route, this route should be seen as the default route when products pass through this warehouse.'
args: 'Applicable on Warehouse'
toggle_active(self)
action
Selection
default='pull'
index=True
required=True
selection=[('pull', 'Pull From'), ('push', 'Push To'), ('pull_push', 'Pull & Push')]
string='Action'
active
Boolean
default=True
help='If unchecked, it will allow you to hide the rule without removing it.'
args: 'Active'
auto
Selection
default='manual'
help="The 'Manual Operation' value will create a stock move after the current one. With 'Automatic No Step Added', the location is replaced in the original move."
required=True
string='Automatic Move'
args: [('manual', 'Manual Operation'), ('transparent', 'Automatic No Step Added')]
company_id
Many2one → res.company
default=<expr>
domain="[('id', '=?', route_company_id)]"
args: 'res.company', 'Company'
delay
Integer
default=0
help='The expected date of the created transfer will be computed based on this lead time.'
args: 'Lead Time'
group_id
Many2one → procurement.group
group_propagation_option
Selection
default='propagate'
string='Propagation of Procurement Group'
args: [('none', 'Leave Empty'), ('propagate', 'Propagate'), ('fixed', 'Fixed')]
location_dest_id
Many2one → stock.location
check_company=True
index=True
required=True
args: 'stock.location', 'Destination Location'
location_src_id
Many2one → stock.location
check_company=True
index=True
args: 'stock.location', 'Source Location'
name
Char
help='This field will fill the packing origin and the name of its moves'
required=True
translate=True
args: 'Name'
partner_address_id
Many2one → res.partner
check_company=True
help='Address where goods should be delivered. Optional.'
args: 'res.partner', 'Partner Address'
picking_type_code_domain
Char
compute='_compute_picking_type_code_domain'
picking_type_id
Many2one → stock.picking.type
check_company=True
domain="[('code', '=?', picking_type_code_domain)]"
required=True
args: 'stock.picking.type', 'Operation Type'
procure_method
Selection
default='make_to_stock'
help='Take From Stock: the products will be taken from the available stock of the source location.\nTrigger Another Rule: the system will try to find a stock rule to bring the products in the source location. The available stock will be ignored.\nTake From Stock, if Unavailable, Trigger Another Rule: the products will be taken from the available stock of the source location.If there is no stock available, the system will try to find a rule to bring the products in the source location.'
required=True
string='Supply Method'
args: [('make_to_stock', 'Take From Stock'), ('make_to_order', 'Trigger Another Rule'), ('mts_else_mto', 'Take From Stock, if unavailable, Trigger Another Rule')]
propagate_cancel
Boolean
default=False
help='When ticked, if the move created by this rule is cancelled, the next move will be cancelled too.'
args: 'Cancel Next Move'
propagate_carrier
Boolean
default=False
help='When ticked, carrier of shipment will be propagated.'
args: 'Propagation of carrier'
propagate_warehouse_id
Many2one → stock.warehouse
help='The warehouse to propagate on the created move/procurement, which can be different of the warehouse this rule is for (e.g for resupplying rules from another warehouse)'
args: 'stock.warehouse', 'Warehouse to Propagate'
route_company_id
Many2one
related='route_id.company_id'
string='Route Company'
route_id
Many2one → stock.route
index=True
ondelete='cascade'
required=True
args: 'stock.route', 'Route'
route_sequence
Integer
compute_sudo=True
related='route_id.sequence'
store=True
args: 'Route Sequence'
rule_message
Html
compute='_compute_action_message'
sequence
Integer
default=20
args: 'Sequence'
warehouse_id
Many2one → stock.warehouse
check_company=True
index=True
args: 'stock.warehouse', 'Warehouse'
default_get(self, fields_list)
product_has_variants
Boolean
default=False
required=True
args: 'Has variants'
product_id
Many2one → product.product
required=True
string='Product'
args: 'product.product'
product_tmpl_id
Many2one → product.template
required=True
string='Product Template'
args: 'product.template'
warehouse_ids
Many2many → stock.warehouse
help='Show the routes that apply on selected warehouses.'
required=True
string='Warehouses'
args: 'stock.warehouse'
default_get(self, fields)
print_report(self)
No new fields.
Public methods (1)procure_calculation(self)
company_id
Many2one → res.company
default=<expr>
required=True
states={'done': [('readonly', True)]}
string='Company'
args: 'res.company'
date_done
Datetime
readonly=True
args: 'Date'
location_id
Many2one → stock.location
check_company=True
default=_get_default_location_id
domain="[('usage', '=', 'internal'), ('company_id', 'in', [company_id, False])]"
required=True
states={'done': [('readonly', True)]}
args: 'stock.location', 'Source Location'
lot_id
Many2one → stock.lot
check_company=True
domain="[('product_id', '=', product_id), ('company_id', '=', company_id)]"
states={'done': [('readonly', True)]}
args: 'stock.lot', 'Lot/Serial'
move_id
Many2one → stock.move
check_company=True
copy=False
readonly=True
args: 'stock.move', 'Scrap Move'
name
Char
copy=False
default=<expr>
readonly=True
required=True
states={'done': [('readonly', True)]}
args: 'Reference'
origin
Char
string='Source Document'
owner_id
Many2one → res.partner
check_company=True
states={'done': [('readonly', True)]}
args: 'res.partner', 'Owner'
package_id
Many2one → stock.quant.package
check_company=True
states={'done': [('readonly', True)]}
args: 'stock.quant.package', 'Package'
picking_id
Many2one → stock.picking
check_company=True
states={'done': [('readonly', True)]}
args: 'stock.picking', 'Picking'
product_id
Many2one → product.product
check_company=True
domain="[('type', 'in', ['product', 'consu']), '|', ('company_id', '=', False), ('company_id', '=', company_id)]"
required=True
states={'done': [('readonly', True)]}
args: 'product.product', 'Product'
product_uom_category_id
Many2one
related='product_id.uom_id.category_id'
product_uom_id
Many2one → uom.uom
domain="[('category_id', '=', product_uom_category_id)]"
required=True
states={'done': [('readonly', True)]}
args: 'uom.uom', 'Unit of Measure'
scrap_location_id
Many2one → stock.location
check_company=True
default=_get_default_scrap_location_id
domain="[('scrap_location', '=', True), ('company_id', 'in', [company_id, False])]"
required=True
states={'done': [('readonly', True)]}
args: 'stock.location', 'Scrap Location'
scrap_qty
Float
compute='_compute_scrap_qty'
digits='Product Unit of Measure'
precompute=True
readonly=False
required=True
states={'done': [('readonly', True)]}
store=True
args: 'Quantity'
state
Selection
default='draft'
readonly=True
string='Status'
tracking=True
args: [('draft', 'Draft'), ('done', 'Done')]
tracking
Selection
readonly=True
related='product_id.tracking'
string='Product Tracking'
action_get_stock_move_lines(self)
action_get_stock_picking(self)
action_validate(self)
create(self, vals_list)
do_scrap(self)
write(self, vals)
No new fields.
Public methods (0)No public methods.
allow_new_product
Selection
default='mixed'
required=True
args: [('empty', 'If the location is empty'), ('same', 'If all products are same'), ('mixed', 'Allow mixed products')]
capacity_ids
One2many → stock.storage.category.capacity
copy=True
args: 'stock.storage.category.capacity', 'storage_category_id'
company_id
Many2one → res.company
location_ids
One2many → stock.location
max_weight
Float
digits='Stock Weight'
args: 'Max Weight'
name
Char
required=True
args: 'Storage Category'
package_capacity_ids
One2many → stock.storage.category.capacity
compute='_compute_storage_capacity_ids'
inverse='_set_storage_capacity_ids'
args: 'stock.storage.category.capacity'
product_capacity_ids
One2many → stock.storage.category.capacity
compute='_compute_storage_capacity_ids'
inverse='_set_storage_capacity_ids'
args: 'stock.storage.category.capacity'
weight_uom_name
Char
compute='_compute_weight_uom_name'
string='Weight unit'
copy(self, default=None)
company_id
Many2one → res.company
related='storage_category_id.company_id'
args: 'res.company', 'Company'
package_type_id
Many2one → stock.package.type
check_company=True
ondelete='cascade'
args: 'stock.package.type', 'Package Type'
product_id
Many2one → product.product
check_company=True
domain=<expr>
ondelete='cascade'
args: 'product.product', 'Product'
product_uom_id
Many2one
related='product_id.uom_id'
quantity
Float
required=True
args: 'Quantity'
storage_category_id
Many2one → stock.storage.category
index=True
ondelete='cascade'
required=True
args: 'stock.storage.category'
No public methods.
No new fields.
Public methods (4)get_html(self, given_context=None)
get_lines(self, line_id=False, **kw)
get_pdf(self, line_data=None)
get_pdf_lines(self, line_data=[])
product_ids
Many2many → product.product
string='Products'
args: 'product.product'
quant_ids
Many2many → stock.quant
string='Quants'
args: 'stock.quant'
tracking_line_ids
One2many → stock.track.line
action_confirm(self)
product_display_name
Char
compute='_compute_display_name'
readonly=True
args: 'Name'
product_id
Many2one → product.product
readonly=True
args: 'product.product', 'Product'
tracking
Selection
related='product_id.tracking'
wizard_id
Many2one → stock.track.confirmation
readonly=True
args: 'stock.track.confirmation'
No public methods.
No new fields.
Public methods (0)No public methods.
active
Boolean
default=True
args: 'Active'
code
Char
help='Short name used to identify your warehouse'
required=True
size=5
args: 'Short Name'
company_id
Many2one → res.company
default=<expr>
help='The company is automatically set from your user preferences.'
readonly=True
required=True
args: 'res.company', 'Company'
crossdock_route_id
Many2one → stock.route
ondelete='restrict'
args: 'stock.route', 'Crossdock Route'
delivery_route_id
Many2one → stock.route
ondelete='restrict'
args: 'stock.route', 'Delivery Route'
delivery_steps
Selection
default='ship_only'
help='Default outgoing route to follow'
required=True
args: [('ship_only', 'Deliver goods directly (1 step)'), ('pick_ship', 'Send goods in output and then deliver (2 steps)'), ('pick_pack_ship', 'Pack goods, send goods in output and then deliver (3 steps)')], 'Outgoing Shipments'
in_type_id
Many2one → stock.picking.type
check_company=True
args: 'stock.picking.type', 'In Type'
int_type_id
Many2one → stock.picking.type
check_company=True
args: 'stock.picking.type', 'Internal Type'
lot_stock_id
Many2one → stock.location
check_company=True
domain="[('usage', '=', 'internal'), ('company_id', '=', company_id)]"
required=True
args: 'stock.location', 'Location Stock'
mto_pull_id
Many2one → stock.rule
name
Char
default=_default_name
required=True
args: 'Warehouse'
out_type_id
Many2one → stock.picking.type
check_company=True
args: 'stock.picking.type', 'Out Type'
pack_type_id
Many2one → stock.picking.type
check_company=True
args: 'stock.picking.type', 'Pack Type'
partner_id
Many2one → res.partner
check_company=True
default=<expr>
args: 'res.partner', 'Address'
pick_type_id
Many2one → stock.picking.type
check_company=True
args: 'stock.picking.type', 'Pick Type'
reception_route_id
Many2one → stock.route
ondelete='restrict'
args: 'stock.route', 'Receipt Route'
reception_steps
Selection
default='one_step'
help='Default incoming route to follow'
required=True
args: [('one_step', 'Receive goods directly (1 step)'), ('two_steps', 'Receive goods in input and then stock (2 steps)'), ('three_steps', 'Receive goods in input, then quality and then stock (3 steps)')], 'Incoming Shipments'
resupply_route_ids
One2many → stock.route
help='Routes will be created for these resupply warehouses and you can select them on products and product categories'
args: 'stock.route', 'supplied_wh_id', 'Resupply Routes'
resupply_wh_ids
Many2many → stock.warehouse
help='Routes will be created automatically to resupply this warehouse from the warehouses ticked'
args: 'stock.warehouse', 'stock_wh_resupply_table', 'supplied_wh_id', 'supplier_wh_id', 'Resupply From'
return_type_id
Many2one → stock.picking.type
check_company=True
args: 'stock.picking.type', 'Return Type'
route_ids
Many2many → stock.route
check_company=True
domain="[('warehouse_selectable', '=', True), '|', ('company_id', '=', False), ('company_id', '=', company_id)]"
help='Defaults routes through the warehouse'
args: 'stock.route', 'stock_route_warehouse', 'warehouse_id', 'route_id', 'Routes'
sequence
Integer
default=10
help='Gives the sequence of this line when displaying the warehouses.'
view_location_id
Many2one → stock.location
check_company=True
domain="[('usage', '=', 'view'), ('company_id', '=', company_id)]"
required=True
args: 'stock.location', 'View Location'
wh_input_stock_loc_id
Many2one → stock.location
check_company=True
args: 'stock.location', 'Input Location'
wh_output_stock_loc_id
Many2one → stock.location
check_company=True
args: 'stock.location', 'Output Location'
wh_pack_stock_loc_id
Many2one → stock.location
check_company=True
args: 'stock.location', 'Packing Location'
wh_qc_stock_loc_id
Many2one → stock.location
check_company=True
args: 'stock.location', 'Quality Control Location'
action_view_all_routes(self)
create(self, vals_list)
create_resupply_routes(self, supplier_warehouses)
get_current_warehouses(self)
get_rules_dict(self)
unlink(self)
write(self, vals)
No new fields.
Public methods (0)No public methods.
active
Boolean
default=True
help='If the active field is set to False, it will allow you to hide the orderpoint without removing it.'
args: 'Active'
allowed_location_ids
One2many → stock.location
comodel_name='stock.location'
compute='_compute_allowed_location_ids'
company_id
Many2one → res.company
default=<expr>
index=True
required=True
args: 'res.company', 'Company'
days_to_order
Float
compute='_compute_days_to_order'
help='Numbers of days in advance that replenishments demands are created.'
group_id
Many2one → procurement.group
copy=False
help='Moves created through this orderpoint will be put in this procurement group. If none is given, the moves generated by stock rules will be grouped into one big picking.'
args: 'procurement.group', 'Procurement Group'
lead_days_date
Date
compute='_compute_lead_days'
location_id
Many2one → stock.location
check_company=True
compute='_compute_location_id'
index=True
ondelete='cascade'
precompute=True
readonly=False
required=True
store=True
args: 'stock.location', 'Location'
name
Char
copy=False
default=<expr>
readonly=True
required=True
args: 'Name'
product_category_id
Many2one → product.category
name='Product Category'
related='product_id.categ_id'
store=True
args: 'product.category'
product_id
Many2one → product.product
check_company=True
domain=<expr>
ondelete='cascade'
required=True
args: 'product.product', 'Product'
product_max_qty
Float
default=0.0
digits='Product Unit of Measure'
help='When the virtual stock goes below the Min Quantity, Odoo generates a procurement to bring the forecasted quantity to the Quantity specified as Max Quantity.'
required=True
args: 'Max Quantity'
product_min_qty
Float
default=0.0
digits='Product Unit of Measure'
help='When the virtual stock goes below the Min Quantity specified for this field, Odoo generates a procurement to bring the forecasted quantity to the Max Quantity.'
required=True
args: 'Min Quantity'
product_tmpl_id
Many2one → product.template
related='product_id.product_tmpl_id'
args: 'product.template'
product_uom
Many2one → uom.uom
related='product_id.uom_id'
args: 'uom.uom', 'Unit of Measure'
product_uom_name
Char
readonly=True
related='product_uom.display_name'
string='Product unit of measure label'
qty_forecast
Float
compute='_compute_qty'
digits='Product Unit of Measure'
readonly=True
args: 'Forecast'
qty_multiple
Float
default=1
digits='Product Unit of Measure'
help='The procurement quantity will be rounded up to this multiple. If it is 0, the exact quantity will be used.'
required=True
args: 'Multiple Quantity'
qty_on_hand
Float
compute='_compute_qty'
digits='Product Unit of Measure'
readonly=True
args: 'On Hand'
qty_to_order
Float
compute='_compute_qty_to_order'
digits='Product Unit of Measure'
readonly=False
store=True
args: 'To Order'
route_id
Many2one → stock.route
domain="[('product_selectable', '=', True)]"
string='Preferred Route'
args: 'stock.route'
rule_ids
Many2many → stock.rule
compute='_compute_rules'
string='Rules used'
args: 'stock.rule'
snoozed_until
Date
help='Hidden until next scheduler.'
args: 'Snoozed'
trigger
Selection
default='auto'
required=True
string='Trigger'
args: [('auto', 'Auto'), ('manual', 'Manual')]
visibility_days
Float
compute='_compute_visibility_days'
help='Consider product forecast these many days in the future upon product replenishment, set to 0 for just-in-time.\nThe value depends on the type of the route (Buy or Manufacture)'
inverse='_set_visibility_days'
readonly=False
warehouse_id
Many2one → stock.warehouse
check_company=True
compute='_compute_warehouse_id'
index=True
ondelete='cascade'
precompute=True
readonly=False
required=True
store=True
args: 'stock.warehouse', 'Warehouse'
action_open_orderpoints(self)
action_product_forecast_report(self)
action_replenish(self)
action_replenish_auto(self)
action_stock_replenishment_info(self)
create(self, vals_list)
write(self, vals)
location_id
Many2one → stock.location
domain="[('usage', '=', 'internal')]"
required=True
args: 'stock.location', 'Location'
product_id
Many2one → product.product
required=True
args: 'product.product', 'Product'
product_uom_name
Char
required=True
args: 'Unit of Measure'
quant_ids
Many2many → stock.quant
compute='_compute_quant_ids'
args: 'stock.quant'
quantity
Float
required=True
string='Quantity'
action_done(self)
scrap_id
Many2one → stock.scrap
action_cancel(self)
action_done(self)
No new fields.
Public methods (1)write(self, values)
| XML ID | Name | Model | Type | Status |
|---|---|---|---|---|
exception_on_picking |
exception_on_picking | ir.ui.view | qweb | New |
inventory_warning_reset_view |
inventory.reset.warning.view | stock.inventory.warning | form | New |
inventory_warning_set_view |
inventory.set.warning.view | stock.inventory.warning | form | New |
label_lot_template_view |
label_lot_template_view | ir.ui.view | qweb | New |
label_package_template_view |
label_package_template_view | ir.ui.view | qweb | New |
label_picking_type_view |
label_picking_type_view | ir.ui.view | qweb | New |
label_product_packaging_view |
label_product_packaging_view | ir.ui.view | qweb | New |
label_product_product_view |
label_product_product_view | ir.ui.view | qweb | New |
label_transfer_template_view_pdf |
label_transfer_template_view_pdf | ir.ui.view | qweb | New |
label_transfer_template_view_zpl |
label_transfer_template_view_zpl | ir.ui.view | qweb | New |
message_body |
message_body | ir.ui.view | qweb | New |
message_head |
message_head | ir.ui.view | qweb | New |
package_level_form_edit_view |
Package Level | stock.package_level | xpath | Inherits stock.package_level_form_view |
package_level_form_view |
Package Level | stock.package_level | form | New |
package_level_tree_view_picking |
Package Level Tree Picking | stock.package_level | tree | New |
procurement_group_form_view |
procurement.group.form | procurement.group | form | New |
product_category_form_view_inherit |
product.category.form | product.category | div | Inherits product.product_category_form_view |
product_form_view_procurement_button |
product.product.procurement | product.product | data | Inherits product.product_normal_form_view |
product_label_layout_form_picking |
product.label.layout.form | product.label.layout | xpath | Inherits product.product_label_layout_form |
product_packaging_form_view |
product.packaging.form.view.stock | product.packaging | xpath | Inherits product.product_packaging_form_view |
product_packaging_tree_view |
product.packaging.tree.view.stock | product.packaging | xpath | Inherits product.product_packaging_tree_view |
product_product_view_form_easy_inherit_stock |
product.product.view.form.easy.inherit.stock | product.product | header | Inherits product.product_variant_easy_edit_view |
product_search_form_view_stock |
product.search.stock.form | product.product | field | Inherits product.product_search_form_view |
product_template_form_view_procurement_button |
product.template_procurement | product.template | data | Inherits product.product_template_only_form_view |
product_template_kanban_stock_view |
Product Template Kanban Stock | product.template | xpath | Inherits product.product_template_kanban_view |
product_template_search_form_view_stock |
product.template.search.stock.form | product.template | xpath | Inherits product.product_template_search_view |
quant_package_search_view |
stock.quant.package.search | stock.quant.package | search | New |
quant_search_view |
stock.quant.search | stock.quant | search | New |
report_delivery_document |
report_delivery_document | ir.ui.view | qweb | New |
report_deliveryslip |
report_deliveryslip | ir.ui.view | qweb | New |
report_generic_barcode |
report_generic_barcode | ir.ui.view | qweb | New |
report_inventory |
report_inventory | ir.ui.view | qweb | New |
report_location_barcode |
report_location_barcode | ir.ui.view | qweb | New |
report_lot_label |
report_lot_label | ir.ui.view | qweb | New |
report_mrp_line |
report_mrp_line | ir.ui.view | qweb | New |
report_package_barcode |
report_package_barcode | ir.ui.view | qweb | New |
report_package_barcode_small |
report_package_barcode_small | ir.ui.view | qweb | New |
report_picking |
report_picking | ir.ui.view | qweb | New |
report_picking_type_label |
report_picking_type_label | ir.ui.view | qweb | New |
report_product_product_replenishment |
report_product_product_replenishment | ir.ui.view | qweb | New |
report_product_template_replenishment |
report_product_template_replenishment | ir.ui.view | qweb | New |
report_reception |
report_reception | ir.ui.view | qweb | New |
report_reception_body |
report_reception_body | ir.ui.view | qweb | New |
report_reception_report_label |
report_reception_report_label | ir.ui.view | qweb | New |
report_replenishment_header |
report_replenishment_header | ir.ui.view | qweb | New |
report_stock_body_print |
report_stock_body_print | ir.ui.view | qweb | New |
report_stock_inventory |
report_stock_inventory | ir.ui.view | qweb | New |
report_stock_inventory_print |
report_stock_inventory_print | ir.ui.view | qweb | New |
report_stock_rule |
report_stock_rule | ir.ui.view | qweb | New |
report_stock_rule_left_arrow |
report_stock_rule_left_arrow | ir.ui.view | qweb | New |
report_stock_rule_line |
report_stock_rule_line | ir.ui.view | qweb | New |
report_stock_rule_right_arrow |
report_stock_rule_right_arrow | ir.ui.view | qweb | New |
report_stock_rule_suspension_points |
report_stock_rule_suspension_points | ir.ui.view | qweb | New |
report_stock_rule_vertical_bar |
report_stock_rule_vertical_bar | ir.ui.view | qweb | New |
res_config_settings_view_form |
res.config.settings.view.form.inherit.stock | res.config.settings | xpath | Inherits base.res_config_settings_view_form |
search_product_lot_filter |
Production Lots Filter | stock.production.lot | search | New |
stock_inventory_adjustment_name_form_view |
stock.inventory.adjustment.name.form.view | stock.inventory.adjustment.name | form | New |
stock_inventory_conflict_form_view |
stock.inventory.conflict.form.view | stock.inventory.conflict | form | New |
stock_inventory_request_count_form_view |
stock.request.count.form.view | stock.request.count | form | New |
stock_location_route_form_view |
stock.location.route.form | stock.location.route | form | New |
stock_location_route_tree |
stock.location.route.tree | stock.location.route | tree | New |
stock_location_route_view_search |
stock.location.route.search | stock.location.route | search | New |
stock_location_view_form_editable |
stock.location.form.editable | stock.location | xpath | Inherits stock.view_location_form |
stock_location_view_tree2_editable |
stock.location.tree2.editable | stock.location | xpath | Inherits stock.view_location_tree2 |
stock_move_line_view_search |
stock.move.line.search | stock.move.line | search | New |
stock_package_destination_form_view |
stock.package.destination.view | stock.package.destination | form | New |
stock_package_type_form |
stock.package.type.form | stock.package.type | form | New |
stock_package_type_tree |
stock.package.type.tree | stock.package.type | tree | New |
stock_picking_calendar |
stock.picking.calendar | stock.picking | calendar | New |
stock_picking_kanban |
stock.picking.kanban | stock.picking | kanban | New |
stock_picking_type_kanban |
stock.picking.type.kanban | stock.picking.type | kanban | New |
stock_product_search_form_view |
product.product.search.stock.form | product.product | xpath | Inherits product.product_search_form_view |
stock_putaway_list |
stock.putaway.rule.tree | stock.putaway.rule | tree | New |
stock_quant_view_graph |
stock.quant.graph | stock.quant | graph | New |
stock_reorder_report_search |
stock.warehouse.orderpoint.reorder.search | stock.warehouse.orderpoint | search | New |
stock_report_delivery_aggregated_move_lines |
stock_report_delivery_aggregated_move_lines | ir.ui.view | qweb | New |
stock_report_delivery_has_serial_move_line |
stock_report_delivery_has_serial_move_line | ir.ui.view | qweb | New |
stock_report_delivery_no_package_section_line |
stock_report_delivery_no_package_section_line | ir.ui.view | qweb | New |
stock_report_delivery_package_section_line |
stock_report_delivery_package_section_line | ir.ui.view | qweb | New |
stock_report_view_graph |
stock_report_view_graph | report.stock.quantity | graph | New |
stock_report_view_search |
report.stock.quantity.search | report.stock.quantity | search | New |
stock_scrap_form_view |
stock.scrap.form | stock.scrap | form | New |
stock_scrap_form_view2 |
stock.scrap.form2 | stock.scrap | form | New |
stock_scrap_search_view |
stock.scrap.search | stock.scrap | search | New |
stock_scrap_tree_view |
stock.scrap.tree | stock.scrap | tree | New |
stock_scrap_view_kanban |
stock.scrap.kanban | stock.scrap | kanban | New |
stock_storage_category_capacity_tree |
stock.storage.category.capacity.tree | stock.storage.category.capacity | tree | New |
stock_storage_category_form |
stock.storage.category.form | stock.storage.category | form | New |
stock_storage_category_tree |
stock.storage.category.tree | stock.storage.category | tree | New |
stock_warehouse_view_search |
stock.warehouse.search | stock.warehouse | search | New |
stock_warn_insufficient_qty_form_view |
stock.warn.insufficient.qty | stock.warn.insufficient.qty | form | New |
stock_warn_insufficient_qty_scrap_form_view |
stock.warn.insufficient.qty.scrap | stock.warn.insufficient.qty.scrap | xpath | Inherits stock.stock_warn_insufficient_qty_form_view |
track_move_template |
track_move_template | ir.ui.view | qweb | New |
view_assign_serial_numbers |
stock_assign_serial_numbers | stock.assign.serial | form | New |
view_backorder_confirmation |
stock_backorder_confirmation | stock.backorder.confirmation | form | New |
view_change_product_quantity |
Change Product Quantity | stock.change.product.qty | form | New |
view_immediate_transfer |
stock.immediate.transfer.view.form | stock.immediate.transfer | form | New |
view_location_form |
stock.location.form | stock.location | form | New |
view_location_search |
stock.location.search | stock.location | search | New |
view_location_tree2 |
stock.location.tree | stock.location | tree | New |
view_move_form |
stock.move.form | stock.move | form | New |
view_move_graph |
stock.move.graph | stock.move | graph | New |
view_move_kandan |
stock.move.kanban | stock.move | kanban | New |
view_move_line_form |
stock.move.line.form | stock.move.line | form | New |
view_move_line_tree |
stock.move.line.tree | stock.move.line | tree | New |
view_move_line_tree_detailed |
stock.move.line.tree.detailed | stock.move.line | tree | New |
view_move_pivot |
stock.move.pivot | stock.move | pivot | New |
view_move_search |
stock.move.search | stock.move | search | New |
view_move_tree |
stock.move.tree | stock.move | tree | New |
view_move_tree_receipt_picking |
stock.move.tree2 | stock.move | tree | New |
view_partner_stock_form |
res.partner.stock.property.form.inherit | res.partner | xpath | Inherits mail.res_partner_view_form_inherit_mail |
view_partner_stock_warnings_form |
res.partner.stock.warning | res.partner | page | Inherits base.view_partner_form |
view_picking_form |
stock.picking.form | stock.picking | form | New |
view_picking_internal_search |
stock.picking.internal.search | stock.picking | search | New |
view_picking_move_tree |
stock.picking.move.tree | stock.move | tree | New |
view_picking_type_form |
Operation Types | stock.picking.type | form | New |
view_picking_type_tree |
Operation types | stock.picking.type | tree | New |
view_pickingtype_filter |
stock.picking.type.filter | stock.picking.type | search | New |
view_procurement_compute_wizard |
Run Schedulers Manually | stock.scheduler.compute | form | New |
view_product_replenish |
Replenish | product.replenish | form | New |
view_production_lot_form |
stock.production.lot.form | stock.production.lot | form | New |
view_production_lot_tree |
stock.production.lot.tree | stock.production.lot | tree | New |
view_putaway_search |
stock.putaway.rule.search | stock.putaway.rule | search | New |
view_quant_package_form |
stock.quant.package.form | stock.quant.package | form | New |
view_quant_package_kanban |
stock.quant.package.kanban | stock.quant.package | kanban | New |
view_quant_package_tree |
stock.quant.package.tree | stock.quant.package | tree | New |
view_removal |
product.removal.form | product.removal | form | New |
view_route_rule_form |
stock.rule.form | stock.rule | xpath | Inherits stock.view_stock_rule_form |
view_stock_move_line_detailed_operation_tree |
stock.move.line.operations.tree | stock.move.line | tree | New |
view_stock_move_line_kanban |
stock.move.line.kanban | stock.move.line | kanban | New |
view_stock_move_line_operation_tree |
stock.move.line.operations.tree | stock.move.line | tree | New |
view_stock_move_nosuggest_operations |
stock.move.operations.nosuggest.form | stock.move | field | Inherits stock.view_stock_move_operations |
view_stock_move_operations |
stock.move.operations.form | stock.move | form | New |
view_stock_orderpoint_snooze |
Stock Orderpoint Snooze | stock.orderpoint.snooze | form | New |
view_stock_product_template_tree |
product.template.stock.tree.inherit | product.template | field | Inherits product.product_template_tree_view |
view_stock_product_tree |
product.stock.tree.inherit | product.product | field | Inherits product.product_product_tree_view |
view_stock_quant_form_editable |
stock.quant.form.editable | stock.quant | form | New |
view_stock_quant_pivot |
stock.quant.pivot | stock.quant | pivot | New |
view_stock_quant_tree |
stock.quant.tree | stock.quant | tree | New |
view_stock_quant_tree_editable |
stock.quant.tree.editable | stock.quant | tree | New |
view_stock_quant_tree_inventory_editable |
stock.quant.inventory.tree.editable | stock.quant | tree | New |
view_stock_quantity_history |
Inventory Report at Date | stock.quantity.history | form | New |
view_stock_replenishment_info |
Stock Replenishment Information | stock.replenishment.info | form | New |
view_stock_return_picking_form |
Return lines | stock.return.picking | form | New |
view_stock_rule_filter |
stock.rule.select | stock.rule | search | New |
view_stock_rule_form |
stock.rule.form | stock.rule | form | New |
view_stock_rule_tree |
stock.rule.tree | stock.rule | tree | New |
view_stock_rules_report |
Stock Rules Report | stock.rules.report | form | New |
view_stock_track_confirmation |
stock.track.confirmation.view.form | stock.track.confirmation | form | New |
view_stock_warehouse_orderpoint_kanban |
stock.warehouse.orderpoint.kanban | stock.warehouse.orderpoint | kanban | New |
view_template_property_form |
product.template.stock.property.form.inherit | product.template | xpath | Inherits product.product_template_form_view |
view_warehouse |
stock.warehouse | stock.warehouse | form | New |
view_warehouse_orderpoint_form |
stock.warehouse.orderpoint.form | stock.warehouse.orderpoint | form | New |
view_warehouse_orderpoint_tree_editable |
stock.warehouse.orderpoint.tree.editable | stock.warehouse.orderpoint | tree | New |
view_warehouse_orderpoint_tree_editable_config |
stock.warehouse.orderpoint.tree.editable.config | stock.warehouse.orderpoint | tree | New |
view_warehouse_tree |
stock.warehouse.tree | stock.warehouse | tree | New |
vpicktree |
stock.picking.tree | stock.picking | tree | New |
warehouse_orderpoint_search |
stock.warehouse.orderpoint.search | stock.warehouse.orderpoint | search | New |
type
Selection
ondelete={'weight': 'set default', 'location': 'set default', 'lot': 'set default', 'package': 'set default'}
selection_add=[('weight', 'Weighted Product'), ('location', 'Location'), ('lot', 'Lot'), ('package', 'Package')]
No public methods.
move_type
Selection
default='direct'
required=True
string='Delivery Type'
args: [('direct', 'Partial'), ('one', 'All at once')]
name
Char
default=<expr>
required=True
args: 'Reference'
partner_id
Many2one → res.partner
stock_move_ids
One2many → stock.move
string='Related Stock Moves'
args: 'stock.move', 'group_id'
run(self, procurements, raise_user_error=True)
run_scheduler(self, use_new_cursor=False, company_id=False)
packaging_reserve_method
Selection
default='partial'
help='Reserve Only Full Packagings: will not reserve partial packagings. If customer orders 2 pallets of 1000 units each and you only have 1600 in stock, then only 1000 will be reserved\nReserve Partial Packagings: allow reserving partial packagings. If customer orders 2 pallets of 1000 units each and you only have 1600 in stock, then 1600 will be reserved'
string='Reserve Packagings'
args: [('full', 'Reserve Only Full Packagings'), ('partial', 'Reserve Partial Packagings')]
putaway_rule_ids
One2many → stock.putaway.rule
removal_strategy_id
Many2one → product.removal
help='Set a specific removal strategy that will be used regardless of the source location for this product category.\n\nFIFO: products/lots that were stocked first will be moved out first.\nLIFO: products/lots that were stocked last will be moved out first.\nCloset location: products/lots closest to the target location will be moved out first.\nFEFO: products/lots with the closest removal date will be moved out first (the availability of this method depends on the "Expiration Dates" setting).'
args: 'product.removal', 'Force Removal Strategy'
route_ids
Many2many → stock.location.route
domain=[('product_categ_selectable', '=', True)]
args: 'stock.location.route', 'stock_location_route_categ', 'categ_id', 'route_id', 'Routes'
total_route_ids
Many2many → stock.location.route
compute='_compute_total_route_ids'
readonly=True
string='Total routes'
args: 'stock.location.route'
No public methods.
move_line_ids
Many2many → stock.move.line
picking_quantity
Selection
default='custom'
required=True
string='Quantity to print'
args: [('picking', 'Transfer Quantities'), ('custom', 'Custom')]
print_format
Selection
ondelete={'zpl': 'set default', 'zplxprice': 'set default'}
selection_add=[('zpl', 'ZPL Labels'), ('zplxprice', 'ZPL Labels with price')]
No public methods.
package_type_id
Many2one → stock.package.type
route_ids
Many2many → stock.location.route
domain=[('packaging_selectable', '=', True)]
help='Depending on the modules installed, this will allow you to define the route of the product in this packaging: whether it will be bought, manufactured, replenished on order, etc.'
args: 'stock.location.route', 'stock_location_route_packaging', 'packaging_id', 'route_id', 'Routes'
No public methods.
No new fields.
Public methods (0)No public methods.
free_qty
Float
compute='_compute_quantities'
compute_sudo=False
digits='Product Unit of Measure'
help="Forecast quantity (computed as Quantity On Hand - reserved quantity)\nIn a context with a single Stock Location, this includes goods stored in this location, or any of its children.\nIn a context with a single Warehouse, this includes goods stored in the Stock Location of this Warehouse, or any of its children.\nOtherwise, this includes goods stored in any Stock Location with 'internal' type."
search='_search_free_qty'
args: 'Free To Use Quantity '
incoming_qty
Float
compute='_compute_quantities'
compute_sudo=False
digits='Product Unit of Measure'
help="Quantity of planned incoming products.\nIn a context with a single Stock Location, this includes goods arriving to this Location, or any of its children.\nIn a context with a single Warehouse, this includes goods arriving to the Stock Location of this Warehouse, or any of its children.\nOtherwise, this includes goods arriving to any Stock Location with 'internal' type."
search='_search_incoming_qty'
args: 'Incoming'
nbr_moves_in
Integer
compute='_compute_nbr_moves'
compute_sudo=False
help='Number of incoming stock moves in the past 12 months'
nbr_moves_out
Integer
compute='_compute_nbr_moves'
compute_sudo=False
help='Number of outgoing stock moves in the past 12 months'
nbr_reordering_rules
Integer
compute='_compute_nbr_reordering_rules'
compute_sudo=False
args: 'Reordering Rules'
orderpoint_ids
One2many → stock.warehouse.orderpoint
outgoing_qty
Float
compute='_compute_quantities'
compute_sudo=False
digits='Product Unit of Measure'
help="Quantity of planned outgoing products.\nIn a context with a single Stock Location, this includes goods leaving this Location, or any of its children.\nIn a context with a single Warehouse, this includes goods leaving the Stock Location of this Warehouse, or any of its children.\nOtherwise, this includes goods leaving any Stock Location with 'internal' type."
search='_search_outgoing_qty'
args: 'Outgoing'
putaway_rule_ids
One2many → stock.putaway.rule
qty_available
Float
compute='_compute_quantities'
compute_sudo=False
digits='Product Unit of Measure'
help="Current quantity of products.\nIn a context with a single Stock Location, this includes goods stored at this Location, or any of its children.\nIn a context with a single Warehouse, this includes goods stored in the Stock Location of this Warehouse, or any of its children.\nstored in the Stock Location of the Warehouse of this Shop, or any of its children.\nOtherwise, this includes goods stored in any Stock Location with 'internal' type."
search='_search_qty_available'
args: 'Quantity On Hand'
reordering_max_qty
Float
compute='_compute_nbr_reordering_rules'
compute_sudo=False
reordering_min_qty
Float
compute='_compute_nbr_reordering_rules'
compute_sudo=False
show_forecasted_qty_status_button
Boolean
compute='_compute_show_qty_status_button'
show_on_hand_qty_status_button
Boolean
compute='_compute_show_qty_status_button'
stock_move_ids
One2many → stock.move
help='Technical: used to compute quantities.'
args: 'stock.move', 'product_id'
stock_quant_ids
One2many → stock.quant
help='Technical: used to compute quantities.'
args: 'stock.quant', 'product_id'
storage_category_capacity_ids
One2many → stock.storage.category.capacity
virtual_available
Float
compute='_compute_quantities'
compute_sudo=False
digits='Product Unit of Measure'
help="Forecast quantity (computed as Quantity On Hand - Outgoing + Incoming)\nIn a context with a single Stock Location, this includes goods stored in this location, or any of its children.\nIn a context with a single Warehouse, this includes goods stored in the Stock Location of this Warehouse, or any of its children.\nOtherwise, this includes goods stored in any Stock Location with 'internal' type."
search='_search_virtual_available'
args: 'Forecasted Quantity'
action_open_product_lot(self)
action_open_quants(self)
action_product_forecast_report(self)
action_update_quantity_on_hand(self)
action_view_orderpoints(self)
action_view_related_putaway_rules(self)
action_view_routes(self)
action_view_stock_move_lines(self)
action_view_storage_category_capacity(self)
fields_view_get(self, view_id=None, view_type='form', toolbar=False, submenu=False)
get_components(self)
get_theoretical_quantity(self, product_id, location_id, lot_id=None, package_id=None, owner_id=None, to_uom=None)
onchange_tracking(self)
view_header_get(self, view_id, view_type)
write(self, values)
method
Char
help='FIFO, LIFO...'
required=True
args: 'Method'
name
Char
required=True
args: 'Name'
No public methods.
company_id
Many2one → res.company
date_planned
Datetime
help='Date at which the replenishment should take place.'
required=True
args: 'Scheduled Date'
product_has_variants
Boolean
default=False
required=True
args: 'Has variants'
product_id
Many2one → product.product
required=True
string='Product'
args: 'product.product'
product_tmpl_id
Many2one → product.template
required=True
string='Product Template'
args: 'product.template'
product_uom_category_id
Many2one → uom.category
readonly=True
related='product_id.uom_id.category_id'
required=True
args: 'uom.category'
product_uom_id
Many2one → uom.uom
required=True
string='Unit of measure'
args: 'uom.uom'
quantity
Float
default=1
required=True
args: 'Quantity'
route_ids
Many2many → stock.location.route
domain="['|', ('company_id', '=', False), ('company_id', '=', company_id)]"
help="Apply specific route(s) for the replenishment instead of product's default routes."
string='Preferred Routes'
args: 'stock.location.route'
warehouse_id
Many2one → stock.warehouse
domain="[('company_id', '=', company_id)]"
required=True
string='Warehouse'
args: 'stock.warehouse'
default_get(self, fields)
launch_replenishment(self)
description_picking
Text
translate=True
args: 'Description on Picking'
description_pickingin
Text
translate=True
args: 'Description on Receptions'
description_pickingout
Text
translate=True
args: 'Description on Delivery Orders'
detailed_type
Selection
ondelete={'product': 'set consu'}
selection_add=[('product', 'Storable Product')]
tracking=True
has_available_route_ids
Boolean
compute='_compute_has_available_route_ids'
default=<expr>
args: 'Routes can be selected on this product'
incoming_qty
Float
compute='_compute_quantities'
compute_sudo=False
digits='Product Unit of Measure'
search='_search_incoming_qty'
args: 'Incoming'
location_id
Many2one → stock.location
store=False
args: 'stock.location', 'Location'
nbr_moves_in
Integer
compute='_compute_nbr_moves'
compute_sudo=False
help='Number of incoming stock moves in the past 12 months'
nbr_moves_out
Integer
compute='_compute_nbr_moves'
compute_sudo=False
help='Number of outgoing stock moves in the past 12 months'
nbr_reordering_rules
Integer
compute='_compute_nbr_reordering_rules'
compute_sudo=False
args: 'Reordering Rules'
outgoing_qty
Float
compute='_compute_quantities'
compute_sudo=False
digits='Product Unit of Measure'
search='_search_outgoing_qty'
args: 'Outgoing'
property_stock_inventory
Many2one → stock.location
check_company=True
company_dependent=True
domain="[('usage', '=', 'inventory'), '|', ('company_id', '=', False), ('company_id', '=', allowed_company_ids[0])]"
help='This stock location will be used, instead of the default one, as the source location for stock moves generated when you do an inventory.'
args: 'stock.location', 'Inventory Location'
property_stock_production
Many2one → stock.location
check_company=True
company_dependent=True
domain="[('usage', '=', 'production'), '|', ('company_id', '=', False), ('company_id', '=', allowed_company_ids[0])]"
help='This stock location will be used, instead of the default one, as the source location for stock moves generated by manufacturing orders.'
args: 'stock.location', 'Production Location'
qty_available
Float
compute='_compute_quantities'
compute_sudo=False
digits='Product Unit of Measure'
search='_search_qty_available'
args: 'Quantity On Hand'
reordering_max_qty
Float
compute='_compute_nbr_reordering_rules'
compute_sudo=False
reordering_min_qty
Float
compute='_compute_nbr_reordering_rules'
compute_sudo=False
responsible_id
Many2one → res.users
check_company=True
company_dependent=True
default=<expr>
help='This user will be responsible of the next activities related to logistic operations for this product.'
string='Responsible'
args: 'res.users'
route_from_categ_ids
Many2many
related='categ_id.total_route_ids'
related_sudo=False
relation='stock.location.route'
string='Category Routes'
route_ids
Many2many → stock.location.route
depends_context=['company', 'allowed_companies']
domain=[('product_selectable', '=', True)]
help='Depending on the modules installed, this will allow you to define the route of the product: whether it will be bought, manufactured, replenished on order, etc.'
args: 'stock.location.route', 'stock_route_product', 'product_id', 'route_id', 'Routes'
sale_delay
Float
default=0
help="Delivery lead time, in days. It's the number of days, promised to the customer, between the confirmation of the sales order and the delivery."
args: 'Customer Lead Time'
show_forecasted_qty_status_button
Boolean
compute='_compute_show_qty_status_button'
show_on_hand_qty_status_button
Boolean
compute='_compute_show_qty_status_button'
tracking
Selection
compute='_compute_tracking'
default='none'
help='Ensure the traceability of a storable product in your warehouse.'
readonly=False
required=True
store=True
string='Tracking'
args: [('serial', 'By Unique Serial Number'), ('lot', 'By Lots'), ('none', 'No Tracking')]
type
Selection
ondelete={'product': 'set consu'}
selection_add=[('product', 'Storable Product')]
virtual_available
Float
compute='_compute_quantities'
compute_sudo=False
digits='Product Unit of Measure'
search='_search_virtual_available'
args: 'Forecasted Quantity'
warehouse_id
Many2one → stock.warehouse
store=False
args: 'stock.warehouse', 'Warehouse'
action_open_product_lot(self)
action_open_quants(self)
action_open_routes_diagram(self)
action_product_tmpl_forecast_report(self)
action_update_quantity_on_hand(self)
action_view_orderpoints(self)
action_view_related_putaway_rules(self)
action_view_stock_move_lines(self)
action_view_storage_category_capacity(self)
copy(self, default=None)
onchange_tracking(self)
write(self, vals)
No new fields.
Public methods (0)No public methods.
No new fields.
Public methods (0)No public methods.
company_id
Many2one → res.company
readonly=True
args: 'res.company'
date
Date
readonly=True
string='Date'
product_id
Many2one → product.product
readonly=True
string='Product'
args: 'product.product'
product_qty
Float
readonly=True
string='Quantity'
product_tmpl_id
Many2one → product.template
readonly=True
args: 'product.template'
state
Selection
readonly=True
string='State'
args: [('forecast', 'Forecasted Stock'), ('in', 'Forecasted Receipts'), ('out', 'Forecasted Deliveries')]
warehouse_id
Many2one → stock.warehouse
readonly=True
args: 'stock.warehouse'
init(self)
No new fields.
Public methods (1)get_warehouses(self)
No new fields.
Public methods (0)No public methods.
No new fields.
Public methods (2)action_assign(self, move_ids, qtys, in_ids)
action_unassign(self, move_id, qty, in_ids)
No new fields.
Public methods (0)No public methods.
annual_inventory_day
Integer
default=31
help='Day of the month when the annual inventory should occur. If zero or negative, then the first day of the month will be selected instead.\n If greater than the last day of a month, then the last day of the month will be selected instead.'
string='Day of the month'
annual_inventory_month
Selection
default='12'
help='Annual inventory month for products not in a location with a cyclic inventory date. Set to no month if no automatic annual inventory.'
string='Annual Inventory Month'
args: [('1', 'January'), ('2', 'February'), ('3', 'March'), ('4', 'April'), ('5', 'May'), ('6', 'June'), ('7', 'July'), ('8', 'August'), ('9', 'September'), ('10', 'October'), ('11', 'November'), ('12', 'December')]
internal_transit_location_id
Many2one → stock.location
check_company=True
help='Technical field used for resupply routes between warehouses that belong to this company'
ondelete='restrict'
args: 'stock.location', 'Internal Transit Location'
stock_mail_confirmation_template_id
Many2one → mail.template
default=_default_confirmation_mail_template
domain="[('model', '=', 'stock.picking')]"
help='Email sent to the customer once the order is done.'
string='Email Template confirmation picking'
args: 'mail.template'
stock_move_email_validation
Boolean
default=False
args: 'Email Confirmation picking'
create(self, vals)
create_missing_inventory_loss_location(self)
create_missing_production_location(self)
create_missing_scrap_location(self)
create_missing_scrap_sequence(self)
create_missing_transit_location(self)
create_missing_warehouse(self)
annual_inventory_day
Integer
readonly=False
related='company_id.annual_inventory_day'
annual_inventory_month
Selection
readonly=False
related='company_id.annual_inventory_month'
group_lot_on_delivery_slip
Boolean
group='base.group_user,base.group_portal'
implied_group='stock.group_lot_on_delivery_slip'
args: 'Display Lots & Serial Numbers on Delivery Slips'
group_stock_adv_location
Boolean
help='Add and customize route operations to process product moves in your warehouse(s): e.g. unload > quality control > stock for incoming products, pick > pack > ship for outgoing products. \n You can also set putaway strategies on warehouse locations in order to send incoming products into specific child locations straight away (e.g. specific bins, racks).'
implied_group='stock.group_adv_location'
args: 'Multi-Step Routes'
group_stock_auto_reception_report
Boolean
implied_group='stock.group_auto_reception_report'
args: 'Show Reception Report at Validation'
group_stock_multi_locations
Boolean
help='Store products in specific locations of your warehouse (e.g. bins, racks) and to track inventory accordingly.'
implied_group='stock.group_stock_multi_locations'
args: 'Storage Locations'
group_stock_picking_wave
Boolean
help='Group your move operations in wave transfer to process them together'
implied_group='stock.group_stock_picking_wave'
args: 'Wave Transfers'
group_stock_production_lot
Boolean
implied_group='stock.group_production_lot'
args: 'Lots & Serial Numbers'
group_stock_reception_report
Boolean
implied_group='stock.group_reception_report'
args: 'Reception Report'
group_stock_sign_delivery
Boolean
implied_group='stock.group_stock_sign_delivery'
args: 'Signature'
group_stock_storage_categories
Boolean
implied_group='stock.group_stock_storage_categories'
args: 'Storage Categories'
group_stock_tracking_lot
Boolean
implied_group='stock.group_tracking_lot'
args: 'Packages'
group_stock_tracking_owner
Boolean
implied_group='stock.group_tracking_owner'
args: 'Consignment'
group_warning_stock
Boolean
implied_group='stock.group_warning_stock'
args: 'Warnings for Stock'
module_delivery
Boolean
module_delivery_bpost
Boolean
module_delivery_dhl
Boolean
module_delivery_easypost
Boolean
module_delivery_fedex
Boolean
module_delivery_ups
Boolean
module_delivery_usps
Boolean
module_product_expiry
Boolean
help='Track following dates on lots & serial numbers: best before, removal, end of life, alert. \n Such dates are set automatically at lot/serial number creation based on values set on the product (in days).'
args: 'Expiration Dates'
module_quality_control
Boolean
module_quality_control_worksheet
Boolean
module_stock_barcode
Boolean
module_stock_picking_batch
Boolean
module_stock_sms
Boolean
stock_mail_confirmation_template_id
Many2one
readonly=False
related='company_id.stock_mail_confirmation_template_id'
stock_move_email_validation
Boolean
readonly=False
related='company_id.stock_move_email_validation'
onchange_adv_location(self)
set_values(self)
picking_warn
Selection
default='no-message'
help=WARNING_HELP
args: WARNING_MESSAGE, 'Stock Picking'
picking_warn_msg
Text
property_stock_customer
Many2one → stock.location
check_company=True
company_dependent=True
domain="['|', ('company_id', '=', False), ('company_id', '=', allowed_company_ids[0])]"
help='The stock location used as destination when sending goods to this contact.'
string='Customer Location'
args: 'stock.location'
property_stock_supplier
Many2one → stock.location
check_company=True
company_dependent=True
domain="['|', ('company_id', '=', False), ('company_id', '=', allowed_company_ids[0])]"
help='The stock location used as source when receiving goods from this contact.'
string='Vendor Location'
args: 'stock.location'
No public methods.
move_id
Many2one → stock.move
next_serial_count
Integer
default=_default_next_serial_count
required=True
args: 'Number of SN'
next_serial_number
Char
required=True
args: 'First SN'
product_id
Many2one → product.product
related='move_id.product_id'
args: 'product.product', 'Product'
generate_serial_numbers(self)
backorder_confirmation_line_ids
One2many → stock.backorder.confirmation.line
string='Backorder Confirmation Lines'
args: 'stock.backorder.confirmation.line', 'backorder_confirmation_id'
pick_ids
Many2many → stock.picking
show_transfers
Boolean
default_get(self, fields)
process(self)
process_cancel_backorder(self)
backorder_confirmation_id
Many2one → stock.backorder.confirmation
picking_id
Many2one → stock.picking
to_backorder
Boolean
No public methods.
new_quantity
Float
default=1
digits='Product Unit of Measure'
help='This quantity is expressed in the Default Unit of Measure of the product.'
required=True
args: 'New Quantity on Hand'
product_id
Many2one → product.product
required=True
args: 'product.product', 'Product'
product_tmpl_id
Many2one → product.template
required=True
args: 'product.template', 'Template'
product_variant_count
Integer
related='product_tmpl_id.product_variant_count'
args: 'Variant Count'
change_product_qty(self)
check_new_quantity(self)
immediate_transfer_line_ids
One2many → stock.immediate.transfer.line
string='Immediate Transfer Lines'
args: 'stock.immediate.transfer.line', 'immediate_transfer_id'
pick_ids
Many2many → stock.picking
show_transfers
Boolean
default_get(self, fields)
process(self)
immediate_transfer_id
Many2one → stock.immediate.transfer
required=True
args: 'stock.immediate.transfer', 'Immediate Transfer'
picking_id
Many2one → stock.picking
required=True
args: 'stock.picking', 'Transfer'
to_immediate
Boolean
No public methods.
inventory_adjustment_name
Char
default=_default_inventory_adjustment_name
quant_ids
Many2many → stock.quant
show_info
Boolean
action_apply(self)
default_get(self, fields_list)
quant_ids
Many2many → stock.quant
string='Quants'
args: 'stock.quant', 'stock_conflict_quant_rel'
quant_to_fix_ids
Many2many → stock.quant
string='Conflicts'
args: 'stock.quant'
action_keep_counted_quantity(self)
action_keep_difference(self)
quant_ids
Many2many → stock.quant
action_reset(self)
action_set(self)
No new fields.
Public methods (0)No public methods.
active
Boolean
default=True
help='By unchecking the active field, you may hide a location without deleting it.'
args: 'Active'
barcode
Char
copy=False
args: 'Barcode'
child_ids
One2many → stock.location
child_internal_location_ids
Many2many → stock.location
compute='_compute_child_internal_location_ids'
help="This location (if it's internal) and all its descendants filtered by type=Internal."
recursive=True
string='Internal locations amoung descendants'
args: 'stock.location'
comment
Html
company_id
Many2one → res.company
default=<expr>
help='Let this field empty if this location is shared between companies'
index=True
args: 'res.company', 'Company'
complete_name
Char
compute='_compute_complete_name'
recursive=True
store=True
args: 'Full Location Name'
cyclic_inventory_frequency
Integer
default=0
help=' When different than 0, inventory count date for products stored at this location will be automatically set at the defined frequency.'
args: 'Inventory Frequency (Days)'
forecast_weight
Float
compute='_compute_weight'
args: 'Forecasted Weight'
incoming_move_line_ids
One2many → stock.move.line
help='Technical: used to compute weight.'
args: 'stock.move.line', 'location_dest_id'
last_inventory_date
Date
help='Date of the last inventory at this location.'
readonly=True
args: 'Last Effective Inventory'
location_id
Many2one → stock.location
check_company=True
help="The parent location that includes this location. Example : The 'Dispatch Zone' is the 'Gate 1' parent location."
index=True
ondelete='cascade'
args: 'stock.location', 'Parent Location'
name
Char
required=True
args: 'Location Name'
net_weight
Float
compute='_compute_weight'
args: 'Net Weight'
next_inventory_date
Date
compute='_compute_next_inventory_date'
help='Date for next planned inventory based on cyclic schedule.'
store=True
args: 'Next Expected Inventory'
outgoing_move_line_ids
One2many → stock.move.line
help='Technical: used to compute weight.'
args: 'stock.move.line', 'location_id'
parent_path
Char
index=True
posx
Integer
default=0
help='Optional localization details, for information purpose only'
args: 'Corridor (X)'
posy
Integer
default=0
help='Optional localization details, for information purpose only'
args: 'Shelves (Y)'
posz
Integer
default=0
help='Optional localization details, for information purpose only'
args: 'Height (Z)'
putaway_rule_ids
One2many → stock.putaway.rule
quant_ids
One2many → stock.quant
removal_strategy_id
Many2one → product.removal
help='Defines the default method used for suggesting the exact location (shelf) where to take the products from, which lot etc. for this location. This method can be enforced at the product category level, and a fallback is made on the parent locations if none is set here.\n\nFIFO: products/lots that were stocked first will be moved out first.\nLIFO: products/lots that were stocked last will be moved out first.\nCloset location: products/lots closest to the target location will be moved out first.\nFEFO: products/lots with the closest removal date will be moved out first (the availability of this method depends on the "Expiration Dates" setting).'
args: 'product.removal', 'Removal Strategy'
return_location
Boolean
help='Check this box to allow using this location as a return location.'
args: 'Is a Return Location?'
scrap_location
Boolean
default=False
help='Check this box to allow using this location to put scrapped/damaged goods.'
args: 'Is a Scrap Location?'
storage_category_id
Many2one → stock.storage.category
check_company=True
string='Storage Category'
args: 'stock.storage.category'
usage
Selection
default='internal'
help="* Vendor Location: Virtual location representing the source location for products coming from your vendors\n* View: Virtual location used to create a hierarchical structures for your warehouse, aggregating its child locations ; can't directly contain products\n* Internal Location: Physical locations inside your own warehouses,\n* Customer Location: Virtual location representing the destination location for products sent to your customers\n* Inventory Loss: Virtual location serving as counterpart for inventory operations used to correct stock levels (Physical inventories)\n* Production: Virtual counterpart location for production operations: this location consumes the components and produces finished products\n* Transit Location: Counterpart location that should be used in inter-company or inter-warehouses operations"
index=True
required=True
string='Location Type'
args: [('supplier', 'Vendor Location'), ('view', 'View'), ('internal', 'Internal Location'), ('customer', 'Customer Location'), ('inventory', 'Inventory Loss'), ('production', 'Production'), ('transit', 'Transit Location')]
warehouse_id
Many2one → stock.warehouse
compute='_compute_warehouse_id'
args: 'stock.warehouse'
warehouse_view_ids
One2many → stock.warehouse
readonly=True
args: 'stock.warehouse', 'view_location_id'
create(self, vals_list)
default_get(self, fields)
name_create(self, name)
should_bypass_reservation(self)
write(self, values)
active
Boolean
default=True
help='If the active field is set to False, it will allow you to hide the route without removing it.'
args: 'Active'
categ_ids
Many2many → product.category
copy=False
args: 'product.category', 'stock_location_route_categ', 'route_id', 'categ_id', 'Product Categories'
company_id
Many2one → res.company
default=<expr>
help='Leave this field empty if this route is shared between all companies'
index=True
args: 'res.company', 'Company'
name
Char
required=True
translate=True
args: 'Route'
packaging_ids
Many2many → product.packaging
check_company=True
copy=False
args: 'product.packaging', 'stock_location_route_packaging', 'route_id', 'packaging_id', 'Packagings'
packaging_selectable
Boolean
help='When checked, the route will be selectable on the Product Packaging.'
args: 'Applicable on Packaging'
product_categ_selectable
Boolean
help='When checked, the route will be selectable on the Product Category.'
args: 'Applicable on Product Category'
product_ids
Many2many → product.template
check_company=True
copy=False
args: 'product.template', 'stock_route_product', 'route_id', 'product_id', 'Products'
product_selectable
Boolean
default=True
help='When checked, the route will be selectable in the Inventory tab of the Product form.'
args: 'Applicable on Product'
rule_ids
One2many → stock.rule
copy=True
args: 'stock.rule', 'route_id', 'Rules'
sequence
Integer
default=0
args: 'Sequence'
supplied_wh_id
Many2one → stock.warehouse
supplier_wh_id
Many2one → stock.warehouse
warehouse_domain_ids
One2many → stock.warehouse
compute='_compute_warehouses'
args: 'stock.warehouse'
warehouse_ids
Many2many → stock.warehouse
copy=False
domain="[('id', 'in', warehouse_domain_ids)]"
args: 'stock.warehouse', 'stock_route_warehouse', 'route_id', 'warehouse_id', 'Warehouses'
warehouse_selectable
Boolean
help='When a warehouse is selected for this route, this route should be seen as the default route when products pass through this warehouse.'
args: 'Applicable on Warehouse'
toggle_active(self)
No new fields.
Public methods (0)No public methods.
additional
Boolean
default=False
args: "Whether the move was added after the picking's confirmation"
availability
Float
compute='_compute_product_availability'
help='Quantity in stock that can still be reserved for this move'
readonly=True
args: 'Forecasted Quantity'
company_id
Many2one → res.company
default=<expr>
index=True
required=True
args: 'res.company', 'Company'
date
Datetime
default=fields.Datetime.now
help='Scheduled date until move is done, then date of actual move processing'
index=True
required=True
args: 'Date Scheduled'
date_deadline
Datetime
help='Date Promise to the customer on the top level document (SO/PO)'
readonly=True
args: 'Deadline'
delay_alert_date
Datetime
compute='_compute_delay_alert_date'
help='Process at this date to be on time'
store=True
args: 'Delay Alert Date'
description_picking
Text
display_assign_serial
Boolean
compute='_compute_display_assign_serial'
forecast_availability
Float
compute='_compute_forecast_information'
compute_sudo=True
digits='Product Unit of Measure'
args: 'Forecast Availability'
forecast_expected_date
Datetime
compute='_compute_forecast_information'
compute_sudo=True
args: 'Forecasted Expected date'
from_immediate_transfer
Boolean
related='picking_id.immediate_transfer'
group_id
Many2one → procurement.group
default=_default_group_id
index=True
args: 'procurement.group', 'Procurement Group'
has_tracking
Selection
related='product_id.tracking'
string='Product with Tracking'
is_initial_demand_editable
Boolean
compute='_compute_is_initial_demand_editable'
args: 'Is initial demand editable'
is_inventory
Boolean
is_locked
Boolean
compute='_compute_is_locked'
readonly=True
is_quantity_done_editable
Boolean
compute='_compute_is_quantity_done_editable'
args: 'Is quantity done editable'
location_dest_id
Many2one → stock.location
auto_join=True
check_company=True
help='Location where the system will stock the finished products.'
index=True
required=True
args: 'stock.location', 'Destination Location'
location_id
Many2one → stock.location
auto_join=True
check_company=True
help='Sets a location if you produce at a fixed location. This can be a partner location if you subcontract the manufacturing operations.'
index=True
required=True
args: 'stock.location', 'Source Location'
lot_ids
Many2many → stock.production.lot
compute='_compute_lot_ids'
inverse='_set_lot_ids'
readonly=False
string='Serial Numbers'
args: 'stock.production.lot'
move_dest_ids
Many2many → stock.move
copy=False
help='Optional: next stock move when chaining them'
args: 'stock.move', 'stock_move_move_rel', 'move_orig_id', 'move_dest_id', 'Destination Moves'
move_line_ids
One2many → stock.move.line
move_line_nosuggest_ids
One2many → stock.move.line
domain=['|', ('product_qty', '=', 0.0), ('qty_done', '!=', 0.0)]
args: 'stock.move.line', 'move_id'
move_lines_count
Integer
compute='_compute_move_lines_count'
move_orig_ids
Many2many → stock.move
copy=False
help='Optional: previous stock move when chaining them'
args: 'stock.move', 'stock_move_move_rel', 'move_dest_id', 'move_orig_id', 'Original Move'
name
Char
required=True
args: 'Description'
next_serial
Char
next_serial_count
Integer
orderpoint_id
Many2one → stock.warehouse.orderpoint
check_company=True
index=True
args: 'stock.warehouse.orderpoint', 'Original Reordering Rule'
origin
Char
origin_returned_move_id
Many2one → stock.move
check_company=True
copy=False
help='Move that created the return move'
index=True
args: 'stock.move', 'Origin return move'
package_level_id
Many2one → stock.package_level
check_company=True
copy=False
args: 'stock.package_level', 'Package Level'
partner_id
Many2one → res.partner
help='Optional address where goods are to be delivered, specifically used for allotment'
states={'done': [('readonly', True)]}
args: 'res.partner', 'Destination Address '
picking_code
Selection
readonly=True
related='picking_id.picking_type_id.code'
picking_id
Many2one → stock.picking
check_company=True
index=True
states={'done': [('readonly', True)]}
args: 'stock.picking', 'Transfer'
picking_type_entire_packs
Boolean
readonly=True
related='picking_type_id.show_entire_packs'
picking_type_id
Many2one → stock.picking.type
check_company=True
compute='_compute_picking_type_id'
store=True
args: 'stock.picking.type', 'Operation Type'
price_unit
Float
copy=False
help="Technical field used to record the product cost set by the user during a picking confirmation (when costing method used is 'average price' or 'real'). Value given in company currency and in product uom."
args: 'Unit Price'
priority
Selection
compute='_compute_priority'
default='0'
store=True
args: PROCUREMENT_PRIORITIES, 'Priority'
procure_method
Selection
copy=False
default='make_to_stock'
help='By default, the system will take from the stock in the source location and passively wait for availability. The other possibility allows you to directly create a procurement on the source location (and thus ignore its current stock) to gather products. If we want to chain moves and have this one to wait for the previous, this second option should be chosen.'
required=True
string='Supply Method'
args: [('make_to_stock', 'Default: Take From Stock'), ('make_to_order', 'Advanced: Apply Procurement Rules')]
product_id
Many2one → product.product
check_company=True
domain="[('type', 'in', ['product', 'consu']), '|', ('company_id', '=', False), ('company_id', '=', company_id)]"
index=True
required=True
states={'done': [('readonly', True)]}
args: 'product.product', 'Product'
product_packaging_id
Many2one → product.packaging
check_company=True
domain="[('product_id', '=', product_id)]"
args: 'product.packaging', 'Packaging'
product_qty
Float
compute='_compute_product_qty'
compute_sudo=True
digits=0
help='Quantity in the default UoM of the product'
inverse='_set_product_qty'
store=True
args: 'Real Quantity'
product_tmpl_id
Many2one → product.template
help='Technical: used in views'
related='product_id.product_tmpl_id'
args: 'product.template', 'Product Template'
product_type
Selection
readonly=True
related='product_id.detailed_type'
product_uom
Many2one → uom.uom
domain="[('category_id', '=', product_uom_category_id)]"
required=True
args: 'uom.uom', 'UoM'
product_uom_category_id
Many2one
related='product_id.uom_id.category_id'
product_uom_qty
Float
default=1.0
digits='Product Unit of Measure'
help="This is the quantity of products from an inventory point of view. For moves in the state 'done', this is the quantity of products that were actually moved. For other moves, this is the quantity of product that is planned to be moved. Lowering this quantity does not generate a backorder. Changing this quantity on assigned moves affects the product reservation, and should be done with care."
required=True
states={'done': [('readonly', True)]}
args: 'Demand'
propagate_cancel
Boolean
default=True
help='If checked, when this move is cancelled, cancel the linked move too'
args: 'Propagate cancel and split'
quantity_done
Float
compute='_quantity_done_compute'
digits='Product Unit of Measure'
inverse='_quantity_done_set'
args: 'Quantity Done'
reference
Char
compute='_compute_reference'
store=True
string='Reference'
reservation_date
Date
compute='_compute_reservation_date'
help='This is a technical field for calculating when a move should be reserved'
store=True
args: 'Date to Reserve'
reserved_availability
Float
compute='_compute_reserved_availability'
digits='Product Unit of Measure'
help='Quantity that has already been reserved for this move'
readonly=True
args: 'Quantity Reserved'
restrict_partner_id
Many2one → res.partner
check_company=True
help="Technical field used to depict a restriction on the ownership of quants to consider when marking this move as 'done'"
args: 'res.partner', 'Owner '
returned_move_ids
One2many → stock.move
help='Optional: all returned moves created from this move'
args: 'stock.move', 'origin_returned_move_id', 'All returned moves'
route_ids
Many2many → stock.location.route
check_company=True
help='Preferred route'
args: 'stock.location.route', 'stock_location_route_move', 'move_id', 'route_id', 'Destination route'
rule_id
Many2one → stock.rule
check_company=True
help='The stock rule that created this stock move'
ondelete='restrict'
args: 'stock.rule', 'Stock Rule'
scrap_ids
One2many → stock.scrap
scrapped
Boolean
readonly=True
related='location_dest_id.scrap_location'
store=True
args: 'Scrapped'
sequence
Integer
default=10
args: 'Sequence'
show_details_visible
Boolean
compute='_compute_show_details_visible'
args: 'Details Visible'
show_operations
Boolean
related='picking_id.picking_type_id.show_operations'
show_reserved_availability
Boolean
compute='_compute_show_reserved_availability'
args: 'From Supplier'
state
Selection
copy=False
default='draft'
help="* New: When the stock move is created and not yet confirmed.\n* Waiting Another Move: This state can be seen when a move is waiting for another one, for example in a chained flow.\n* Waiting Availability: This state is reached when the procurement resolution is not straight forward. It may need the scheduler to run, a component to be manufactured...\n* Available: When products are reserved, it is set to 'Available'.\n* Done: When the shipment is processed, the state is 'Done'."
index=True
readonly=True
string='Status'
args: [('draft', 'New'), ('cancel', 'Cancelled'), ('waiting', 'Waiting Another Move'), ('confirmed', 'Waiting Availability'), ('partially_available', 'Partially Available'), ('assigned', 'Available'), ('done', 'Done')]
warehouse_id
Many2one → stock.warehouse
help='Technical field depicting the warehouse to consider for the route selection on the next procurement (if any).'
args: 'stock.warehouse', 'Warehouse'
action_assign_serial(self)
action_assign_serial_show_details(self)
action_clear_lines_show_details(self)
action_product_forecast_report(self)
action_show_details(self)
create(self, vals_list)
default_get(self, fields_list)
init(self)
name_get(self)
unlink(self)
write(self, vals)
company_id
Many2one → res.company
index=True
readonly=True
required=True
string='Company'
args: 'res.company'
consume_line_ids
Many2many → stock.move.line
help='Technical link to see who consumed what. '
args: 'stock.move.line', 'stock_move_line_consume_rel', 'consume_line_id', 'produce_line_id'
date
Datetime
default=fields.Datetime.now
required=True
args: 'Date'
description_picking
Text
string='Description picking'
is_initial_demand_editable
Boolean
related='move_id.is_initial_demand_editable'
is_inventory
Boolean
related='move_id.is_inventory'
is_locked
Boolean
readonly=True
related='move_id.is_locked'
location_dest_id
Many2one → stock.location
check_company=True
domain="[('usage', '!=', 'view')]"
required=True
args: 'stock.location', 'To'
location_id
Many2one → stock.location
check_company=True
domain="[('usage', '!=', 'view')]"
required=True
args: 'stock.location', 'From'
lot_id
Many2one → stock.production.lot
check_company=True
domain="[('product_id', '=', product_id), ('company_id', '=', company_id)]"
args: 'stock.production.lot', 'Lot/Serial Number'
lot_name
Char
lots_visible
Boolean
compute='_compute_lots_visible'
move_id
Many2one → stock.move
check_company=True
help='Change to a better name'
index=True
args: 'stock.move', 'Stock Move'
origin
Char
related='move_id.origin'
string='Source'
owner_id
Many2one → res.partner
check_company=True
help='When validating the transfer, the products will be taken from this owner.'
args: 'res.partner', 'From Owner'
package_id
Many2one → stock.quant.package
check_company=True
domain="[('location_id', '=', location_id)]"
ondelete='restrict'
args: 'stock.quant.package', 'Source Package'
package_level_id
Many2one → stock.package_level
check_company=True
args: 'stock.package_level', 'Package Level'
picking_code
Selection
readonly=True
related='picking_id.picking_type_id.code'
picking_id
Many2one → stock.picking
auto_join=True
check_company=True
help='The stock operation where the packing has been made'
index=True
args: 'stock.picking', 'Transfer'
picking_partner_id
Many2one
readonly=True
related='picking_id.partner_id'
picking_type_entire_packs
Boolean
readonly=True
related='picking_id.picking_type_id.show_entire_packs'
picking_type_id
Many2one → stock.picking.type
compute='_compute_picking_type_id'
search='_search_picking_type_id'
args: 'stock.picking.type', 'Operation type'
picking_type_use_create_lots
Boolean
readonly=True
related='picking_id.picking_type_id.use_create_lots'
picking_type_use_existing_lots
Boolean
readonly=True
related='picking_id.picking_type_id.use_existing_lots'
produce_line_ids
Many2many → stock.move.line
help='Technical link to see which line was produced with this. '
args: 'stock.move.line', 'stock_move_line_consume_rel', 'produce_line_id', 'consume_line_id'
product_id
Many2one → product.product
check_company=True
domain="[('type', '!=', 'service'), '|', ('company_id', '=', False), ('company_id', '=', company_id)]"
index=True
ondelete='cascade'
args: 'product.product', 'Product'
product_qty
Float
compute='_compute_product_qty'
copy=False
digits=0
inverse='_set_product_qty'
store=True
args: 'Real Reserved Quantity'
product_uom_category_id
Many2one
related='product_id.uom_id.category_id'
product_uom_id
Many2one → uom.uom
domain="[('category_id', '=', product_uom_category_id)]"
required=True
args: 'uom.uom', 'Unit of Measure'
product_uom_qty
Float
copy=False
default=0.0
digits='Product Unit of Measure'
required=True
args: 'Reserved'
qty_done
Float
copy=False
default=0.0
digits='Product Unit of Measure'
args: 'Done'
reference
Char
readonly=False
related='move_id.reference'
related_sudo=False
store=True
result_package_id
Many2one → stock.quant.package
check_company=True
domain="['|', '|', ('location_id', '=', False), ('location_id', '=', location_dest_id), ('id', '=', package_id)]"
help='If set, the operations are packed into this package'
ondelete='restrict'
required=False
args: 'stock.quant.package', 'Destination Package'
state
Selection
related='move_id.state'
related_sudo=False
store=True
tracking
Selection
readonly=True
related='product_id.tracking'
create(self, vals_list)
init(self)
unlink(self)
write(self, vals)
orderpoint_ids
Many2many → stock.warehouse.orderpoint
predefined_date
Selection
default='day'
string='Snooze for'
args: [('day', '1 Day'), ('week', '1 Week'), ('month', '1 Month'), ('custom', 'Custom')]
snoozed_until
Date
action_snooze(self)
filtered_location
One2many → stock.location
comodel_name='stock.location'
compute='_filter_location'
location_dest_id
Many2one → stock.location
required=True
args: 'stock.location', 'Destination location'
move_line_ids
Many2many → stock.move.line
compute='_compute_move_line_ids'
required=True
args: 'stock.move.line', 'Products'
picking_id
Many2one → stock.picking
required=True
args: 'stock.picking'
action_done(self)
barcode
Char
copy=False
args: 'Barcode'
company_id
Many2one → res.company
index=True
args: 'res.company', 'Company'
height
Integer
help='Packaging Height'
args: 'Height'
length_uom_name
Char
compute='_compute_length_uom_name'
default=_get_default_length_uom
string='Length unit of measure label'
max_weight
Float
help='Maximum weight shippable in this packaging'
args: 'Max Weight'
name
Char
required=True
args: 'Package Type'
packaging_length
Integer
help='Packaging Length'
args: 'Length'
sequence
Integer
default=1
help='The first in the sequence is the default one.'
args: 'Sequence'
storage_category_capacity_ids
One2many → stock.storage.category.capacity
copy=True
args: 'stock.storage.category.capacity', 'package_type_id', 'Storage Category Capacity'
weight_uom_name
Char
compute='_compute_weight_uom_name'
default=_get_default_weight_uom
string='Weight unit of measure label'
width
Integer
help='Packaging Width'
args: 'Width'
copy(self, default=None)
company_id
Many2one → res.company
index=True
required=True
args: 'res.company', 'Company'
is_done
Boolean
compute='_compute_is_done'
inverse='_set_is_done'
args: 'Done'
is_fresh_package
Boolean
compute='_compute_fresh_pack'
location_dest_id
Many2one → stock.location
check_company=True
domain="[('id', 'child_of', parent.location_dest_id), '|', ('company_id', '=', False), ('company_id', '=', company_id)]"
args: 'stock.location', 'To'
location_id
Many2one → stock.location
check_company=True
compute='_compute_location_id'
args: 'stock.location', 'From'
move_ids
One2many → stock.move
move_line_ids
One2many → stock.move.line
package_id
Many2one → stock.quant.package
check_company=True
domain="[('location_id', 'child_of', parent.location_id), '|', ('company_id', '=', False), ('company_id', '=', company_id)]"
required=True
args: 'stock.quant.package', 'Package'
picking_id
Many2one → stock.picking
check_company=True
args: 'stock.picking', 'Picking'
picking_type_code
Selection
related='picking_id.picking_type_code'
show_lots_m2o
Boolean
compute='_compute_show_lot'
show_lots_text
Boolean
compute='_compute_show_lot'
state
Selection
compute='_compute_state'
string='State'
args: [('draft', 'Draft'), ('confirmed', 'Confirmed'), ('assigned', 'Reserved'), ('new', 'New'), ('done', 'Done'), ('cancel', 'Cancelled')]
action_show_package_details(self)
create(self, vals)
unlink(self)
write(self, vals)
No new fields.
Public methods (0)No public methods.
backorder_id
Many2one → stock.picking
check_company=True
copy=False
help='If this shipment was split, then this field links to the shipment which contains the already processed part.'
index=True
readonly=True
args: 'stock.picking', 'Back Order of'
backorder_ids
One2many → stock.picking
company_id
Many2one → res.company
index=True
readonly=True
related='picking_type_id.company_id'
store=True
string='Company'
args: 'res.company'
date
Datetime
copy=False
default=fields.Datetime.now
help='Creation Date, usually the time of the order'
states={'done': [('readonly', True)], 'cancel': [('readonly', True)]}
tracking=True
args: 'Creation Date'
date_deadline
Datetime
compute='_compute_date_deadline'
help='Date Promise to the customer on the top level document (SO/PO)'
store=True
args: 'Deadline'
date_done
Datetime
copy=False
help='Date at which the transfer has been processed or cancelled.'
readonly=True
args: 'Date of Transfer'
delay_alert_date
Datetime
compute='_compute_delay_alert_date'
search='_search_delay_alert_date'
args: 'Delay Alert Date'
group_id
Many2one → procurement.group
readonly=True
related='move_lines.group_id'
store=True
args: 'procurement.group', 'Procurement Group'
has_deadline_issue
Boolean
compute='_compute_has_deadline_issue'
default=False
help='Is late or will be late depending on the deadline and scheduled date'
store=True
args: 'Is late'
has_packages
Boolean
compute='_compute_has_packages'
help='Check the existence of destination packages on move lines'
args: 'Has Packages'
has_scrap_move
Boolean
compute='_has_scrap_move'
args: 'Has Scrap Moves'
has_tracking
Boolean
compute='_compute_has_tracking'
hide_picking_type
Boolean
compute='_compute_hide_pickign_type'
immediate_transfer
Boolean
default=False
is_locked
Boolean
default=True
help='When the picking is not done this allows changing the initial demand. When the picking is done this allows changing the done quantities.'
is_signed
Boolean
compute='_compute_is_signed'
args: 'Is Signed'
json_popover
Char
compute='_compute_json_popover'
args: 'JSON data for the popover widget'
location_dest_id
Many2one → stock.location
check_company=True
default=<expr>
readonly=True
required=True
states={'draft': [('readonly', False)]}
args: 'stock.location', 'Destination Location'
location_id
Many2one → stock.location
check_company=True
default=<expr>
readonly=True
required=True
states={'draft': [('readonly', False)]}
args: 'stock.location', 'Source Location'
move_ids_without_package
One2many → stock.move
compute='_compute_move_without_package'
inverse='_set_move_without_package'
string='Stock moves not in package'
args: 'stock.move', 'picking_id'
move_line_exist
Boolean
compute='_compute_move_line_exist'
help='Check the existence of pack operation on the picking'
args: 'Has Pack Operations'
move_line_ids
One2many → stock.move.line
move_line_ids_without_package
One2many → stock.move.line
domain=['|', ('package_level_id', '=', False), ('picking_type_entire_packs', '=', False)]
args: 'stock.move.line', 'picking_id', 'Operations without package'
move_line_nosuggest_ids
One2many → stock.move.line
domain=['|', ('product_qty', '=', 0.0), '&', ('product_qty', '!=', 0.0), ('qty_done', '!=', 0.0)]
args: 'stock.move.line', 'picking_id'
move_lines
One2many → stock.move
copy=True
string='Stock Moves'
args: 'stock.move', 'picking_id'
move_type
Selection
default='direct'
help='It specifies goods to be deliver partially or all at once'
required=True
states={'done': [('readonly', True)], 'cancel': [('readonly', True)]}
args: [('direct', 'As soon as possible'), ('one', 'When all products are ready')], 'Shipping Policy'
name
Char
copy=False
default='/'
index=True
readonly=True
args: 'Reference'
note
Html
origin
Char
help='Reference of the document'
index=True
states={'done': [('readonly', True)], 'cancel': [('readonly', True)]}
args: 'Source Document'
owner_id
Many2one → res.partner
check_company=True
help='When validating the transfer, the products will be assigned to this owner.'
states={'done': [('readonly', True)], 'cancel': [('readonly', True)]}
args: 'res.partner', 'Assign Owner'
package_level_ids
One2many → stock.package_level
package_level_ids_details
One2many → stock.package_level
partner_id
Many2one → res.partner
check_company=True
states={'done': [('readonly', True)], 'cancel': [('readonly', True)]}
args: 'res.partner', 'Contact'
picking_type_code
Selection
readonly=True
related='picking_type_id.code'
picking_type_entire_packs
Boolean
related='picking_type_id.show_entire_packs'
picking_type_id
Many2one → stock.picking.type
readonly=True
required=True
states={'draft': [('readonly', False)]}
args: 'stock.picking.type', 'Operation Type'
printed
Boolean
copy=False
args: 'Printed'
priority
Selection
default='0'
help='Products will be reserved first for the transfers with the highest priorities.'
string='Priority'
args: PROCUREMENT_PRIORITIES
product_id
Many2one → product.product
readonly=True
related='move_lines.product_id'
args: 'product.product', 'Product'
products_availability
Char
compute='_compute_products_availability'
help='Latest product availability status of the picking'
string='Product Availability'
products_availability_state
Selection
compute='_compute_products_availability'
args: [('available', 'Available'), ('expected', 'Expected'), ('late', 'Late')]
scheduled_date
Datetime
compute='_compute_scheduled_date'
default=fields.Datetime.now
help='Scheduled time for the first part of the shipment to be processed. Setting manually a value here would set it as expected date for all the stock moves.'
index=True
inverse='_set_scheduled_date'
states={'done': [('readonly', True)], 'cancel': [('readonly', True)]}
store=True
tracking=True
args: 'Scheduled Date'
show_allocation
Boolean
compute='_compute_show_allocation'
help='Technical Field used to decide whether the button "Allocation" should be displayed.'
show_check_availability
Boolean
compute='_compute_show_check_availability'
help='Technical field used to compute whether the button "Check Availability" should be displayed.'
show_lots_text
Boolean
compute='_compute_show_lots_text'
show_mark_as_todo
Boolean
compute='_compute_show_mark_as_todo'
help='Technical field used to compute whether the button "Mark as Todo" should be displayed.'
show_operations
Boolean
compute='_compute_show_operations'
show_reserved
Boolean
related='picking_type_id.show_reserved'
show_validate
Boolean
compute='_compute_show_validate'
help='Technical field used to decide whether the button "Validate" should be displayed.'
signature
Image
attachment=True
copy=False
help='Signature'
args: 'Signature'
state
Selection
compute='_compute_state'
copy=False
help=' * Draft: The transfer is not confirmed yet. Reservation doesn\'t apply.\n * Waiting another operation: This transfer is waiting for another operation before being ready.\n * Waiting: The transfer is waiting for the availability of some products.\n(a) The shipping policy is "As soon as possible": no product could be reserved.\n(b) The shipping policy is "When all products are ready": not all the products could be reserved.\n * Ready: The transfer is ready to be processed.\n(a) The shipping policy is "As soon as possible": at least one product has been reserved.\n(b) The shipping policy is "When all products are ready": all product have been reserved.\n * Done: The transfer has been processed.\n * Cancelled: The transfer has been cancelled.'
index=True
readonly=True
store=True
string='Status'
tracking=True
args: [('draft', 'Draft'), ('waiting', 'Waiting Another Operation'), ('confirmed', 'Waiting'), ('assigned', 'Ready'), ('done', 'Done'), ('cancel', 'Cancelled')]
use_create_lots
Boolean
related='picking_type_id.use_create_lots'
use_existing_lots
Boolean
related='picking_type_id.use_existing_lots'
user_id
Many2one → res.users
default=<expr>
domain=<expr>
states={'done': [('readonly', True)], 'cancel': [('readonly', True)]}
tracking=True
args: 'res.users', 'Responsible'
action_assign(self)
action_cancel(self)
action_confirm(self)
action_open_label_layout(self)
action_picking_move_tree(self)
action_put_in_pack(self)
action_see_move_scrap(self)
action_see_packages(self)
action_set_quantities_to_reservation(self)
action_toggle_is_locked(self)
action_view_reception_report(self)
button_scrap(self)
button_validate(self)
create(self, vals)
do_print_picking(self)
do_unreserve(self)
onchange_partner_id(self)
should_print_delivery_address(self)
unlink(self)
write(self, vals)
No new fields.
Public methods (0)No public methods.
active
Boolean
default=True
args: 'Active'
barcode
Char
copy=False
args: 'Barcode'
code
Selection
required=True
args: [('incoming', 'Receipt'), ('outgoing', 'Delivery'), ('internal', 'Internal Transfer')], 'Type of Operation'
color
Integer
company_id
Many2one → res.company
default=<expr>
index=True
required=True
args: 'res.company', 'Company'
count_picking
Integer
compute='_compute_picking_count'
count_picking_backorders
Integer
compute='_compute_picking_count'
count_picking_draft
Integer
compute='_compute_picking_count'
count_picking_late
Integer
compute='_compute_picking_count'
count_picking_ready
Integer
compute='_compute_picking_count'
count_picking_waiting
Integer
compute='_compute_picking_count'
default_location_dest_id
Many2one → stock.location
check_company=True
help='This is the default destination location when you create a picking manually with this operation type. It is possible however to change it or that the routes put another location. If it is empty, it will check for the customer location on the partner. '
args: 'stock.location', 'Default Destination Location'
default_location_src_id
Many2one → stock.location
check_company=True
help='This is the default source location when you create a picking manually with this operation type. It is possible however to change it or that the routes put another location. If it is empty, it will check for the supplier location on the partner. '
args: 'stock.location', 'Default Source Location'
name
Char
required=True
translate=True
args: 'Operation Type'
print_label
Boolean
help='If this checkbox is ticked, label will be print in this operation.'
args: 'Print Label'
reservation_days_before
Integer
help='Maximum number of days before scheduled date that products should be reserved.'
args: 'Days'
reservation_days_before_priority
Integer
help='Maximum number of days before scheduled date that priority picking products should be reserved.'
args: 'Days when starred'
reservation_method
Selection
default='at_confirm'
help='How products in transfers of this operation type should be reserved.'
required=True
args: [('at_confirm', 'At Confirmation'), ('manual', 'Manually'), ('by_date', 'Before scheduled date')], 'Reservation Method'
return_picking_type_id
Many2one → stock.picking.type
check_company=True
args: 'stock.picking.type', 'Operation Type for Returns'
sequence
Integer
help="Used to order the 'All Operations' kanban view"
args: 'Sequence'
sequence_code
Char
required=True
args: 'Code'
sequence_id
Many2one → ir.sequence
check_company=True
copy=False
args: 'ir.sequence', 'Reference Sequence'
show_entire_packs
Boolean
help='If ticked, you will be able to select entire packages to move'
args: 'Move Entire Packages'
show_operations
Boolean
default=_default_show_operations
help='If this checkbox is ticked, the pickings lines will represent detailed stock operations. If not, the picking lines will represent an aggregate of detailed stock operations.'
args: 'Show Detailed Operations'
show_reserved
Boolean
default=True
help='If this checkbox is ticked, Odoo will automatically pre-fill the detailed operations with the corresponding products, locations and lot/serial numbers.'
args: 'Pre-fill Detailed Operations'
use_create_lots
Boolean
default=True
help='If this is checked only, it will suppose you want to create new Lots/Serial Numbers, so you can provide them in a text field. '
args: 'Create New Lots/Serial Numbers'
use_existing_lots
Boolean
default=True
help='If this is checked, you will be able to choose the Lots/Serial Numbers. You can also decide to not put lots in this operation type. This means it will create stock with no lot or not put a restriction on the lot taken. '
args: 'Use Existing Lots/Serial Numbers'
warehouse_id
Many2one → stock.warehouse
check_company=True
ondelete='cascade'
args: 'stock.warehouse', 'Warehouse'
create(self, vals)
get_action_picking_tree_backorder(self)
get_action_picking_tree_late(self)
get_action_picking_tree_ready(self)
get_action_picking_tree_waiting(self)
get_action_picking_type_operations(self)
get_stock_picking_action_picking_type(self)
name_get(self)
write(self, vals)
company_id
Many2one → res.company
default=<expr>
index=True
required=True
args: 'res.company', 'Company'
delivery_count
Integer
compute='_compute_delivery_ids'
args: 'Delivery order count'
delivery_ids
Many2many → stock.picking
compute='_compute_delivery_ids'
string='Transfers'
args: 'stock.picking'
display_complete
Boolean
compute='_compute_display_complete'
last_delivery_partner_id
Many2one → res.partner
compute='_compute_last_delivery_partner_id'
args: 'res.partner'
name
Char
default=<expr>
help='Unique Lot/Serial Number'
index=True
required=True
args: 'Lot/Serial Number'
note
Html
string='Description'
product_id
Many2one → product.product
check_company=True
domain=<expr>
index=True
required=True
args: 'product.product', 'Product'
product_qty
Float
compute='_product_qty'
search='_search_product_qty'
args: 'Quantity'
product_uom_id
Many2one → uom.uom
related='product_id.uom_id'
store=True
args: 'uom.uom', 'Unit of Measure'
quant_ids
One2many → stock.quant
readonly=True
args: 'stock.quant', 'lot_id', 'Quants'
ref
Char
help="Internal reference number in case it differs from the manufacturer's lot/serial number"
args: 'Internal Reference'
action_lot_open_quants(self)
action_lot_open_transfers(self)
copy(self, default=None)
create(self, vals_list)
generate_lot_names(self, first_lot, count)
write(self, vals)
No new fields.
Public methods (0)No public methods.
active
Boolean
default=True
args: 'Active'
category_id
Many2one → product.category
default=_default_category_id
domain=_domain_category_id
ondelete='cascade'
args: 'product.category', 'Product Category'
company_id
Many2one → res.company
default=<expr>
index=True
required=True
args: 'res.company', 'Company'
location_in_id
Many2one → stock.location
check_company=True
default=_default_location_id
domain="[('child_ids', '!=', False), '|', ('company_id', '=', False), ('company_id', '=', company_id)]"
index=True
ondelete='cascade'
required=True
args: 'stock.location', 'When product arrives in'
location_out_id
Many2one → stock.location
check_company=True
domain="[('id', 'child_of', location_in_id), '|', ('company_id', '=', False), ('company_id', '=', company_id)]"
ondelete='cascade'
required=True
args: 'stock.location', 'Store to sublocation'
package_type_ids
Many2many → stock.package.type
check_company=True
string='Package Type'
args: 'stock.package.type'
product_id
Many2one → product.product
check_company=True
default=_default_product_id
domain=_domain_product_id
ondelete='cascade'
args: 'product.product', 'Product'
sequence
Integer
help='Give to the more specialized category, a higher priority to have them in top of the list.'
args: 'Priority'
storage_category_id
Many2one → stock.storage.category
check_company=True
ondelete='cascade'
args: 'stock.storage.category', 'Storage Category'
create(self, vals_list)
write(self, vals)
No new fields.
Public methods (0)No public methods.
available_quantity
Float
compute='_compute_available_quantity'
digits='Product Unit of Measure'
help="On hand quantity which hasn't been reserved on a transfer, in the default unit of measure of the product"
args: 'Available Quantity'
company_id
Many2one
readonly=True
related='location_id.company_id'
store=True
string='Company'
in_date
Datetime
default=fields.Datetime.now
readonly=True
required=True
args: 'Incoming Date'
inventory_date
Date
compute='_compute_inventory_date'
help='Next date the On Hand Quantity should be counted.'
readonly=False
store=True
args: 'Scheduled Date'
inventory_diff_quantity
Float
compute='_compute_inventory_diff_quantity'
digits='Product Unit of Measure'
help="Indicates the gap between the product's theoretical quantity and its counted quantity."
readonly=True
store=True
args: 'Difference'
inventory_quantity
Float
digits='Product Unit of Measure'
help="The product's counted quantity."
args: 'Counted Quantity'
inventory_quantity_auto_apply
Float
compute='_compute_inventory_quantity_auto_apply'
groups='stock.group_stock_manager'
inverse='_set_inventory_quantity'
args: 'Inventoried Quantity'
inventory_quantity_set
Boolean
compute='_compute_inventory_quantity_set'
default=False
readonly=False
store=True
is_outdated
Boolean
compute='_compute_is_outdated'
args: 'Quantity has been moved since last count'
location_id
Many2one → stock.location
auto_join=True
check_company=True
domain=<expr>
index=True
ondelete='restrict'
required=True
args: 'stock.location', 'Location'
lot_id
Many2one → stock.production.lot
check_company=True
domain=<expr>
index=True
ondelete='restrict'
args: 'stock.production.lot', 'Lot/Serial Number'
on_hand
Boolean
search='_search_on_hand'
store=False
args: 'On Hand'
owner_id
Many2one → res.partner
check_company=True
help='This is the owner of the quant'
args: 'res.partner', 'Owner'
package_id
Many2one → stock.quant.package
check_company=True
domain="[('location_id', '=', location_id)]"
help='The package containing this quant'
ondelete='restrict'
args: 'stock.quant.package', 'Package'
product_categ_id
Many2one
related='product_tmpl_id.categ_id'
product_id
Many2one → product.product
check_company=True
domain=<expr>
index=True
ondelete='restrict'
required=True
args: 'product.product', 'Product'
product_tmpl_id
Many2one → product.template
related='product_id.product_tmpl_id'
string='Product Template'
args: 'product.template'
product_uom_id
Many2one → uom.uom
readonly=True
related='product_id.uom_id'
args: 'uom.uom', 'Unit of Measure'
quantity
Float
digits='Product Unit of Measure'
help='Quantity of products in this quant, in the default unit of measure of the product'
readonly=True
args: 'Quantity'
reserved_quantity
Float
default=0.0
digits='Product Unit of Measure'
help='Quantity of reserved products in this quant, in the default unit of measure of the product'
readonly=True
required=True
args: 'Reserved Quantity'
tracking
Selection
readonly=True
related='product_id.tracking'
user_id
Many2one → res.users
help='User assigned to do product count.'
args: 'res.users', 'Assigned To'
action_apply_inventory(self)
action_inventory_history(self)
action_reset(self)
action_set_inventory_quantity(self)
action_set_inventory_quantity_to_zero(self)
action_view_inventory(self)
action_view_quants(self)
action_view_stock_moves(self)
check_location_id(self)
check_product_id(self)
check_quantity(self)
create(self, vals)
read_group(self, domain, fields, groupby, offset=0, limit=None, orderby=False, lazy=True)
write(self, vals)
company_id
Many2one → res.company
compute='_compute_package_info'
index=True
readonly=True
store=True
args: 'res.company', 'Company'
location_id
Many2one → stock.location
compute='_compute_package_info'
index=True
readonly=True
store=True
args: 'stock.location', 'Location'
name
Char
copy=False
default=<expr>
index=True
required=True
args: 'Package Reference'
owner_id
Many2one → res.partner
compute='_compute_package_info'
compute_sudo=True
index=True
readonly=True
search='_search_owner'
args: 'res.partner', 'Owner'
package_type_id
Many2one → stock.package.type
index=True
args: 'stock.package.type', 'Package Type'
package_use
Selection
default='disposable'
help="Reusable boxes are used for batch picking and emptied afterwards to be reused. In the barcode application, scanning a reusable box will add the products in this box.\n Disposable boxes aren't reused, when scanning a disposable box in the barcode application, the contained products are added to the transfer."
required=True
string='Package Use'
args: [('disposable', 'Disposable Box'), ('reusable', 'Reusable Box')]
quant_ids
One2many → stock.quant
domain=['|', ('quantity', '!=', 0), ('reserved_quantity', '!=', 0)]
readonly=True
args: 'stock.quant', 'package_id', 'Bulk Content'
action_view_picking(self)
unpack(self)
inventory_datetime
Datetime
default=fields.Datetime.now
help='Choose a date to get the inventory at that date'
args: 'Inventory at Date'
open_at_date(self)
json_lead_days
Char
compute='_compute_json_lead_days'
json_replenishment_history
Char
compute='_compute_json_replenishment_history'
orderpoint_id
Many2one → stock.warehouse.orderpoint
product_id
Many2one → product.product
related='orderpoint_id.product_id'
args: 'product.product'
qty_to_order
Float
related='orderpoint_id.qty_to_order'
No public methods.
inventory_date
Date
default=fields.Datetime.now
help='Choose a date to get the inventory at that date'
required=True
args: 'Inventory Date'
quant_ids
Many2many → stock.quant
set_count
Selection
default='empty'
string='Count'
args: [('empty', 'Leave Empty'), ('set', 'Set Current Value')]
user_id
Many2one → res.users
string='User'
args: 'res.users'
action_request_count(self)
company_id
Many2one
related='picking_id.company_id'
location_id
Many2one → stock.location
domain="['|', ('id', '=', original_location_id), '|', '&', ('return_location', '=', True), ('company_id', '=', False), '&', ('return_location', '=', True), ('company_id', '=', company_id)]"
args: 'stock.location', 'Return Location'
move_dest_exists
Boolean
readonly=True
args: 'Chained Move Exists'
original_location_id
Many2one → stock.location
parent_location_id
Many2one → stock.location
picking_id
Many2one → stock.picking
product_return_moves
One2many → stock.return.picking.line
create_returns(self)
default_get(self, fields)
move_id
Many2one → stock.move
product_id
Many2one → product.product
domain="[('id', '=', product_id)]"
required=True
string='Product'
args: 'product.product'
quantity
Float
digits='Product Unit of Measure'
required=True
args: 'Quantity'
uom_id
Many2one → uom.uom
related='product_id.uom_id'
string='Unit of Measure'
args: 'uom.uom'
wizard_id
Many2one → stock.return.picking
string='Wizard'
args: 'stock.return.picking'
No public methods.
action
Selection
index=True
required=True
selection=[('pull', 'Pull From'), ('push', 'Push To'), ('pull_push', 'Pull & Push')]
string='Action'
active
Boolean
default=True
help='If unchecked, it will allow you to hide the rule without removing it.'
args: 'Active'
auto
Selection
default='manual'
help="The 'Manual Operation' value will create a stock move after the current one. With 'Automatic No Step Added', the location is replaced in the original move."
required=True
string='Automatic Move'
args: [('manual', 'Manual Operation'), ('transparent', 'Automatic No Step Added')]
company_id
Many2one → res.company
default=<expr>
domain="[('id', '=?', route_company_id)]"
index=True
args: 'res.company', 'Company'
delay
Integer
default=0
help='The expected date of the created transfer will be computed based on this lead time.'
args: 'Lead Time'
group_id
Many2one → procurement.group
group_propagation_option
Selection
default='propagate'
string='Propagation of Procurement Group'
args: [('none', 'Leave Empty'), ('propagate', 'Propagate'), ('fixed', 'Fixed')]
location_id
Many2one → stock.location
check_company=True
index=True
required=True
args: 'stock.location', 'Destination Location'
location_src_id
Many2one → stock.location
check_company=True
args: 'stock.location', 'Source Location'
name
Char
help='This field will fill the packing origin and the name of its moves'
required=True
translate=True
args: 'Name'
partner_address_id
Many2one → res.partner
check_company=True
help='Address where goods should be delivered. Optional.'
args: 'res.partner', 'Partner Address'
picking_type_code_domain
Char
compute='_compute_picking_type_code_domain'
picking_type_id
Many2one → stock.picking.type
check_company=True
domain="[('code', '=?', picking_type_code_domain)]"
required=True
args: 'stock.picking.type', 'Operation Type'
procure_method
Selection
default='make_to_stock'
help='Take From Stock: the products will be taken from the available stock of the source location.\nTrigger Another Rule: the system will try to find a stock rule to bring the products in the source location. The available stock will be ignored.\nTake From Stock, if Unavailable, Trigger Another Rule: the products will be taken from the available stock of the source location.If there is no stock available, the system will try to find a rule to bring the products in the source location.'
required=True
string='Supply Method'
args: [('make_to_stock', 'Take From Stock'), ('make_to_order', 'Trigger Another Rule'), ('mts_else_mto', 'Take From Stock, if unavailable, Trigger Another Rule')]
propagate_cancel
Boolean
default=False
help='When ticked, if the move created by this rule is cancelled, the next move will be cancelled too.'
args: 'Cancel Next Move'
propagate_carrier
Boolean
default=False
help='When ticked, carrier of shipment will be propgated.'
args: 'Propagation of carrier'
propagate_warehouse_id
Many2one → stock.warehouse
help='The warehouse to propagate on the created move/procurement, which can be different of the warehouse this rule is for (e.g for resupplying rules from another warehouse)'
args: 'stock.warehouse', 'Warehouse to Propagate'
route_company_id
Many2one
related='route_id.company_id'
string='Route Company'
route_id
Many2one → stock.location.route
index=True
ondelete='cascade'
required=True
args: 'stock.location.route', 'Route'
route_sequence
Integer
compute_sudo=True
related='route_id.sequence'
store=True
args: 'Route Sequence'
rule_message
Html
compute='_compute_action_message'
sequence
Integer
default=20
args: 'Sequence'
warehouse_id
Many2one → stock.warehouse
check_company=True
index=True
args: 'stock.warehouse', 'Warehouse'
default_get(self, fields_list)
product_has_variants
Boolean
default=False
required=True
args: 'Has variants'
product_id
Many2one → product.product
required=True
string='Product'
args: 'product.product'
product_tmpl_id
Many2one → product.template
required=True
string='Product Template'
args: 'product.template'
warehouse_ids
Many2many → stock.warehouse
help='Show the routes that apply on selected warehouses.'
required=True
string='Warehouses'
args: 'stock.warehouse'
default_get(self, fields)
print_report(self)
No new fields.
Public methods (1)procure_calculation(self)
company_id
Many2one → res.company
default=<expr>
required=True
states={'done': [('readonly', True)]}
string='Company'
args: 'res.company'
date_done
Datetime
readonly=True
args: 'Date'
location_id
Many2one → stock.location
check_company=True
default=_get_default_location_id
domain="[('usage', '=', 'internal'), ('company_id', 'in', [company_id, False])]"
required=True
states={'done': [('readonly', True)]}
args: 'stock.location', 'Source Location'
lot_id
Many2one → stock.production.lot
check_company=True
domain="[('product_id', '=', product_id), ('company_id', '=', company_id)]"
states={'done': [('readonly', True)]}
args: 'stock.production.lot', 'Lot/Serial'
move_id
Many2one → stock.move
check_company=True
copy=False
readonly=True
args: 'stock.move', 'Scrap Move'
name
Char
copy=False
default=<expr>
readonly=True
required=True
states={'done': [('readonly', True)]}
args: 'Reference'
origin
Char
string='Source Document'
owner_id
Many2one → res.partner
check_company=True
states={'done': [('readonly', True)]}
args: 'res.partner', 'Owner'
package_id
Many2one → stock.quant.package
check_company=True
states={'done': [('readonly', True)]}
args: 'stock.quant.package', 'Package'
picking_id
Many2one → stock.picking
check_company=True
states={'done': [('readonly', True)]}
args: 'stock.picking', 'Picking'
product_id
Many2one → product.product
check_company=True
domain="[('type', 'in', ['product', 'consu']), '|', ('company_id', '=', False), ('company_id', '=', company_id)]"
required=True
states={'done': [('readonly', True)]}
args: 'product.product', 'Product'
product_uom_category_id
Many2one
related='product_id.uom_id.category_id'
product_uom_id
Many2one → uom.uom
domain="[('category_id', '=', product_uom_category_id)]"
required=True
states={'done': [('readonly', True)]}
args: 'uom.uom', 'Unit of Measure'
scrap_location_id
Many2one → stock.location
check_company=True
default=_get_default_scrap_location_id
domain="[('scrap_location', '=', True), ('company_id', 'in', [company_id, False])]"
required=True
states={'done': [('readonly', True)]}
args: 'stock.location', 'Scrap Location'
scrap_qty
Float
default=1.0
digits='Product Unit of Measure'
required=True
states={'done': [('readonly', True)]}
args: 'Quantity'
state
Selection
default='draft'
readonly=True
string='Status'
tracking=True
args: [('draft', 'Draft'), ('done', 'Done')]
tracking
Selection
readonly=True
related='product_id.tracking'
string='Product Tracking'
action_get_stock_move_lines(self)
action_get_stock_picking(self)
action_validate(self)
do_scrap(self)
No new fields.
Public methods (0)No public methods.
allow_new_product
Selection
default='mixed'
required=True
args: [('empty', 'If the location is empty'), ('same', 'If all products are same'), ('mixed', 'Allow mixed products')]
capacity_ids
One2many → stock.storage.category.capacity
copy=True
args: 'stock.storage.category.capacity', 'storage_category_id'
company_id
Many2one → res.company
location_ids
One2many → stock.location
max_weight
Float
digits='Stock Weight'
args: 'Max Weight'
name
Char
required=True
args: 'Storage Category'
package_capacity_ids
One2many → stock.storage.category.capacity
compute='_compute_storage_capacity_ids'
inverse='_set_storage_capacity_ids'
args: 'stock.storage.category.capacity'
product_capacity_ids
One2many → stock.storage.category.capacity
compute='_compute_storage_capacity_ids'
inverse='_set_storage_capacity_ids'
args: 'stock.storage.category.capacity'
weight_uom_name
Char
compute='_compute_weight_uom_name'
string='Weight unit'
copy(self, default=None)
company_id
Many2one → res.company
related='storage_category_id.company_id'
args: 'res.company', 'Company'
package_type_id
Many2one → stock.package.type
check_company=True
ondelete='cascade'
args: 'stock.package.type', 'Package Type'
product_id
Many2one → product.product
check_company=True
domain=<expr>
ondelete='cascade'
args: 'product.product', 'Product'
product_uom_id
Many2one
related='product_id.uom_id'
quantity
Float
required=True
args: 'Quantity'
storage_category_id
Many2one → stock.storage.category
index=True
ondelete='cascade'
required=True
args: 'stock.storage.category'
No public methods.
No new fields.
Public methods (4)get_html(self, given_context=None)
get_lines(self, line_id=None, **kw)
get_pdf(self, line_data=None)
get_pdf_lines(self, line_data=[])
product_ids
Many2many → product.product
string='Products'
args: 'product.product'
quant_ids
Many2many → stock.quant
string='Quants'
args: 'stock.quant'
tracking_line_ids
One2many → stock.track.line
action_confirm(self)
product_display_name
Char
compute='_compute_display_name'
readonly=True
args: 'Name'
product_id
Many2one → product.product
readonly=True
args: 'product.product', 'Product'
tracking
Selection
related='product_id.tracking'
wizard_id
Many2one → stock.track.confirmation
readonly=True
args: 'stock.track.confirmation'
No public methods.
No new fields.
Public methods (0)No public methods.
active
Boolean
default=True
args: 'Active'
code
Char
help='Short name used to identify your warehouse'
required=True
size=5
args: 'Short Name'
company_id
Many2one → res.company
default=<expr>
help='The company is automatically set from your user preferences.'
index=True
readonly=True
required=True
args: 'res.company', 'Company'
crossdock_route_id
Many2one → stock.location.route
ondelete='restrict'
args: 'stock.location.route', 'Crossdock Route'
delivery_route_id
Many2one → stock.location.route
ondelete='restrict'
args: 'stock.location.route', 'Delivery Route'
delivery_steps
Selection
default='ship_only'
help='Default outgoing route to follow'
required=True
args: [('ship_only', 'Deliver goods directly (1 step)'), ('pick_ship', 'Send goods in output and then deliver (2 steps)'), ('pick_pack_ship', 'Pack goods, send goods in output and then deliver (3 steps)')], 'Outgoing Shipments'
in_type_id
Many2one → stock.picking.type
check_company=True
args: 'stock.picking.type', 'In Type'
int_type_id
Many2one → stock.picking.type
check_company=True
args: 'stock.picking.type', 'Internal Type'
lot_stock_id
Many2one → stock.location
check_company=True
domain="[('usage', '=', 'internal'), ('company_id', '=', company_id)]"
required=True
args: 'stock.location', 'Location Stock'
mto_pull_id
Many2one → stock.rule
name
Char
default=_default_name
index=True
required=True
args: 'Warehouse'
out_type_id
Many2one → stock.picking.type
check_company=True
args: 'stock.picking.type', 'Out Type'
pack_type_id
Many2one → stock.picking.type
check_company=True
args: 'stock.picking.type', 'Pack Type'
partner_id
Many2one → res.partner
check_company=True
default=<expr>
args: 'res.partner', 'Address'
pick_type_id
Many2one → stock.picking.type
check_company=True
args: 'stock.picking.type', 'Pick Type'
reception_route_id
Many2one → stock.location.route
ondelete='restrict'
args: 'stock.location.route', 'Receipt Route'
reception_steps
Selection
default='one_step'
help='Default incoming route to follow'
required=True
args: [('one_step', 'Receive goods directly (1 step)'), ('two_steps', 'Receive goods in input and then stock (2 steps)'), ('three_steps', 'Receive goods in input, then quality and then stock (3 steps)')], 'Incoming Shipments'
resupply_route_ids
One2many → stock.location.route
help='Routes will be created for these resupply warehouses and you can select them on products and product categories'
args: 'stock.location.route', 'supplied_wh_id', 'Resupply Routes'
resupply_wh_ids
Many2many → stock.warehouse
help='Routes will be created automatically to resupply this warehouse from the warehouses ticked'
args: 'stock.warehouse', 'stock_wh_resupply_table', 'supplied_wh_id', 'supplier_wh_id', 'Resupply From'
return_type_id
Many2one → stock.picking.type
check_company=True
args: 'stock.picking.type', 'Return Type'
route_ids
Many2many → stock.location.route
check_company=True
domain="[('warehouse_selectable', '=', True), '|', ('company_id', '=', False), ('company_id', '=', company_id)]"
help='Defaults routes through the warehouse'
args: 'stock.location.route', 'stock_route_warehouse', 'warehouse_id', 'route_id', 'Routes'
sequence
Integer
default=10
help='Gives the sequence of this line when displaying the warehouses.'
view_location_id
Many2one → stock.location
check_company=True
domain="[('usage', '=', 'view'), ('company_id', '=', company_id)]"
required=True
args: 'stock.location', 'View Location'
wh_input_stock_loc_id
Many2one → stock.location
check_company=True
args: 'stock.location', 'Input Location'
wh_output_stock_loc_id
Many2one → stock.location
check_company=True
args: 'stock.location', 'Output Location'
wh_pack_stock_loc_id
Many2one → stock.location
check_company=True
args: 'stock.location', 'Packing Location'
wh_qc_stock_loc_id
Many2one → stock.location
check_company=True
args: 'stock.location', 'Quality Control Location'
action_view_all_routes(self)
create(self, vals)
create_resupply_routes(self, supplier_warehouses)
get_rules_dict(self)
unlink(self)
write(self, vals)
No new fields.
Public methods (0)No public methods.
active
Boolean
default=True
help='If the active field is set to False, it will allow you to hide the orderpoint without removing it.'
args: 'Active'
allowed_location_ids
One2many → stock.location
comodel_name='stock.location'
compute='_compute_allowed_location_ids'
company_id
Many2one → res.company
default=<expr>
index=True
required=True
args: 'res.company', 'Company'
group_id
Many2one → procurement.group
copy=False
help='Moves created through this orderpoint will be put in this procurement group. If none is given, the moves generated by stock rules will be grouped into one big picking.'
args: 'procurement.group', 'Procurement Group'
lead_days_date
Date
compute='_compute_lead_days'
location_id
Many2one → stock.location
check_company=True
index=True
ondelete='cascade'
required=True
args: 'stock.location', 'Location'
name
Char
copy=False
default=<expr>
readonly=True
required=True
args: 'Name'
product_category_id
Many2one → product.category
name='Product Category'
related='product_id.categ_id'
store=True
args: 'product.category'
product_id
Many2one → product.product
check_company=True
domain=<expr>
index=True
ondelete='cascade'
required=True
args: 'product.product', 'Product'
product_max_qty
Float
default=0.0
digits='Product Unit of Measure'
help='When the virtual stock goes below the Min Quantity, Odoo generates a procurement to bring the forecasted quantity to the Quantity specified as Max Quantity.'
required=True
args: 'Max Quantity'
product_min_qty
Float
default=0.0
digits='Product Unit of Measure'
help='When the virtual stock goes below the Min Quantity specified for this field, Odoo generates a procurement to bring the forecasted quantity to the Max Quantity.'
required=True
args: 'Min Quantity'
product_tmpl_id
Many2one → product.template
related='product_id.product_tmpl_id'
args: 'product.template'
product_uom
Many2one → uom.uom
related='product_id.uom_id'
args: 'uom.uom', 'Unit of Measure'
product_uom_name
Char
readonly=True
related='product_uom.display_name'
string='Product unit of measure label'
qty_forecast
Float
compute='_compute_qty'
readonly=True
args: 'Forecast'
qty_multiple
Float
default=1
digits='Product Unit of Measure'
help='The procurement quantity will be rounded up to this multiple. If it is 0, the exact quantity will be used.'
required=True
args: 'Multiple Quantity'
qty_on_hand
Float
compute='_compute_qty'
readonly=True
args: 'On Hand'
qty_to_order
Float
compute='_compute_qty_to_order'
readonly=False
store=True
args: 'To Order'
route_id
Many2one → stock.location.route
domain="[('product_selectable', '=', True)]"
string='Preferred Route'
args: 'stock.location.route'
rule_ids
Many2many → stock.rule
compute='_compute_rules'
string='Rules used'
args: 'stock.rule'
snoozed_until
Date
help='Hidden until next scheduler.'
args: 'Snoozed'
trigger
Selection
default='auto'
required=True
string='Trigger'
args: [('auto', 'Auto'), ('manual', 'Manual')]
warehouse_id
Many2one → stock.warehouse
check_company=True
index=True
ondelete='cascade'
required=True
args: 'stock.warehouse', 'Warehouse'
action_open_orderpoints(self)
action_product_forecast_report(self)
action_replenish(self)
action_replenish_auto(self)
action_stock_replenishment_info(self)
default_get(self, fields)
write(self, vals)
location_id
Many2one → stock.location
domain="[('usage', '=', 'internal')]"
required=True
args: 'stock.location', 'Location'
product_id
Many2one → product.product
required=True
args: 'product.product', 'Product'
product_uom_name
Char
required=True
args: 'Unit of Measure'
quant_ids
Many2many → stock.quant
compute='_compute_quant_ids'
args: 'stock.quant'
quantity
Float
required=True
string='Quantity'
action_done(self)
scrap_id
Many2one → stock.scrap
action_cancel(self)
action_done(self)
No new fields.
Public methods (1)write(self, values)
| XML ID | Name | Model | Type | Status |
|---|---|---|---|---|
assets_common |
report_stock_rule assets | ir.ui.view | qweb | Inherits web.report_assets_common |
assets_common_replenishment_report |
Forecasted Inventory CSS | ir.ui.view | qweb | Inherits web.report_assets_common |
assets_stock_print_report |
assets_stock_print_report | ir.ui.view | qweb | Inherits web.assets_common |
exception_on_picking |
exception_on_picking | ir.ui.view | qweb | New |
label_barcode_product_product_view |
label_barcode_product_product_view | ir.ui.view | qweb | New |
label_barcode_product_template_view |
label_barcode_product_template_view | ir.ui.view | qweb | New |
label_lot_template_view |
label_lot_template_view | ir.ui.view | qweb | New |
label_package_template_view |
label_package_template_view | ir.ui.view | qweb | New |
label_picking_type_view |
label_picking_type_view | ir.ui.view | qweb | New |
label_product_packaging_view |
label_product_packaging_view | ir.ui.view | qweb | New |
label_product_product_view |
label_product_product_view | ir.ui.view | qweb | New |
label_product_template_view |
label_product_template_view | ir.ui.view | qweb | New |
label_transfer_template_view_pdf |
label_transfer_template_view_pdf | ir.ui.view | qweb | New |
label_transfer_template_view_zpl |
label_transfer_template_view_zpl | ir.ui.view | qweb | New |
message_body |
message_body | ir.ui.view | qweb | New |
message_head |
message_head | ir.ui.view | qweb | New |
package_level_form_edit_view |
Package Level | stock.package_level | xpath | Inherits stock.package_level_form_view |
package_level_form_view |
Package Level | stock.package_level | form | New |
package_level_tree_view_picking |
Package Level Tree Picking | stock.package_level | tree | New |
procurement_group_form_view |
procurement.group.form | procurement.group | form | New |
product_category_form_view_inherit |
product.category.form | product.category | div | Inherits product.product_category_form_view |
product_form_view_procurement_button |
product.product.procurement | product.product | data | Inherits product.product_normal_form_view |
product_product_view_form_easy_inherit_stock |
product.product.view.form.easy.inherit.stock | product.product | sheet | Inherits product.product_variant_easy_edit_view |
product_search_form_view_stock |
product.search.stock.form | product.product | field | Inherits product.product_search_form_view |
product_template_form_view_procurement_button |
product.template_procurement | product.template | data | Inherits product.product_template_only_form_view |
product_template_kanban_stock_view |
Product Template Kanban Stock | product.template | xpath | Inherits product.product_template_kanban_view |
product_template_search_form_view_stock |
product.template.search.stock.form | product.template | xpath | Inherits product.product_template_search_view |
quant_package_search_view |
stock.quant.package.search | stock.quant.package | search | New |
quant_search_view |
stock.quant.search | stock.quant | search | New |
qunit_suite |
stock tests | ir.ui.view | qweb | Inherits web.qunit_suite_tests |
report_delivery_document |
report_delivery_document | ir.ui.view | qweb | New |
report_deliveryslip |
report_deliveryslip | ir.ui.view | qweb | New |
report_generic_barcode |
report_generic_barcode | ir.ui.view | qweb | New |
report_inventory |
report_inventory | ir.ui.view | qweb | New |
report_location_barcode |
report_location_barcode | ir.ui.view | qweb | New |
report_lot_label |
report_lot_label | ir.ui.view | qweb | New |
report_mrp_line |
report_mrp_line | ir.ui.view | qweb | New |
report_package_barcode |
report_package_barcode | ir.ui.view | qweb | New |
report_package_barcode_small |
report_package_barcode_small | ir.ui.view | qweb | New |
report_picking |
report_picking | ir.ui.view | qweb | New |
report_picking_type_label |
report_picking_type_label | ir.ui.view | qweb | New |
report_product_product_replenishment |
report_product_product_replenishment | ir.ui.view | qweb | New |
report_product_template_replenishment |
report_product_template_replenishment | ir.ui.view | qweb | New |
report_replenishment_header |
report_replenishment_header | ir.ui.view | qweb | New |
report_stock_body_print |
report_stock_body_print | ir.ui.view | qweb | New |
report_stock_inventory |
report_stock_inventory | ir.ui.view | qweb | New |
report_stock_inventory_print |
report_stock_inventory_print | ir.ui.view | qweb | New |
report_stock_rule |
report_stock_rule | ir.ui.view | qweb | New |
report_stock_rule_left_arrow |
report_stock_rule_left_arrow | ir.ui.view | qweb | New |
report_stock_rule_line |
report_stock_rule_line | ir.ui.view | qweb | New |
report_stock_rule_right_arrow |
report_stock_rule_right_arrow | ir.ui.view | qweb | New |
report_stock_rule_suspension_points |
report_stock_rule_suspension_points | ir.ui.view | qweb | New |
report_stock_rule_vertical_bar |
report_stock_rule_vertical_bar | ir.ui.view | qweb | New |
res_config_settings_view_form |
res.config.settings.view.form.inherit.stock | res.config.settings | xpath | Inherits base.res_config_settings_view_form |
search_product_lot_filter |
Production Lots Filter | stock.production.lot | search | New |
stock_assets_backend |
mrp_workorder assets | ir.ui.view | qweb | Inherits web.assets_backend |
stock_inventory_line_search |
stock.inventory.line.search | stock.inventory.line | search | New |
stock_inventory_line_tree |
stock.inventory.line.tree | stock.inventory.line | tree | New |
stock_inventory_line_tree_no_product_create |
stock.inventory.line.tree2 | stock.inventory.line | field | Inherits stock.stock_inventory_line_tree |
stock_location_route_form_view |
stock.location.route.form | stock.location.route | form | New |
stock_location_route_tree |
stock.location.route.tree | stock.location.route | tree | New |
stock_location_route_view_search |
stock.location.route.search | stock.location.route | search | New |
stock_location_view_form_editable |
stock.location.form.editable | stock.location | xpath | Inherits stock.view_location_form |
stock_location_view_tree2_editable |
stock.location.tree2.editable | stock.location | xpath | Inherits stock.view_location_tree2 |
stock_move_line_view_search |
stock.move.line.search | stock.move.line | search | New |
stock_package_destination_form_view |
stock.package.destination.view | stock.package.destination | form | New |
stock_picking_calendar |
stock.picking.calendar | stock.picking | calendar | New |
stock_picking_kanban |
stock.picking.kanban | stock.picking | kanban | New |
stock_picking_type_kanban |
stock.picking.type.kanban | stock.picking.type | kanban | New |
stock_product_search_form_view |
product.product.search.stock.form | product.product | xpath | Inherits product.product_search_form_view |
stock_putaway_list |
stock.putaway.rule.tree | stock.putaway.rule | tree | New |
stock_quant_view_graph |
stock.quant.graph | stock.quant | graph | New |
stock_reorder_report_search |
stock.warehouse.orderpoint.reorder.search | stock.warehouse.orderpoint | search | New |
stock_report_delivery_aggregated_move_lines |
stock_report_delivery_aggregated_move_lines | ir.ui.view | qweb | New |
stock_report_delivery_has_serial_move_line |
stock_report_delivery_has_serial_move_line | ir.ui.view | qweb | New |
stock_report_delivery_no_package_section_line |
stock_report_delivery_no_package_section_line | ir.ui.view | qweb | New |
stock_report_delivery_package_section_line |
stock_report_delivery_package_section_line | ir.ui.view | qweb | New |
stock_report_view_graph |
stock_report_view_graph | report.stock.quantity | graph | New |
stock_report_view_search |
report.stock.quantity.search | report.stock.quantity | search | New |
stock_scrap_form_view |
stock.scrap.form | stock.scrap | form | New |
stock_scrap_form_view2 |
stock.scrap.form2 | stock.scrap | form | New |
stock_scrap_search_view |
stock.scrap.search | stock.scrap | search | New |
stock_scrap_tree_view |
stock.scrap.tree | stock.scrap | tree | New |
stock_scrap_view_kanban |
stock.scrap.kanban | stock.scrap | kanban | New |
stock_warehouse_view_search |
stock.warehouse.search | stock.warehouse | search | New |
stock_warn_insufficient_qty_form_view |
stock.warn.insufficient.qty | stock.warn.insufficient.qty | form | New |
stock_warn_insufficient_qty_scrap_form_view |
stock.warn.insufficient.qty.scrap | stock.warn.insufficient.qty.scrap | xpath | Inherits stock.stock_warn_insufficient_qty_form_view |
track_move_template |
track_move_template | ir.ui.view | qweb | New |
view_assign_serial_numbers |
stock_assign_serial_numbers | stock.assign.serial | form | New |
view_backorder_confirmation |
stock_backorder_confirmation | stock.backorder.confirmation | form | New |
view_change_product_quantity |
Change Product Quantity | stock.change.product.qty | form | New |
view_immediate_transfer |
stock.immediate.transfer.view.form | stock.immediate.transfer | form | New |
view_inventory_filter |
stock.inventory.filter | stock.inventory | search | New |
view_inventory_form |
stock.inventory.form | stock.inventory | form | New |
view_inventory_tree |
stock.inventory.tree | stock.inventory | tree | New |
view_location_form |
stock.location.form | stock.location | form | New |
view_location_search |
stock.location.search | stock.location | search | New |
view_location_tree2 |
stock.location.tree | stock.location | tree | New |
view_move_form |
stock.move.form | stock.move | form | New |
view_move_graph |
stock.move.graph | stock.move | graph | New |
view_move_kandan |
stock.move.kanban | stock.move | kanban | New |
view_move_line_form |
stock.move.line.form | stock.move.line | form | New |
view_move_line_tree |
stock.move.line.tree | stock.move.line | tree | New |
view_move_pivot |
stock.move.pivot | stock.move | pivot | New |
view_move_search |
stock.move.search | stock.move | search | New |
view_move_tree |
stock.move.tree | stock.move | tree | New |
view_move_tree_receipt_picking |
stock.move.tree2 | stock.move | tree | New |
view_partner_stock_form |
res.partner.stock.property.form.inherit | res.partner | xpath | Inherits mail.res_partner_view_form_inherit_mail |
view_partner_stock_warnings_form |
res.partner.stock.warning | res.partner | page | Inherits base.view_partner_form |
view_picking_form |
stock.picking.form | stock.picking | form | New |
view_picking_internal_search |
stock.picking.internal.search | stock.picking | search | New |
view_picking_move_tree |
stock.picking.move.tree | stock.move | tree | New |
view_picking_type_form |
Operation Types | stock.picking.type | form | New |
view_picking_type_list |
stock.picking.type.list | stock.picking.type | tree | New |
view_picking_type_tree |
Operation types | stock.picking.type | tree | New |
view_pickingtype_filter |
stock.picking.type.filter | stock.picking.type | search | New |
view_procurement_compute_wizard |
Run Schedulers Manually | stock.scheduler.compute | form | New |
view_product_replenish |
Replenish | product.replenish | form | New |
view_production_lot_form |
stock.production.lot.form | stock.production.lot | form | New |
view_production_lot_tree |
stock.production.lot.tree | stock.production.lot | tree | New |
view_putaway_search |
stock.putaway.rule.search | stock.putaway.rule | search | New |
view_quant_package_form |
stock.quant.package.form | stock.quant.package | form | New |
view_quant_package_kanban |
stock.quant.package.kanban | stock.quant.package | kanban | New |
view_quant_package_tree |
stock.quant.package.tree | stock.quant.package | tree | New |
view_removal |
product.removal.form | product.removal | form | New |
view_route_rule_form |
stock.rule.form | stock.rule | xpath | Inherits stock.view_stock_rule_form |
view_stock_inventory_kanban |
stock.inventory.kanban | stock.inventory | kanban | New |
view_stock_move_line_detailed_operation_tree |
stock.move.line.operations.tree | stock.move.line | tree | New |
view_stock_move_line_kanban |
stock.move.line.kanban | stock.move.line | kanban | New |
view_stock_move_line_operation_tree |
stock.move.line.operations.tree | stock.move.line | tree | New |
view_stock_move_nosuggest_operations |
stock.move.operations.nosuggest.form | stock.move | field | Inherits stock.view_stock_move_operations |
view_stock_move_operations |
stock.move.operations.form | stock.move | form | New |
view_stock_orderpoint_snooze |
Stock Orderpoint Snooze | stock.orderpoint.snooze | form | New |
view_stock_product_template_tree |
product.template.stock.tree.inherit | product.template | field | Inherits product.product_template_tree_view |
view_stock_product_tree |
product.stock.tree.inherit | product.product | field | Inherits product.product_product_tree_view |
view_stock_quant_form |
stock.quant.form | stock.quant | form | New |
view_stock_quant_form_editable |
stock.quant.form.editable | stock.quant | form | New |
view_stock_quant_pivot |
stock.quant.pivot | stock.quant | pivot | New |
view_stock_quant_tree |
stock.quant.tree | stock.quant | tree | New |
view_stock_quant_tree_editable |
stock.quant.tree.editable | stock.quant | tree | New |
view_stock_quantity_history |
Inventory Report at Date | stock.quantity.history | form | New |
view_stock_return_picking_form |
Return lines | stock.return.picking | form | New |
view_stock_rule_filter |
stock.rule.select | stock.rule | search | New |
view_stock_rule_form |
stock.rule.form | stock.rule | form | New |
view_stock_rule_tree |
stock.rule.tree | stock.rule | tree | New |
view_stock_rules_report |
Stock Rules Report | stock.rules.report | form | New |
view_stock_track_confirmation |
stock.track.confirmation.view.form | stock.track.confirmation | form | New |
view_stock_warehouse_orderpoint_kanban |
stock.warehouse.orderpoint.kanban | stock.warehouse.orderpoint | kanban | New |
view_template_property_form |
product.template.stock.property.form.inherit | product.template | xpath | Inherits product.product_template_form_view |
view_warehouse |
stock.warehouse | stock.warehouse | form | New |
view_warehouse_orderpoint_form |
stock.warehouse.orderpoint.form | stock.warehouse.orderpoint | form | New |
view_warehouse_orderpoint_tree_editable |
stock.warehouse.orderpoint.tree.editable | stock.warehouse.orderpoint | tree | New |
view_warehouse_orderpoint_tree_editable_config |
stock.warehouse.orderpoint.tree.editable.config | stock.warehouse.orderpoint | tree | New |
view_warehouse_tree |
stock.warehouse.tree | stock.warehouse | tree | New |
vpicktree |
stock.picking.tree | stock.picking | tree | New |
warehouse_orderpoint_search |
stock.warehouse.orderpoint.search | stock.warehouse.orderpoint | search | New |
type
Selection
ondelete={'weight': 'set default', 'location': 'set default', 'lot': 'set default', 'package': 'set default'}
selection_add=[('weight', 'Weighted Product'), ('location', 'Location'), ('lot', 'Lot'), ('package', 'Package')]
No public methods.
move_type
Selection
default='direct'
required=True
string='Delivery Type'
args: [('direct', 'Partial'), ('one', 'All at once')]
name
Char
default=<expr>
required=True
args: 'Reference'
partner_id
Many2one → res.partner
stock_move_ids
One2many → stock.move
string='Related Stock Moves'
args: 'stock.move', 'group_id'
run(self, procurements, raise_user_error=True)
run_scheduler(self, use_new_cursor=False, company_id=False)
putaway_rule_ids
One2many → stock.putaway.rule
removal_strategy_id
Many2one → product.removal
help='Set a specific removal strategy that will be used regardless of the source location for this product category'
args: 'product.removal', 'Force Removal Strategy'
route_ids
Many2many → stock.location.route
domain=[('product_categ_selectable', '=', True)]
args: 'stock.location.route', 'stock_location_route_categ', 'categ_id', 'route_id', 'Routes'
total_route_ids
Many2many → stock.location.route
compute='_compute_total_route_ids'
readonly=True
string='Total routes'
args: 'stock.location.route'
No public methods.
free_qty
Float
compute='_compute_quantities'
compute_sudo=False
digits='Product Unit of Measure'
help="Forecast quantity (computed as Quantity On Hand - reserved quantity)\nIn a context with a single Stock Location, this includes goods stored in this location, or any of its children.\nIn a context with a single Warehouse, this includes goods stored in the Stock Location of this Warehouse, or any of its children.\nOtherwise, this includes goods stored in any Stock Location with 'internal' type."
search='_search_free_qty'
args: 'Free To Use Quantity '
incoming_qty
Float
compute='_compute_quantities'
compute_sudo=False
digits='Product Unit of Measure'
help="Quantity of planned incoming products.\nIn a context with a single Stock Location, this includes goods arriving to this Location, or any of its children.\nIn a context with a single Warehouse, this includes goods arriving to the Stock Location of this Warehouse, or any of its children.\nOtherwise, this includes goods arriving to any Stock Location with 'internal' type."
search='_search_incoming_qty'
args: 'Incoming'
nbr_reordering_rules
Integer
compute='_compute_nbr_reordering_rules'
compute_sudo=False
args: 'Reordering Rules'
orderpoint_ids
One2many → stock.warehouse.orderpoint
outgoing_qty
Float
compute='_compute_quantities'
compute_sudo=False
digits='Product Unit of Measure'
help="Quantity of planned outgoing products.\nIn a context with a single Stock Location, this includes goods leaving this Location, or any of its children.\nIn a context with a single Warehouse, this includes goods leaving the Stock Location of this Warehouse, or any of its children.\nOtherwise, this includes goods leaving any Stock Location with 'internal' type."
search='_search_outgoing_qty'
args: 'Outgoing'
putaway_rule_ids
One2many → stock.putaway.rule
qty_available
Float
compute='_compute_quantities'
compute_sudo=False
digits='Product Unit of Measure'
help="Current quantity of products.\nIn a context with a single Stock Location, this includes goods stored at this Location, or any of its children.\nIn a context with a single Warehouse, this includes goods stored in the Stock Location of this Warehouse, or any of its children.\nstored in the Stock Location of the Warehouse of this Shop, or any of its children.\nOtherwise, this includes goods stored in any Stock Location with 'internal' type."
search='_search_qty_available'
args: 'Quantity On Hand'
reordering_max_qty
Float
compute='_compute_nbr_reordering_rules'
compute_sudo=False
reordering_min_qty
Float
compute='_compute_nbr_reordering_rules'
compute_sudo=False
stock_move_ids
One2many → stock.move
help='Technical: used to compute quantities.'
args: 'stock.move', 'product_id'
stock_quant_ids
One2many → stock.quant
help='Technical: used to compute quantities.'
args: 'stock.quant', 'product_id'
virtual_available
Float
compute='_compute_quantities'
compute_sudo=False
digits='Product Unit of Measure'
help="Forecast quantity (computed as Quantity On Hand - Outgoing + Incoming)\nIn a context with a single Stock Location, this includes goods stored in this location, or any of its children.\nIn a context with a single Warehouse, this includes goods stored in the Stock Location of this Warehouse, or any of its children.\nOtherwise, this includes goods stored in any Stock Location with 'internal' type."
search='_search_virtual_available'
args: 'Forecast Quantity'
action_open_product_lot(self)
action_open_quants(self)
action_product_forecast_report(self)
action_update_quantity_on_hand(self)
action_view_orderpoints(self)
action_view_related_putaway_rules(self)
action_view_routes(self)
action_view_stock_move_lines(self)
fields_view_get(self, view_id=None, view_type='form', toolbar=False, submenu=False)
get_components(self)
get_theoretical_quantity(self, product_id, location_id, lot_id=None, package_id=None, owner_id=None, to_uom=None)
onchange_tracking(self)
view_header_get(self, view_id, view_type)
write(self, values)
method
Char
help='FIFO, LIFO...'
required=True
args: 'Method'
name
Char
required=True
args: 'Name'
No public methods.
company_id
Many2one → res.company
date_planned
Datetime
help='Date at which the replenishment should take place.'
required=True
args: 'Scheduled Date'
product_has_variants
Boolean
default=False
required=True
args: 'Has variants'
product_id
Many2one → product.product
required=True
string='Product'
args: 'product.product'
product_tmpl_id
Many2one → product.template
required=True
string='Product Template'
args: 'product.template'
product_uom_category_id
Many2one → uom.category
readonly=True
related='product_id.uom_id.category_id'
required=True
args: 'uom.category'
product_uom_id
Many2one → uom.uom
required=True
string='Unit of measure'
args: 'uom.uom'
quantity
Float
default=1
required=True
args: 'Quantity'
route_ids
Many2many → stock.location.route
domain="['|', ('company_id', '=', False), ('company_id', '=', company_id)]"
help="Apply specific route(s) for the replenishment instead of product's default routes."
string='Preferred Routes'
args: 'stock.location.route'
warehouse_id
Many2one → stock.warehouse
domain="[('company_id', '=', company_id)]"
required=True
string='Warehouse'
args: 'stock.warehouse'
default_get(self, fields)
launch_replenishment(self)
description_picking
Text
translate=True
args: 'Description on Picking'
description_pickingin
Text
translate=True
args: 'Description on Receptions'
description_pickingout
Text
translate=True
args: 'Description on Delivery Orders'
has_available_route_ids
Boolean
compute='_compute_has_available_route_ids'
default=<expr>
args: 'Routes can be selected on this product'
incoming_qty
Float
compute='_compute_quantities'
compute_sudo=False
digits='Product Unit of Measure'
search='_search_incoming_qty'
args: 'Incoming'
location_id
Many2one → stock.location
store=False
args: 'stock.location', 'Location'
nbr_reordering_rules
Integer
compute='_compute_nbr_reordering_rules'
compute_sudo=False
args: 'Reordering Rules'
outgoing_qty
Float
compute='_compute_quantities'
compute_sudo=False
digits='Product Unit of Measure'
search='_search_outgoing_qty'
args: 'Outgoing'
property_stock_inventory
Many2one → stock.location
check_company=True
company_dependent=True
domain="[('usage', '=', 'inventory'), '|', ('company_id', '=', False), ('company_id', '=', allowed_company_ids[0])]"
help='This stock location will be used, instead of the default one, as the source location for stock moves generated when you do an inventory.'
args: 'stock.location', 'Inventory Location'
property_stock_production
Many2one → stock.location
check_company=True
company_dependent=True
domain="[('usage', '=', 'production'), '|', ('company_id', '=', False), ('company_id', '=', allowed_company_ids[0])]"
help='This stock location will be used, instead of the default one, as the source location for stock moves generated by manufacturing orders.'
args: 'stock.location', 'Production Location'
qty_available
Float
compute='_compute_quantities'
compute_sudo=False
digits='Product Unit of Measure'
search='_search_qty_available'
args: 'Quantity On Hand'
reordering_max_qty
Float
compute='_compute_nbr_reordering_rules'
compute_sudo=False
reordering_min_qty
Float
compute='_compute_nbr_reordering_rules'
compute_sudo=False
responsible_id
Many2one → res.users
check_company=True
company_dependent=True
default=<expr>
help='This user will be responsible of the next activities related to logistic operations for this product.'
string='Responsible'
args: 'res.users'
route_from_categ_ids
Many2many
readonly=False
related='categ_id.total_route_ids'
related_sudo=False
relation='stock.location.route'
string='Category Routes'
route_ids
Many2many → stock.location.route
domain=[('product_selectable', '=', True)]
help='Depending on the modules installed, this will allow you to define the route of the product: whether it will be bought, manufactured, replenished on order, etc.'
args: 'stock.location.route', 'stock_route_product', 'product_id', 'route_id', 'Routes'
sale_delay
Float
default=0
help="Delivery lead time, in days. It's the number of days, promised to the customer, between the confirmation of the sales order and the delivery."
args: 'Customer Lead Time'
show_on_hand_qty_status_button
Boolean
compute='_compute_show_on_hand_qty_status_button'
tracking
Selection
compute='_compute_tracking'
default='none'
help='Ensure the traceability of a storable product in your warehouse.'
readonly=False
required=True
store=True
string='Tracking'
args: [('serial', 'By Unique Serial Number'), ('lot', 'By Lots'), ('none', 'No Tracking')]
type
Selection
ondelete={'product': 'set default'}
selection_add=[('product', 'Storable Product')]
tracking=True
virtual_available
Float
compute='_compute_quantities'
compute_sudo=False
digits='Product Unit of Measure'
search='_search_virtual_available'
args: 'Forecasted Quantity'
warehouse_id
Many2one → stock.warehouse
store=False
args: 'stock.warehouse', 'Warehouse'
action_open_product_lot(self)
action_open_quants(self)
action_open_routes_diagram(self)
action_product_tmpl_forecast_report(self)
action_update_quantity_on_hand(self)
action_view_orderpoints(self)
action_view_related_putaway_rules(self)
action_view_stock_move_lines(self)
onchange_tracking(self)
write(self, vals)
company_id
Many2one → res.company
readonly=True
args: 'res.company'
date
Date
readonly=True
string='Date'
product_id
Many2one → product.product
readonly=True
string='Product'
args: 'product.product'
product_qty
Float
readonly=True
string='Quantity'
product_tmpl_id
Many2one → product.template
related='product_id.product_tmpl_id'
args: 'product.template'
state
Selection
readonly=True
string='State'
args: [('forecast', 'Forecasted Stock'), ('in', 'Forecasted Receipts'), ('out', 'Forecasted Deliveries')]
warehouse_id
Many2one → stock.warehouse
readonly=True
args: 'stock.warehouse'
init(self)
read_group(self, domain, fields, groupby, offset=0, limit=None, orderby=False, lazy=True)
No new fields.
Public methods (1)get_filter_state(self)
No new fields.
Public methods (0)No public methods.
No new fields.
Public methods (0)No public methods.
internal_transit_location_id
Many2one → stock.location
check_company=True
help='Technical field used for resupply routes between warehouses that belong to this company'
ondelete='restrict'
args: 'stock.location', 'Internal Transit Location'
stock_mail_confirmation_template_id
Many2one → mail.template
default=_default_confirmation_mail_template
domain="[('model', '=', 'stock.picking')]"
help='Email sent to the customer once the order is done.'
string='Email Template confirmation picking'
args: 'mail.template'
stock_move_email_validation
Boolean
default=False
args: 'Email Confirmation picking'
create(self, vals)
create_missing_inventory_loss_location(self)
create_missing_production_location(self)
create_missing_scrap_location(self)
create_missing_scrap_sequence(self)
create_missing_transit_location(self)
create_missing_warehouse(self)
group_lot_on_delivery_slip
Boolean
group='base.group_user,base.group_portal'
implied_group='stock.group_lot_on_delivery_slip'
args: 'Display Lots & Serial Numbers on Delivery Slips'
group_stock_adv_location
Boolean
help='Add and customize route operations to process product moves in your warehouse(s): e.g. unload > quality control > stock for incoming products, pick > pack > ship for outgoing products. \n You can also set putaway strategies on warehouse locations in order to send incoming products into specific child locations straight away (e.g. specific bins, racks).'
implied_group='stock.group_adv_location'
args: 'Multi-Step Routes'
group_stock_multi_locations
Boolean
help='Store products in specific locations of your warehouse (e.g. bins, racks) and to track inventory accordingly.'
implied_group='stock.group_stock_multi_locations'
args: 'Storage Locations'
group_stock_production_lot
Boolean
implied_group='stock.group_production_lot'
args: 'Lots & Serial Numbers'
group_stock_sign_delivery
Boolean
implied_group='stock.group_stock_sign_delivery'
args: 'Signature'
group_stock_tracking_lot
Boolean
implied_group='stock.group_tracking_lot'
args: 'Packages'
group_stock_tracking_owner
Boolean
implied_group='stock.group_tracking_owner'
args: 'Consignment'
group_warning_stock
Boolean
implied_group='stock.group_warning_stock'
args: 'Warnings for Stock'
module_delivery
Boolean
module_delivery_bpost
Boolean
module_delivery_dhl
Boolean
module_delivery_easypost
Boolean
module_delivery_fedex
Boolean
module_delivery_ups
Boolean
module_delivery_usps
Boolean
module_procurement_jit
Selection
default='0'
help='Reserving products manually in delivery orders or by running the scheduler is advised to better manage priorities in case of long customer lead times or/and frequent stock-outs.'
args: [('1', 'Immediately after sales order confirmation'), ('0', 'Manually or based on automatic scheduler')], 'Reservation'
module_product_expiry
Boolean
help='Track following dates on lots & serial numbers: best before, removal, end of life, alert. \n Such dates are set automatically at lot/serial number creation based on values set on the product (in days).'
args: 'Expiration Dates'
module_stock_barcode
Boolean
module_stock_picking_batch
Boolean
module_stock_sms
Boolean
stock_mail_confirmation_template_id
Many2one
readonly=False
related='company_id.stock_mail_confirmation_template_id'
stock_move_email_validation
Boolean
readonly=False
related='company_id.stock_move_email_validation'
onchange_adv_location(self)
set_values(self)
picking_warn
Selection
default='no-message'
help=WARNING_HELP
args: WARNING_MESSAGE, 'Stock Picking'
picking_warn_msg
Text
property_stock_customer
Many2one → stock.location
check_company=True
company_dependent=True
domain="['|', ('company_id', '=', False), ('company_id', '=', allowed_company_ids[0])]"
help='The stock location used as destination when sending goods to this contact.'
string='Customer Location'
args: 'stock.location'
property_stock_supplier
Many2one → stock.location
check_company=True
company_dependent=True
domain="['|', ('company_id', '=', False), ('company_id', '=', allowed_company_ids[0])]"
help='The stock location used as source when receiving goods from this contact.'
string='Vendor Location'
args: 'stock.location'
No public methods.
move_id
Many2one → stock.move
required=True
args: 'stock.move'
next_serial_count
Integer
default=_default_next_serial_count
required=True
args: 'Number of SN'
next_serial_number
Char
required=True
args: 'First SN'
product_id
Many2one → product.product
related='move_id.product_id'
required=True
args: 'product.product', 'Product'
generate_serial_numbers(self)
backorder_confirmation_line_ids
One2many → stock.backorder.confirmation.line
string='Backorder Confirmation Lines'
args: 'stock.backorder.confirmation.line', 'backorder_confirmation_id'
pick_ids
Many2many → stock.picking
show_transfers
Boolean
default_get(self, fields)
process(self)
process_cancel_backorder(self)
backorder_confirmation_id
Many2one → stock.backorder.confirmation
picking_id
Many2one → stock.picking
to_backorder
Boolean
No public methods.
new_quantity
Float
default=1
digits='Product Unit of Measure'
help='This quantity is expressed in the Default Unit of Measure of the product.'
required=True
args: 'New Quantity on Hand'
product_id
Many2one → product.product
required=True
args: 'product.product', 'Product'
product_tmpl_id
Many2one → product.template
required=True
args: 'product.template', 'Template'
product_variant_count
Integer
readonly=False
related='product_tmpl_id.product_variant_count'
args: 'Variant Count'
change_product_qty(self)
check_new_quantity(self)
immediate_transfer_line_ids
One2many → stock.immediate.transfer.line
string='Immediate Transfer Lines'
args: 'stock.immediate.transfer.line', 'immediate_transfer_id'
pick_ids
Many2many → stock.picking
show_transfers
Boolean
default_get(self, fields)
process(self)
immediate_transfer_id
Many2one → stock.immediate.transfer
required=True
args: 'stock.immediate.transfer', 'Immediate Transfer'
picking_id
Many2one → stock.picking
required=True
args: 'stock.picking', 'Transfer'
to_immediate
Boolean
No public methods.
company_id
Many2one → res.company
default=<expr>
index=True
readonly=True
required=True
states={'draft': [('readonly', False)]}
args: 'res.company', 'Company'
date
Datetime
default=fields.Datetime.now
help='If the inventory adjustment is not validated, date at which the theoritical quantities have been checked.\nIf the inventory adjustment is validated, date at which the inventory adjustment has been validated.'
readonly=True
required=True
args: 'Inventory Date'
exhausted
Boolean
help='Include also products with quantity of 0'
readonly=True
states={'draft': [('readonly', False)]}
args: 'Include Exhausted Products'
line_ids
One2many → stock.inventory.line
copy=False
readonly=False
states={'done': [('readonly', True)]}
string='Inventories'
args: 'stock.inventory.line', 'inventory_id'
location_ids
Many2many → stock.location
check_company=True
domain="[('company_id', '=', company_id), ('usage', 'in', ['internal', 'transit'])]"
readonly=True
states={'draft': [('readonly', False)]}
string='Locations'
args: 'stock.location'
move_ids
One2many → stock.move
states={'done': [('readonly', True)]}
string='Created Moves'
args: 'stock.move', 'inventory_id'
name
Char
default='Inventory'
readonly=True
required=True
states={'draft': [('readonly', False)]}
args: 'Inventory Reference'
prefill_counted_quantity
Selection
default='counted'
help='Allows to start with a pre-filled counted quantity for each lines or with all counted quantities set to zero.'
selection=[('counted', 'Default to stock on hand'), ('zero', 'Default to zero')]
string='Counted Quantities'
product_ids
Many2many → product.product
check_company=True
domain="[('type', '=', 'product'), '|', ('company_id', '=', False), ('company_id', '=', company_id)]"
help='Specify Products to focus your inventory on particular Products.'
readonly=True
states={'draft': [('readonly', False)]}
string='Products'
args: 'product.product'
start_empty
Boolean
help='Allows to start with an empty inventory.'
args: 'Empty Inventory'
state
Selection
copy=False
default='draft'
index=True
readonly=True
selection=[('draft', 'Draft'), ('cancel', 'Cancelled'), ('confirm', 'In Progress'), ('done', 'Validated')]
string='Status'
tracking=True
action_cancel_draft(self)
action_check(self)
action_open_inventory_lines(self)
action_print(self)
action_start(self)
action_validate(self)
action_view_related_move_lines(self)
copy_data(self, default=None)
post_inventory(self)
unlink(self)
categ_id
Many2one
related='product_id.categ_id'
store=True
company_id
Many2one → res.company
index=True
readonly=True
related='inventory_id.company_id'
store=True
args: 'res.company', 'Company'
difference_qty
Float
compute='_compute_difference'
digits='Product Unit of Measure'
help="Indicates the gap between the product's theoretical quantity and its newest quantity."
readonly=True
search='_search_difference_qty'
args: 'Difference'
inventory_date
Datetime
default=fields.Datetime.now
help='Last date at which the On Hand Quantity has been computed.'
readonly=True
args: 'Inventory Date'
inventory_id
Many2one → stock.inventory
check_company=True
index=True
ondelete='cascade'
args: 'stock.inventory', 'Inventory'
is_editable
Boolean
help='Technical field to restrict editing.'
location_id
Many2one → stock.location
check_company=True
domain=<expr>
index=True
required=True
args: 'stock.location', 'Location'
outdated
Boolean
compute='_compute_outdated'
search='_search_outdated'
string='Quantity outdated'
package_id
Many2one → stock.quant.package
check_company=True
domain="[('location_id', '=', location_id)]"
index=True
args: 'stock.quant.package', 'Pack'
partner_id
Many2one → res.partner
check_company=True
args: 'res.partner', 'Owner'
prod_lot_id
Many2one → stock.production.lot
check_company=True
domain="[('product_id','=',product_id), ('company_id', '=', company_id)]"
args: 'stock.production.lot', 'Lot/Serial Number'
product_id
Many2one → product.product
check_company=True
domain=<expr>
index=True
required=True
args: 'product.product', 'Product'
product_qty
Float
default=0
digits='Product Unit of Measure'
readonly=True
states={'confirm': [('readonly', False)]}
args: 'Counted Quantity'
product_tracking
Selection
readonly=True
related='product_id.tracking'
string='Tracking'
product_uom_id
Many2one → uom.uom
readonly=True
required=True
args: 'uom.uom', 'Product Unit of Measure'
state
Selection
related='inventory_id.state'
string='Status'
theoretical_qty
Float
digits='Product Unit of Measure'
readonly=True
args: 'Theoretical Quantity'
action_refresh_quantity(self)
action_reset_product_qty(self)
create(self, vals_list)
write(self, vals)
active
Boolean
default=True
help='By unchecking the active field, you may hide a location without deleting it.'
args: 'Active'
barcode
Char
copy=False
args: 'Barcode'
child_ids
One2many → stock.location
comment
Text
company_id
Many2one → res.company
default=<expr>
help='Let this field empty if this location is shared between companies'
index=True
args: 'res.company', 'Company'
complete_name
Char
compute='_compute_complete_name'
store=True
args: 'Full Location Name'
location_id
Many2one → stock.location
check_company=True
help="The parent location that includes this location. Example : The 'Dispatch Zone' is the 'Gate 1' parent location."
index=True
ondelete='cascade'
args: 'stock.location', 'Parent Location'
name
Char
required=True
args: 'Location Name'
parent_path
Char
index=True
posx
Integer
default=0
help='Optional localization details, for information purpose only'
args: 'Corridor (X)'
posy
Integer
default=0
help='Optional localization details, for information purpose only'
args: 'Shelves (Y)'
posz
Integer
default=0
help='Optional localization details, for information purpose only'
args: 'Height (Z)'
putaway_rule_ids
One2many → stock.putaway.rule
quant_ids
One2many → stock.quant
removal_strategy_id
Many2one → product.removal
help='Defines the default method used for suggesting the exact location (shelf) where to take the products from, which lot etc. for this location. This method can be enforced at the product category level, and a fallback is made on the parent locations if none is set here.'
args: 'product.removal', 'Removal Strategy'
return_location
Boolean
help='Check this box to allow using this location as a return location.'
args: 'Is a Return Location?'
scrap_location
Boolean
default=False
help='Check this box to allow using this location to put scrapped/damaged goods.'
args: 'Is a Scrap Location?'
usage
Selection
default='internal'
help="* Vendor Location: Virtual location representing the source location for products coming from your vendors\n* View: Virtual location used to create a hierarchical structures for your warehouse, aggregating its child locations ; can't directly contain products\n* Internal Location: Physical locations inside your own warehouses,\n* Customer Location: Virtual location representing the destination location for products sent to your customers\n* Inventory Loss: Virtual location serving as counterpart for inventory operations used to correct stock levels (Physical inventories)\n* Production: Virtual counterpart location for production operations: this location consumes the components and produces finished products\n* Transit Location: Counterpart location that should be used in inter-company or inter-warehouses operations"
index=True
required=True
string='Location Type'
args: [('supplier', 'Vendor Location'), ('view', 'View'), ('internal', 'Internal Location'), ('customer', 'Customer Location'), ('inventory', 'Inventory Loss'), ('production', 'Production'), ('transit', 'Transit Location')]
default_get(self, fields)
get_warehouse(self)
should_bypass_reservation(self)
write(self, values)
active
Boolean
default=True
help='If the active field is set to False, it will allow you to hide the route without removing it.'
args: 'Active'
categ_ids
Many2many → product.category
copy=False
args: 'product.category', 'stock_location_route_categ', 'route_id', 'categ_id', 'Product Categories'
company_id
Many2one → res.company
default=<expr>
help='Leave this field empty if this route is shared between all companies'
index=True
args: 'res.company', 'Company'
name
Char
required=True
translate=True
args: 'Route'
product_categ_selectable
Boolean
help='When checked, the route will be selectable on the Product Category.'
args: 'Applicable on Product Category'
product_ids
Many2many → product.template
check_company=True
copy=False
args: 'product.template', 'stock_route_product', 'route_id', 'product_id', 'Products'
product_selectable
Boolean
default=True
help='When checked, the route will be selectable in the Inventory tab of the Product form.'
args: 'Applicable on Product'
rule_ids
One2many → stock.rule
copy=True
args: 'stock.rule', 'route_id', 'Rules'
sequence
Integer
default=0
args: 'Sequence'
supplied_wh_id
Many2one → stock.warehouse
supplier_wh_id
Many2one → stock.warehouse
warehouse_domain_ids
One2many → stock.warehouse
compute='_compute_warehouses'
args: 'stock.warehouse'
warehouse_ids
Many2many → stock.warehouse
copy=False
domain="[('id', 'in', warehouse_domain_ids)]"
args: 'stock.warehouse', 'stock_route_warehouse', 'route_id', 'warehouse_id', 'Warehouses'
warehouse_selectable
Boolean
help='When a warehouse is selected for this route, this route should be seen as the default route when products pass through this warehouse.'
args: 'Applicable on Warehouse'
toggle_active(self)
additional
Boolean
default=False
args: "Whether the move was added after the picking's confirmation"
availability
Float
compute='_compute_product_availability'
help='Quantity in stock that can still be reserved for this move'
readonly=True
args: 'Forecasted Quantity'
backorder_id
Many2one → stock.picking
index=True
readonly=False
related='picking_id.backorder_id'
args: 'stock.picking', 'Back Order of'
company_id
Many2one → res.company
default=<expr>
index=True
required=True
args: 'res.company', 'Company'
create_date
Datetime
index=True
readonly=True
args: 'Creation Date'
date
Datetime
default=fields.Datetime.now
help='Scheduled date until move is done, then date of actual move processing'
index=True
required=True
args: 'Date Scheduled'
date_deadline
Datetime
help='Date Promise to the customer on the top level document (SO/PO)'
readonly=True
args: 'Deadline'
delay_alert_date
Datetime
compute='_compute_delay_alert_date'
help='Process at this date to be on time'
store=True
args: 'Delay Alert Date'
description_picking
Text
display_assign_serial
Boolean
compute='_compute_display_assign_serial'
forecast_availability
Float
compute='_compute_forecast_information'
compute_sudo=True
digits='Product Unit of Measure'
args: 'Forecast Availability'
forecast_expected_date
Datetime
compute='_compute_forecast_information'
compute_sudo=True
args: 'Forecasted Expected date'
group_id
Many2one → procurement.group
default=_default_group_id
index=True
args: 'procurement.group', 'Procurement Group'
has_move_lines
Boolean
compute='_compute_has_move_lines'
has_tracking
Selection
related='product_id.tracking'
string='Product with Tracking'
inventory_id
Many2one → stock.inventory
check_company=True
args: 'stock.inventory', 'Inventory'
is_initial_demand_editable
Boolean
compute='_compute_is_initial_demand_editable'
args: 'Is initial demand editable'
is_locked
Boolean
compute='_compute_is_locked'
readonly=True
is_quantity_done_editable
Boolean
compute='_compute_is_quantity_done_editable'
args: 'Is quantity done editable'
location_dest_id
Many2one → stock.location
auto_join=True
check_company=True
help='Location where the system will stock the finished products.'
index=True
required=True
args: 'stock.location', 'Destination Location'
location_id
Many2one → stock.location
auto_join=True
check_company=True
help='Sets a location if you produce at a fixed location. This can be a partner location if you subcontract the manufacturing operations.'
index=True
required=True
args: 'stock.location', 'Source Location'
lot_ids
Many2many → stock.production.lot
compute='_compute_lot_ids'
inverse='_set_lot_ids'
readonly=False
string='Serial Numbers'
args: 'stock.production.lot'
move_dest_ids
Many2many → stock.move
copy=False
help='Optional: next stock move when chaining them'
args: 'stock.move', 'stock_move_move_rel', 'move_orig_id', 'move_dest_id', 'Destination Moves'
move_line_ids
One2many → stock.move.line
move_line_nosuggest_ids
One2many → stock.move.line
domain=['|', ('product_qty', '=', 0.0), ('qty_done', '!=', 0.0)]
args: 'stock.move.line', 'move_id'
move_orig_ids
Many2many → stock.move
copy=False
help='Optional: previous stock move when chaining them'
args: 'stock.move', 'stock_move_move_rel', 'move_dest_id', 'move_orig_id', 'Original Move'
name
Char
index=True
required=True
args: 'Description'
next_serial
Char
next_serial_count
Integer
note
Text
orderpoint_id
Many2one → stock.warehouse.orderpoint
check_company=True
index=True
args: 'stock.warehouse.orderpoint', 'Original Reordering Rule'
origin
Char
origin_returned_move_id
Many2one → stock.move
check_company=True
copy=False
help='Move that created the return move'
index=True
args: 'stock.move', 'Origin return move'
package_level_id
Many2one → stock.package_level
check_company=True
copy=False
args: 'stock.package_level', 'Package Level'
partner_id
Many2one → res.partner
help='Optional address where goods are to be delivered, specifically used for allotment'
states={'done': [('readonly', True)]}
args: 'res.partner', 'Destination Address '
picking_code
Selection
readonly=True
related='picking_id.picking_type_id.code'
picking_id
Many2one → stock.picking
check_company=True
index=True
states={'done': [('readonly', True)]}
args: 'stock.picking', 'Transfer'
picking_partner_id
Many2one → res.partner
readonly=False
related='picking_id.partner_id'
args: 'res.partner', 'Transfer Destination Address'
picking_type_entire_packs
Boolean
readonly=True
related='picking_type_id.show_entire_packs'
picking_type_id
Many2one → stock.picking.type
check_company=True
args: 'stock.picking.type', 'Operation Type'
price_unit
Float
copy=False
help="Technical field used to record the product cost set by the user during a picking confirmation (when costing method used is 'average price' or 'real'). Value given in company currency and in product uom."
args: 'Unit Price'
priority
Selection
compute='_compute_priority'
default='0'
index=True
store=True
args: PROCUREMENT_PRIORITIES, 'Priority'
procure_method
Selection
copy=False
default='make_to_stock'
help='By default, the system will take from the stock in the source location and passively wait for availability. The other possibility allows you to directly create a procurement on the source location (and thus ignore its current stock) to gather products. If we want to chain moves and have this one to wait for the previous, this second option should be chosen.'
required=True
string='Supply Method'
args: [('make_to_stock', 'Default: Take From Stock'), ('make_to_order', 'Advanced: Apply Procurement Rules')]
product_id
Many2one → product.product
check_company=True
domain="[('type', 'in', ['product', 'consu']), '|', ('company_id', '=', False), ('company_id', '=', company_id)]"
index=True
required=True
states={'done': [('readonly', True)]}
args: 'product.product', 'Product'
product_qty
Float
compute='_compute_product_qty'
compute_sudo=True
digits=0
help='Quantity in the default UoM of the product'
inverse='_set_product_qty'
store=True
args: 'Real Quantity'
product_tmpl_id
Many2one → product.template
help='Technical: used in views'
readonly=True
related='product_id.product_tmpl_id'
args: 'product.template', 'Product Template'
product_type
Selection
readonly=True
related='product_id.type'
product_uom
Many2one → uom.uom
domain="[('category_id', '=', product_uom_category_id)]"
required=True
args: 'uom.uom', 'Unit of Measure'
product_uom_category_id
Many2one
related='product_id.uom_id.category_id'
product_uom_qty
Float
default=0.0
digits='Product Unit of Measure'
help="This is the quantity of products from an inventory point of view. For moves in the state 'done', this is the quantity of products that were actually moved. For other moves, this is the quantity of product that is planned to be moved. Lowering this quantity does not generate a backorder. Changing this quantity on assigned moves affects the product reservation, and should be done with care."
required=True
states={'done': [('readonly', True)]}
args: 'Demand'
propagate_cancel
Boolean
default=True
help='If checked, when this move is cancelled, cancel the linked move too'
args: 'Propagate cancel and split'
quantity_done
Float
compute='_quantity_done_compute'
digits='Product Unit of Measure'
inverse='_quantity_done_set'
args: 'Quantity Done'
reference
Char
compute='_compute_reference'
store=True
string='Reference'
reserved_availability
Float
compute='_compute_reserved_availability'
digits='Product Unit of Measure'
help='Quantity that has already been reserved for this move'
readonly=True
args: 'Quantity Reserved'
restrict_partner_id
Many2one → res.partner
check_company=True
help="Technical field used to depict a restriction on the ownership of quants to consider when marking this move as 'done'"
args: 'res.partner', 'Owner '
returned_move_ids
One2many → stock.move
help='Optional: all returned moves created from this move'
args: 'stock.move', 'origin_returned_move_id', 'All returned moves'
route_ids
Many2many → stock.location.route
check_company=True
help='Preferred route'
args: 'stock.location.route', 'stock_location_route_move', 'move_id', 'route_id', 'Destination route'
rule_id
Many2one → stock.rule
check_company=True
help='The stock rule that created this stock move'
ondelete='restrict'
args: 'stock.rule', 'Stock Rule'
scrap_ids
One2many → stock.scrap
scrapped
Boolean
readonly=True
related='location_dest_id.scrap_location'
store=True
args: 'Scrapped'
sequence
Integer
default=10
args: 'Sequence'
show_details_visible
Boolean
compute='_compute_show_details_visible'
args: 'Details Visible'
show_operations
Boolean
readonly=False
related='picking_id.picking_type_id.show_operations'
show_reserved_availability
Boolean
compute='_compute_show_reserved_availability'
args: 'From Supplier'
state
Selection
copy=False
default='draft'
help="* New: When the stock move is created and not yet confirmed.\n* Waiting Another Move: This state can be seen when a move is waiting for another one, for example in a chained flow.\n* Waiting Availability: This state is reached when the procurement resolution is not straight forward. It may need the scheduler to run, a component to be manufactured...\n* Available: When products are reserved, it is set to 'Available'.\n* Done: When the shipment is processed, the state is 'Done'."
index=True
readonly=True
string='Status'
args: [('draft', 'New'), ('cancel', 'Cancelled'), ('waiting', 'Waiting Another Move'), ('confirmed', 'Waiting Availability'), ('partially_available', 'Partially Available'), ('assigned', 'Available'), ('done', 'Done')]
warehouse_id
Many2one → stock.warehouse
help='Technical field depicting the warehouse to consider for the route selection on the next procurement (if any).'
args: 'stock.warehouse', 'Warehouse'
action_assign_serial(self)
action_assign_serial_show_details(self)
action_clear_lines_show_details(self)
action_product_forecast_report(self)
action_show_details(self)
default_get(self, fields_list)
init(self)
name_get(self)
onchange_move_line_ids(self)
onchange_product(self)
onchange_product_id(self)
onchange_product_uom(self)
unlink(self)
write(self, vals)
company_id
Many2one → res.company
index=True
readonly=True
required=True
string='Company'
args: 'res.company'
consume_line_ids
Many2many → stock.move.line
help='Technical link to see who consumed what. '
args: 'stock.move.line', 'stock_move_line_consume_rel', 'consume_line_id', 'produce_line_id'
date
Datetime
default=fields.Datetime.now
required=True
args: 'Date'
description_picking
Text
string='Description picking'
is_initial_demand_editable
Boolean
readonly=False
related='move_id.is_initial_demand_editable'
is_locked
Boolean
default=True
readonly=True
related='move_id.is_locked'
location_dest_id
Many2one → stock.location
check_company=True
required=True
args: 'stock.location', 'To'
location_id
Many2one → stock.location
check_company=True
required=True
args: 'stock.location', 'From'
lot_id
Many2one → stock.production.lot
check_company=True
domain="[('product_id', '=', product_id), ('company_id', '=', company_id)]"
args: 'stock.production.lot', 'Lot/Serial Number'
lot_name
Char
lots_visible
Boolean
compute='_compute_lots_visible'
move_id
Many2one → stock.move
check_company=True
help='Change to a better name'
index=True
args: 'stock.move', 'Stock Move'
origin
Char
related='move_id.origin'
string='Source'
owner_id
Many2one → res.partner
check_company=True
help='When validating the transfer, the products will be taken from this owner.'
args: 'res.partner', 'From Owner'
package_id
Many2one → stock.quant.package
check_company=True
domain="[('location_id', '=', location_id)]"
ondelete='restrict'
args: 'stock.quant.package', 'Source Package'
package_level_id
Many2one → stock.package_level
check_company=True
args: 'stock.package_level', 'Package Level'
picking_code
Selection
readonly=True
related='picking_id.picking_type_id.code'
picking_id
Many2one → stock.picking
auto_join=True
check_company=True
help='The stock operation where the packing has been made'
index=True
args: 'stock.picking', 'Transfer'
picking_type_entire_packs
Boolean
readonly=True
related='picking_id.picking_type_id.show_entire_packs'
picking_type_use_create_lots
Boolean
readonly=True
related='picking_id.picking_type_id.use_create_lots'
picking_type_use_existing_lots
Boolean
readonly=True
related='picking_id.picking_type_id.use_existing_lots'
produce_line_ids
Many2many → stock.move.line
help='Technical link to see which line was produced with this. '
args: 'stock.move.line', 'stock_move_line_consume_rel', 'produce_line_id', 'consume_line_id'
product_id
Many2one → product.product
check_company=True
domain="[('type', '!=', 'service'), '|', ('company_id', '=', False), ('company_id', '=', company_id)]"
index=True
ondelete='cascade'
args: 'product.product', 'Product'
product_qty
Float
compute='_compute_product_qty'
copy=False
digits=0
inverse='_set_product_qty'
store=True
args: 'Real Reserved Quantity'
product_uom_category_id
Many2one
related='product_id.uom_id.category_id'
product_uom_id
Many2one → uom.uom
domain="[('category_id', '=', product_uom_category_id)]"
required=True
args: 'uom.uom', 'Unit of Measure'
product_uom_qty
Float
copy=False
default=0.0
digits='Product Unit of Measure'
required=True
args: 'Reserved'
qty_done
Float
copy=False
default=0.0
digits='Product Unit of Measure'
args: 'Done'
reference
Char
readonly=False
related='move_id.reference'
related_sudo=False
store=True
result_package_id
Many2one → stock.quant.package
check_company=True
domain="['|', '|', ('location_id', '=', False), ('location_id', '=', location_dest_id), ('id', '=', package_id)]"
help='If set, the operations are packed into this package'
ondelete='restrict'
required=False
args: 'stock.quant.package', 'Destination Package'
state
Selection
related='move_id.state'
related_sudo=False
store=True
tracking
Selection
readonly=True
related='product_id.tracking'
create(self, vals_list)
init(self)
unlink(self)
write(self, vals)
orderpoint_ids
Many2many → stock.warehouse.orderpoint
predefined_date
Selection
default='day'
string='Snooze for'
args: [('day', '1 Day'), ('week', '1 Week'), ('month', '1 Month'), ('custom', 'Custom')]
snoozed_until
Date
action_snooze(self)
filtered_location
One2many → stock.location
comodel_name='stock.location'
compute='_filter_location'
location_dest_id
Many2one → stock.location
required=True
args: 'stock.location', 'Destination location'
move_line_ids
Many2many → stock.move.line
compute='_compute_move_line_ids'
required=True
args: 'stock.move.line', 'Products'
picking_id
Many2one → stock.picking
required=True
args: 'stock.picking'
action_done(self)
company_id
Many2one → res.company
index=True
required=True
args: 'res.company', 'Company'
is_done
Boolean
compute='_compute_is_done'
inverse='_set_is_done'
args: 'Done'
is_fresh_package
Boolean
compute='_compute_fresh_pack'
location_dest_id
Many2one → stock.location
check_company=True
domain="[('id', 'child_of', parent.location_dest_id), '|', ('company_id', '=', False), ('company_id', '=', company_id)]"
args: 'stock.location', 'To'
location_id
Many2one → stock.location
check_company=True
compute='_compute_location_id'
args: 'stock.location', 'From'
move_ids
One2many → stock.move
move_line_ids
One2many → stock.move.line
package_id
Many2one → stock.quant.package
check_company=True
domain="[('location_id', 'child_of', parent.location_id), '|', ('company_id', '=', False), ('company_id', '=', company_id)]"
required=True
args: 'stock.quant.package', 'Package'
picking_id
Many2one → stock.picking
check_company=True
args: 'stock.picking', 'Picking'
picking_type_code
Selection
related='picking_id.picking_type_code'
show_lots_m2o
Boolean
compute='_compute_show_lot'
show_lots_text
Boolean
compute='_compute_show_lot'
state
Selection
compute='_compute_state'
string='State'
args: [('draft', 'Draft'), ('confirmed', 'Confirmed'), ('assigned', 'Reserved'), ('new', 'New'), ('done', 'Done'), ('cancel', 'Cancelled')]
action_show_package_details(self)
create(self, vals)
unlink(self)
write(self, vals)
backorder_id
Many2one → stock.picking
check_company=True
copy=False
help='If this shipment was split, then this field links to the shipment which contains the already processed part.'
index=True
readonly=True
args: 'stock.picking', 'Back Order of'
backorder_ids
One2many → stock.picking
company_id
Many2one → res.company
index=True
readonly=True
related='picking_type_id.company_id'
store=True
string='Company'
args: 'res.company'
date
Datetime
default=fields.Datetime.now
help='Creation Date, usually the time of the order'
index=True
states={'done': [('readonly', True)], 'cancel': [('readonly', True)]}
tracking=True
args: 'Creation Date'
date_deadline
Datetime
compute='_compute_date_deadline'
help='Date Promise to the customer on the top level document (SO/PO)'
store=True
args: 'Deadline'
date_done
Datetime
copy=False
help='Date at which the transfer has been processed or cancelled.'
readonly=True
args: 'Date of Transfer'
delay_alert_date
Datetime
compute='_compute_delay_alert_date'
search='_search_delay_alert_date'
args: 'Delay Alert Date'
group_id
Many2one → procurement.group
readonly=True
related='move_lines.group_id'
store=True
args: 'procurement.group', 'Procurement Group'
has_deadline_issue
Boolean
compute='_compute_has_deadline_issue'
default=False
help='Is late or will be late depending on the deadline and scheduled date'
store=True
args: 'Is late'
has_packages
Boolean
compute='_compute_has_packages'
help='Check the existence of destination packages on move lines'
args: 'Has Packages'
has_scrap_move
Boolean
compute='_has_scrap_move'
args: 'Has Scrap Moves'
has_tracking
Boolean
compute='_compute_has_tracking'
hide_picking_type
Boolean
compute='_compute_hide_pickign_type'
immediate_transfer
Boolean
default=False
is_locked
Boolean
default=True
help='When the picking is not done this allows changing the initial demand. When the picking is done this allows changing the done quantities.'
json_popover
Char
compute='_compute_json_popover'
args: 'JSON data for the popover widget'
location_dest_id
Many2one → stock.location
check_company=True
default=<expr>
readonly=True
required=True
states={'draft': [('readonly', False)]}
args: 'stock.location', 'Destination Location'
location_id
Many2one → stock.location
check_company=True
default=<expr>
readonly=True
required=True
states={'draft': [('readonly', False)]}
args: 'stock.location', 'Source Location'
move_ids_without_package
One2many → stock.move
compute='_compute_move_without_package'
inverse='_set_move_without_package'
string='Stock moves not in package'
args: 'stock.move', 'picking_id'
move_line_exist
Boolean
compute='_compute_move_line_exist'
help='Check the existence of pack operation on the picking'
args: 'Has Pack Operations'
move_line_ids
One2many → stock.move.line
move_line_ids_without_package
One2many → stock.move.line
domain=['|', ('package_level_id', '=', False), ('picking_type_entire_packs', '=', False)]
args: 'stock.move.line', 'picking_id', 'Operations without package'
move_line_nosuggest_ids
One2many → stock.move.line
domain=[('product_qty', '=', 0.0)]
args: 'stock.move.line', 'picking_id'
move_lines
One2many → stock.move
copy=True
string='Stock Moves'
args: 'stock.move', 'picking_id'
move_type
Selection
default='direct'
help='It specifies goods to be deliver partially or all at once'
required=True
states={'done': [('readonly', True)], 'cancel': [('readonly', True)]}
args: [('direct', 'As soon as possible'), ('one', 'When all products are ready')], 'Shipping Policy'
name
Char
copy=False
default='/'
index=True
readonly=True
args: 'Reference'
note
Text
origin
Char
help='Reference of the document'
index=True
states={'done': [('readonly', True)], 'cancel': [('readonly', True)]}
args: 'Source Document'
owner_id
Many2one → res.partner
check_company=True
help='When validating the transfer, the products will be assigned to this owner.'
states={'done': [('readonly', True)], 'cancel': [('readonly', True)]}
args: 'res.partner', 'Assign Owner'
package_level_ids
One2many → stock.package_level
package_level_ids_details
One2many → stock.package_level
partner_id
Many2one → res.partner
check_company=True
states={'done': [('readonly', True)], 'cancel': [('readonly', True)]}
args: 'res.partner', 'Contact'
picking_type_code
Selection
readonly=True
related='picking_type_id.code'
picking_type_entire_packs
Boolean
readonly=True
related='picking_type_id.show_entire_packs'
picking_type_id
Many2one → stock.picking.type
readonly=True
required=True
states={'draft': [('readonly', False)]}
args: 'stock.picking.type', 'Operation Type'
printed
Boolean
copy=False
args: 'Printed'
priority
Selection
default='0'
help='Products will be reserved first for the transfers with the highest priorities.'
index=True
string='Priority'
args: PROCUREMENT_PRIORITIES
product_id
Many2one → product.product
readonly=True
related='move_lines.product_id'
args: 'product.product', 'Product'
products_availability
Char
compute='_compute_products_availability'
string='Product Availability'
products_availability_state
Selection
compute='_compute_products_availability'
args: [('available', 'Available'), ('expected', 'Expected'), ('late', 'Late')]
scheduled_date
Datetime
compute='_compute_scheduled_date'
default=fields.Datetime.now
help='Scheduled time for the first part of the shipment to be processed. Setting manually a value here would set it as expected date for all the stock moves.'
index=True
inverse='_set_scheduled_date'
states={'done': [('readonly', True)], 'cancel': [('readonly', True)]}
store=True
tracking=True
args: 'Scheduled Date'
show_check_availability
Boolean
compute='_compute_show_check_availability'
help='Technical field used to compute whether the button "Check Availability" should be displayed.'
show_lots_text
Boolean
compute='_compute_show_lots_text'
show_mark_as_todo
Boolean
compute='_compute_show_mark_as_todo'
help='Technical field used to compute whether the button "Mark as Todo" should be displayed.'
show_operations
Boolean
compute='_compute_show_operations'
show_reserved
Boolean
related='picking_type_id.show_reserved'
show_validate
Boolean
compute='_compute_show_validate'
help='Technical field used to decide whether the button "Validate" should be displayed.'
signature
Image
attachment=True
copy=False
help='Signature'
args: 'Signature'
state
Selection
compute='_compute_state'
copy=False
help=' * Draft: The transfer is not confirmed yet. Reservation doesn\'t apply.\n * Waiting another operation: This transfer is waiting for another operation before being ready.\n * Waiting: The transfer is waiting for the availability of some products.\n(a) The shipping policy is "As soon as possible": no product could be reserved.\n(b) The shipping policy is "When all products are ready": not all the products could be reserved.\n * Ready: The transfer is ready to be processed.\n(a) The shipping policy is "As soon as possible": at least one product has been reserved.\n(b) The shipping policy is "When all products are ready": all product have been reserved.\n * Done: The transfer has been processed.\n * Cancelled: The transfer has been cancelled.'
index=True
readonly=True
store=True
string='Status'
tracking=True
args: [('draft', 'Draft'), ('waiting', 'Waiting Another Operation'), ('confirmed', 'Waiting'), ('assigned', 'Ready'), ('done', 'Done'), ('cancel', 'Cancelled')]
use_create_lots
Boolean
related='picking_type_id.use_create_lots'
user_id
Many2one → res.users
default=<expr>
domain=<expr>
states={'done': [('readonly', True)], 'cancel': [('readonly', True)]}
tracking=True
args: 'res.users', 'Responsible'
action_assign(self)
action_assign_partner(self)
action_cancel(self)
action_confirm(self)
action_picking_move_tree(self)
action_put_in_pack(self)
action_see_move_scrap(self)
action_see_packages(self)
action_toggle_is_locked(self)
button_scrap(self)
button_validate(self)
create(self, vals)
do_print_picking(self)
do_unreserve(self)
onchange_partner_id(self)
onchange_picking_type(self)
unlink(self)
write(self, vals)
active
Boolean
default=True
args: 'Active'
barcode
Char
copy=False
args: 'Barcode'
code
Selection
required=True
args: [('incoming', 'Receipt'), ('outgoing', 'Delivery'), ('internal', 'Internal Transfer')], 'Type of Operation'
color
Integer
company_id
Many2one → res.company
default=<expr>
index=True
required=True
args: 'res.company', 'Company'
count_picking
Integer
compute='_compute_picking_count'
count_picking_backorders
Integer
compute='_compute_picking_count'
count_picking_draft
Integer
compute='_compute_picking_count'
count_picking_late
Integer
compute='_compute_picking_count'
count_picking_ready
Integer
compute='_compute_picking_count'
count_picking_waiting
Integer
compute='_compute_picking_count'
default_location_dest_id
Many2one → stock.location
check_company=True
help='This is the default destination location when you create a picking manually with this operation type. It is possible however to change it or that the routes put another location. If it is empty, it will check for the customer location on the partner. '
args: 'stock.location', 'Default Destination Location'
default_location_src_id
Many2one → stock.location
check_company=True
help='This is the default source location when you create a picking manually with this operation type. It is possible however to change it or that the routes put another location. If it is empty, it will check for the supplier location on the partner. '
args: 'stock.location', 'Default Source Location'
name
Char
required=True
translate=True
args: 'Operation Type'
rate_picking_backorders
Integer
compute='_compute_picking_count'
rate_picking_late
Integer
compute='_compute_picking_count'
return_picking_type_id
Many2one → stock.picking.type
check_company=True
args: 'stock.picking.type', 'Operation Type for Returns'
sequence
Integer
help="Used to order the 'All Operations' kanban view"
args: 'Sequence'
sequence_code
Char
required=True
args: 'Code'
sequence_id
Many2one → ir.sequence
check_company=True
copy=False
args: 'ir.sequence', 'Reference Sequence'
show_entire_packs
Boolean
help='If ticked, you will be able to select entire packages to move'
args: 'Move Entire Packages'
show_operations
Boolean
default=_default_show_operations
help='If this checkbox is ticked, the pickings lines will represent detailed stock operations. If not, the picking lines will represent an aggregate of detailed stock operations.'
args: 'Show Detailed Operations'
show_reserved
Boolean
default=True
help='If this checkbox is ticked, Odoo will automatically pre-fill the detailed operations with the corresponding products, locations and lot/serial numbers.'
args: 'Pre-fill Detailed Operations'
use_create_lots
Boolean
default=True
help='If this is checked only, it will suppose you want to create new Lots/Serial Numbers, so you can provide them in a text field. '
args: 'Create New Lots/Serial Numbers'
use_existing_lots
Boolean
default=True
help='If this is checked, you will be able to choose the Lots/Serial Numbers. You can also decide to not put lots in this operation type. This means it will create stock with no lot or not put a restriction on the lot taken. '
args: 'Use Existing Lots/Serial Numbers'
warehouse_id
Many2one → stock.warehouse
check_company=True
ondelete='cascade'
args: 'stock.warehouse', 'Warehouse'
create(self, vals)
get_action_picking_tree_backorder(self)
get_action_picking_tree_late(self)
get_action_picking_tree_ready(self)
get_action_picking_tree_waiting(self)
get_stock_picking_action_picking_type(self)
name_get(self)
write(self, vals)
company_id
Many2one → res.company
default=<expr>
index=True
required=True
store=True
args: 'res.company', 'Company'
display_complete
Boolean
compute='_compute_display_complete'
name
Char
default=<expr>
help='Unique Lot/Serial Number'
required=True
args: 'Lot/Serial Number'
note
Html
string='Description'
product_id
Many2one → product.product
check_company=True
domain=<expr>
required=True
args: 'product.product', 'Product'
product_qty
Float
compute='_product_qty'
args: 'Quantity'
product_uom_id
Many2one → uom.uom
readonly=False
related='product_id.uom_id'
store=True
args: 'uom.uom', 'Unit of Measure'
quant_ids
One2many → stock.quant
readonly=True
args: 'stock.quant', 'lot_id', 'Quants'
ref
Char
help="Internal reference number in case it differs from the manufacturer's lot/serial number"
args: 'Internal Reference'
action_lot_open_quants(self)
create(self, vals_list)
write(self, vals)
category_id
Many2one → product.category
default=_default_category_id
domain=_domain_category_id
ondelete='cascade'
args: 'product.category', 'Product Category'
company_id
Many2one → res.company
default=<expr>
index=True
required=True
args: 'res.company', 'Company'
location_in_id
Many2one → stock.location
check_company=True
default=_default_location_id
domain="[('child_ids', '!=', False), '|', ('company_id', '=', False), ('company_id', '=', company_id)]"
ondelete='cascade'
required=True
args: 'stock.location', 'When product arrives in'
location_out_id
Many2one → stock.location
check_company=True
domain="[('id', 'child_of', location_in_id), ('id', '!=', location_in_id), '|', ('company_id', '=', False), ('company_id', '=', company_id)]"
ondelete='cascade'
required=True
args: 'stock.location', 'Store to'
product_id
Many2one → product.product
check_company=True
default=_default_product_id
domain=_domain_product_id
ondelete='cascade'
args: 'product.product', 'Product'
sequence
Integer
help='Give to the more specialized category, a higher priority to have them in top of the list.'
args: 'Priority'
write(self, vals)
available_quantity
Float
compute='_compute_available_quantity'
help="On hand quantity which hasn't been reserved on a transfer, in the default unit of measure of the product"
args: 'Available Quantity'
company_id
Many2one
readonly=True
related='location_id.company_id'
store=True
string='Company'
in_date
Datetime
readonly=True
args: 'Incoming Date'
inventory_quantity
Float
compute='_compute_inventory_quantity'
groups='stock.group_stock_manager'
inverse='_set_inventory_quantity'
args: 'Inventoried Quantity'
location_id
Many2one → stock.location
auto_join=True
check_company=True
domain=<expr>
index=True
ondelete='restrict'
readonly=True
required=True
args: 'stock.location', 'Location'
lot_id
Many2one → stock.production.lot
check_company=True
domain=<expr>
index=True
ondelete='restrict'
readonly=True
args: 'stock.production.lot', 'Lot/Serial Number'
on_hand
Boolean
search='_search_on_hand'
store=False
args: 'On Hand'
owner_id
Many2one → res.partner
check_company=True
help='This is the owner of the quant'
readonly=True
args: 'res.partner', 'Owner'
package_id
Many2one → stock.quant.package
check_company=True
domain="[('location_id', '=', location_id)]"
help='The package containing this quant'
ondelete='restrict'
readonly=True
args: 'stock.quant.package', 'Package'
product_id
Many2one → product.product
check_company=True
domain=<expr>
index=True
ondelete='restrict'
readonly=True
required=True
args: 'product.product', 'Product'
product_tmpl_id
Many2one → product.template
readonly=True
related='product_id.product_tmpl_id'
string='Product Template'
args: 'product.template'
product_uom_id
Many2one → uom.uom
readonly=True
related='product_id.uom_id'
args: 'uom.uom', 'Unit of Measure'
quantity
Float
help='Quantity of products in this quant, in the default unit of measure of the product'
readonly=True
args: 'Quantity'
reserved_quantity
Float
default=0.0
help='Quantity of reserved products in this quant, in the default unit of measure of the product'
readonly=True
required=True
args: 'Reserved Quantity'
tracking
Selection
readonly=True
related='product_id.tracking'
action_view_quants(self)
action_view_stock_moves(self)
check_location_id(self)
check_product_id(self)
check_quantity(self)
create(self, vals)
read_group(self, domain, fields, groupby, offset=0, limit=None, orderby=False, lazy=True)
unlink(self)
write(self, vals)
company_id
Many2one → res.company
compute='_compute_package_info'
index=True
readonly=True
store=True
args: 'res.company', 'Company'
location_id
Many2one → stock.location
compute='_compute_package_info'
index=True
readonly=True
store=True
args: 'stock.location', 'Location'
name
Char
copy=False
default=<expr>
index=True
args: 'Package Reference'
owner_id
Many2one → res.partner
compute='_compute_package_info'
compute_sudo=True
index=True
readonly=True
search='_search_owner'
args: 'res.partner', 'Owner'
packaging_id
Many2one → product.packaging
check_company=True
index=True
args: 'product.packaging', 'Package Type'
quant_ids
One2many → stock.quant
domain=['|', ('quantity', '!=', 0), ('reserved_quantity', '!=', 0)]
readonly=True
args: 'stock.quant', 'package_id', 'Bulk Content'
action_view_picking(self)
name_get(self)
unpack(self)
inventory_datetime
Datetime
default=fields.Datetime.now
help='Choose a date to get the inventory at that date'
args: 'Inventory at Date'
open_at_date(self)
company_id
Many2one
related='picking_id.company_id'
location_id
Many2one → stock.location
domain="['|', ('id', '=', original_location_id), '|', '&', ('return_location', '=', True), ('company_id', '=', False), '&', ('return_location', '=', True), ('company_id', '=', company_id)]"
args: 'stock.location', 'Return Location'
move_dest_exists
Boolean
readonly=True
args: 'Chained Move Exists'
original_location_id
Many2one → stock.location
parent_location_id
Many2one → stock.location
picking_id
Many2one → stock.picking
product_return_moves
One2many → stock.return.picking.line
create_returns(self)
default_get(self, fields)
move_id
Many2one → stock.move
product_id
Many2one → product.product
domain="[('id', '=', product_id)]"
required=True
string='Product'
args: 'product.product'
quantity
Float
digits='Product Unit of Measure'
required=True
args: 'Quantity'
uom_id
Many2one → uom.uom
related='product_id.uom_id'
string='Unit of Measure'
args: 'uom.uom'
wizard_id
Many2one → stock.return.picking
string='Wizard'
args: 'stock.return.picking'
No public methods.
action
Selection
index=True
required=True
selection=[('pull', 'Pull From'), ('push', 'Push To'), ('pull_push', 'Pull & Push')]
string='Action'
active
Boolean
default=True
help='If unchecked, it will allow you to hide the rule without removing it.'
args: 'Active'
auto
Selection
default='manual'
help="The 'Manual Operation' value will create a stock move after the current one. With 'Automatic No Step Added', the location is replaced in the original move."
index=True
required=True
string='Automatic Move'
args: [('manual', 'Manual Operation'), ('transparent', 'Automatic No Step Added')]
company_id
Many2one → res.company
default=<expr>
domain="[('id', '=?', route_company_id)]"
index=True
args: 'res.company', 'Company'
delay
Integer
default=0
help='The expected date of the created transfer will be computed based on this lead time.'
args: 'Lead Time'
group_id
Many2one → procurement.group
group_propagation_option
Selection
default='propagate'
string='Propagation of Procurement Group'
args: [('none', 'Leave Empty'), ('propagate', 'Propagate'), ('fixed', 'Fixed')]
location_id
Many2one → stock.location
check_company=True
index=True
required=True
args: 'stock.location', 'Destination Location'
location_src_id
Many2one → stock.location
check_company=True
args: 'stock.location', 'Source Location'
name
Char
help='This field will fill the packing origin and the name of its moves'
required=True
translate=True
args: 'Name'
partner_address_id
Many2one → res.partner
check_company=True
help='Address where goods should be delivered. Optional.'
args: 'res.partner', 'Partner Address'
picking_type_code_domain
Char
compute='_compute_picking_type_code_domain'
picking_type_id
Many2one → stock.picking.type
check_company=True
domain="[('code', '=?', picking_type_code_domain)]"
required=True
args: 'stock.picking.type', 'Operation Type'
procure_method
Selection
default='make_to_stock'
help='Take From Stock: the products will be taken from the available stock of the source location.\nTrigger Another Rule: the system will try to find a stock rule to bring the products in the source location. The available stock will be ignored.\nTake From Stock, if Unavailable, Trigger Another Rule: the products will be taken from the available stock of the source location.If there is no stock available, the system will try to find a rule to bring the products in the source location.'
required=True
string='Supply Method'
args: [('make_to_stock', 'Take From Stock'), ('make_to_order', 'Trigger Another Rule'), ('mts_else_mto', 'Take From Stock, if unavailable, Trigger Another Rule')]
propagate_cancel
Boolean
default=False
help='When ticked, if the move created by this rule is cancelled, the next move will be cancelled too.'
args: 'Cancel Next Move'
propagate_warehouse_id
Many2one → stock.warehouse
help='The warehouse to propagate on the created move/procurement, which can be different of the warehouse this rule is for (e.g for resupplying rules from another warehouse)'
args: 'stock.warehouse', 'Warehouse to Propagate'
route_company_id
Many2one
related='route_id.company_id'
string='Route Company'
route_id
Many2one → stock.location.route
index=True
ondelete='cascade'
required=True
args: 'stock.location.route', 'Route'
route_sequence
Integer
compute_sudo=True
readonly=False
related='route_id.sequence'
store=True
args: 'Route Sequence'
rule_message
Html
compute='_compute_action_message'
sequence
Integer
default=20
args: 'Sequence'
warehouse_id
Many2one → stock.warehouse
check_company=True
index=True
args: 'stock.warehouse', 'Warehouse'
default_get(self, fields_list)
product_has_variants
Boolean
default=False
required=True
args: 'Has variants'
product_id
Many2one → product.product
required=True
string='Product'
args: 'product.product'
product_tmpl_id
Many2one → product.template
required=True
string='Product Template'
args: 'product.template'
warehouse_ids
Many2many → stock.warehouse
help='Show the routes that apply on selected warehouses.'
required=True
string='Warehouses'
args: 'stock.warehouse'
default_get(self, fields)
print_report(self)
No new fields.
Public methods (1)procure_calculation(self)
company_id
Many2one → res.company
default=<expr>
required=True
states={'done': [('readonly', True)]}
string='Company'
args: 'res.company'
date_done
Datetime
readonly=True
args: 'Date'
location_id
Many2one → stock.location
check_company=True
default=_get_default_location_id
domain="[('usage', '=', 'internal'), ('company_id', 'in', [company_id, False])]"
required=True
states={'done': [('readonly', True)]}
args: 'stock.location', 'Source Location'
lot_id
Many2one → stock.production.lot
check_company=True
domain="[('product_id', '=', product_id), ('company_id', '=', company_id)]"
states={'done': [('readonly', True)]}
args: 'stock.production.lot', 'Lot/Serial'
move_id
Many2one → stock.move
check_company=True
copy=False
readonly=True
args: 'stock.move', 'Scrap Move'
name
Char
copy=False
default=<expr>
readonly=True
required=True
states={'done': [('readonly', True)]}
args: 'Reference'
origin
Char
string='Source Document'
owner_id
Many2one → res.partner
check_company=True
states={'done': [('readonly', True)]}
args: 'res.partner', 'Owner'
package_id
Many2one → stock.quant.package
check_company=True
states={'done': [('readonly', True)]}
args: 'stock.quant.package', 'Package'
picking_id
Many2one → stock.picking
check_company=True
states={'done': [('readonly', True)]}
args: 'stock.picking', 'Picking'
product_id
Many2one → product.product
check_company=True
domain="[('type', 'in', ['product', 'consu']), '|', ('company_id', '=', False), ('company_id', '=', company_id)]"
required=True
states={'done': [('readonly', True)]}
args: 'product.product', 'Product'
product_uom_category_id
Many2one
related='product_id.uom_id.category_id'
product_uom_id
Many2one → uom.uom
domain="[('category_id', '=', product_uom_category_id)]"
required=True
states={'done': [('readonly', True)]}
args: 'uom.uom', 'Unit of Measure'
scrap_location_id
Many2one → stock.location
check_company=True
default=_get_default_scrap_location_id
domain="[('scrap_location', '=', True), ('company_id', 'in', [company_id, False])]"
required=True
states={'done': [('readonly', True)]}
args: 'stock.location', 'Scrap Location'
scrap_qty
Float
default=1.0
digits='Product Unit of Measure'
required=True
states={'done': [('readonly', True)]}
args: 'Quantity'
state
Selection
default='draft'
readonly=True
string='Status'
tracking=True
args: [('draft', 'Draft'), ('done', 'Done')]
tracking
Selection
readonly=True
related='product_id.tracking'
string='Product Tracking'
action_get_stock_move_lines(self)
action_get_stock_picking(self)
action_validate(self)
do_scrap(self)
unlink(self)
No new fields.
Public methods (4)get_html(self, given_context=None)
get_lines(self, line_id=None, **kw)
get_pdf(self, line_data=[])
get_pdf_lines(self, line_data=[])
inventory_id
Many2one → stock.inventory
tracking_line_ids
One2many → stock.track.line
action_confirm(self)
product_id
Many2one → product.product
readonly=True
args: 'product.product', 'Product'
tracking
Selection
readonly=True
args: [('lot', 'Tracked by lot'), ('serial', 'Tracked by serial number')]
wizard_id
Many2one → stock.track.confirmation
readonly=True
args: 'stock.track.confirmation'
No public methods.
active
Boolean
default=True
args: 'Active'
code
Char
help='Short name used to identify your warehouse'
required=True
size=5
args: 'Short Name'
company_id
Many2one → res.company
default=<expr>
help='The company is automatically set from your user preferences.'
index=True
readonly=True
required=True
args: 'res.company', 'Company'
crossdock_route_id
Many2one → stock.location.route
ondelete='restrict'
args: 'stock.location.route', 'Crossdock Route'
delivery_route_id
Many2one → stock.location.route
ondelete='restrict'
args: 'stock.location.route', 'Delivery Route'
delivery_steps
Selection
default='ship_only'
help='Default outgoing route to follow'
required=True
args: [('ship_only', 'Deliver goods directly (1 step)'), ('pick_ship', 'Send goods in output and then deliver (2 steps)'), ('pick_pack_ship', 'Pack goods, send goods in output and then deliver (3 steps)')], 'Outgoing Shipments'
in_type_id
Many2one → stock.picking.type
check_company=True
args: 'stock.picking.type', 'In Type'
int_type_id
Many2one → stock.picking.type
check_company=True
args: 'stock.picking.type', 'Internal Type'
lot_stock_id
Many2one → stock.location
check_company=True
domain="[('usage', '=', 'internal'), ('company_id', '=', company_id)]"
required=True
args: 'stock.location', 'Location Stock'
mto_pull_id
Many2one → stock.rule
name
Char
default=<expr>
index=True
required=True
args: 'Warehouse'
out_type_id
Many2one → stock.picking.type
check_company=True
args: 'stock.picking.type', 'Out Type'
pack_type_id
Many2one → stock.picking.type
check_company=True
args: 'stock.picking.type', 'Pack Type'
partner_id
Many2one → res.partner
check_company=True
default=<expr>
args: 'res.partner', 'Address'
pick_type_id
Many2one → stock.picking.type
check_company=True
args: 'stock.picking.type', 'Pick Type'
reception_route_id
Many2one → stock.location.route
ondelete='restrict'
args: 'stock.location.route', 'Receipt Route'
reception_steps
Selection
default='one_step'
help='Default incoming route to follow'
required=True
args: [('one_step', 'Receive goods directly (1 step)'), ('two_steps', 'Receive goods in input and then stock (2 steps)'), ('three_steps', 'Receive goods in input, then quality and then stock (3 steps)')], 'Incoming Shipments'
resupply_route_ids
One2many → stock.location.route
help='Routes will be created for these resupply warehouses and you can select them on products and product categories'
args: 'stock.location.route', 'supplied_wh_id', 'Resupply Routes'
resupply_wh_ids
Many2many → stock.warehouse
help='Routes will be created automatically to resupply this warehouse from the warehouses ticked'
args: 'stock.warehouse', 'stock_wh_resupply_table', 'supplied_wh_id', 'supplier_wh_id', 'Resupply From'
route_ids
Many2many → stock.location.route
check_company=True
domain="[('warehouse_selectable', '=', True), '|', ('company_id', '=', False), ('company_id', '=', company_id)]"
help='Defaults routes through the warehouse'
args: 'stock.location.route', 'stock_route_warehouse', 'warehouse_id', 'route_id', 'Routes'
sequence
Integer
default=10
help='Gives the sequence of this line when displaying the warehouses.'
show_resupply
Boolean
compute='_compute_show_resupply'
view_location_id
Many2one → stock.location
check_company=True
domain="[('usage', '=', 'view'), ('company_id', '=', company_id)]"
required=True
args: 'stock.location', 'View Location'
warehouse_count
Integer
compute='_compute_warehouse_count'
wh_input_stock_loc_id
Many2one → stock.location
check_company=True
args: 'stock.location', 'Input Location'
wh_output_stock_loc_id
Many2one → stock.location
check_company=True
args: 'stock.location', 'Output Location'
wh_pack_stock_loc_id
Many2one → stock.location
check_company=True
args: 'stock.location', 'Packing Location'
wh_qc_stock_loc_id
Many2one → stock.location
check_company=True
args: 'stock.location', 'Quality Control Location'
action_view_all_routes(self)
create(self, vals)
create_resupply_routes(self, supplier_warehouses)
get_rules_dict(self)
unlink(self)
write(self, vals)
active
Boolean
default=True
help='If the active field is set to False, it will allow you to hide the orderpoint without removing it.'
args: 'Active'
allowed_location_ids
One2many → stock.location
comodel_name='stock.location'
compute='_compute_allowed_location_ids'
allowed_route_ids
Many2many → stock.location.route
compute='_compute_allowed_route_ids'
args: 'stock.location.route'
company_id
Many2one → res.company
default=<expr>
index=True
required=True
args: 'res.company', 'Company'
group_id
Many2one → procurement.group
copy=False
help='Moves created through this orderpoint will be put in this procurement group. If none is given, the moves generated by stock rules will be grouped into one big picking.'
args: 'procurement.group', 'Procurement Group'
json_lead_days_popover
Char
compute='_compute_json_popover'
lead_days_date
Date
compute='_compute_lead_days'
location_id
Many2one → stock.location
check_company=True
index=True
ondelete='cascade'
required=True
args: 'stock.location', 'Location'
name
Char
copy=False
default=<expr>
readonly=True
required=True
args: 'Name'
product_category_id
Many2one → product.category
name='Product Category'
related='product_id.categ_id'
store=True
args: 'product.category'
product_id
Many2one → product.product
check_company=True
domain=<expr>
index=True
ondelete='cascade'
required=True
args: 'product.product', 'Product'
product_max_qty
Float
default=0.0
digits='Product Unit of Measure'
help='When the virtual stock goes below the Min Quantity, Odoo generates a procurement to bring the forecasted quantity to the Quantity specified as Max Quantity.'
required=True
args: 'Max Quantity'
product_min_qty
Float
default=0.0
digits='Product Unit of Measure'
help='When the virtual stock equals to or goes below the Min Quantity specified for this field, Odoo generates a procurement to bring the forecasted quantity to the Max Quantity.'
required=True
args: 'Min Quantity'
product_tmpl_id
Many2one → product.template
related='product_id.product_tmpl_id'
args: 'product.template'
product_uom
Many2one → uom.uom
related='product_id.uom_id'
args: 'uom.uom', 'Unit of Measure'
product_uom_name
Char
readonly=True
related='product_uom.display_name'
string='Product unit of measure label'
qty_forecast
Float
compute='_compute_qty'
readonly=True
args: 'Forecast'
qty_multiple
Float
default=1
digits='Product Unit of Measure'
help='The procurement quantity will be rounded up to this multiple. If it is 0, the exact quantity will be used.'
required=True
args: 'Multiple Quantity'
qty_on_hand
Float
compute='_compute_qty'
readonly=True
args: 'On Hand'
qty_to_order
Float
compute='_compute_qty_to_order'
readonly=False
store=True
args: 'To Order'
route_id
Many2one → stock.location.route
domain="[('id', 'in', allowed_route_ids)]"
string='Preferred Route'
args: 'stock.location.route'
rule_ids
Many2many → stock.rule
compute='_compute_rules'
string='Rules used'
args: 'stock.rule'
snoozed_until
Date
help='Hidden until next scheduler.'
args: 'Snoozed'
trigger
Selection
default='auto'
required=True
string='Trigger'
args: [('auto', 'Auto'), ('manual', 'Manual')]
warehouse_id
Many2one → stock.warehouse
check_company=True
ondelete='cascade'
required=True
args: 'stock.warehouse', 'Warehouse'
action_open_orderpoints(self)
action_replenish(self)
action_replenish_auto(self)
default_get(self, fields)
write(self, vals)
location_id
Many2one → stock.location
domain="[('usage', '=', 'internal')]"
required=True
args: 'stock.location', 'Location'
product_id
Many2one → product.product
required=True
args: 'product.product', 'Product'
product_uom_name
Char
required=True
args: 'Unit of Measure'
quant_ids
Many2many → stock.quant
compute='_compute_quant_ids'
args: 'stock.quant'
quantity
Float
required=True
string='Quantity'
action_done(self)
scrap_id
Many2one → stock.scrap
action_cancel(self)
action_done(self)
No new fields.
Public methods (1)write(self, values)
| XML ID | Name | Model | Type | Status |
|---|---|---|---|---|
assets_common |
report_stock_rule assets | ir.ui.view | qweb | Inherits web.report_assets_common |
assets_common |
stock_location_barcodes pdf assets | ir.ui.view | qweb | Inherits web.report_assets_common |
assets_stock_print_report |
assets_stock_print_report | ir.ui.view | qweb | Inherits web.assets_common |
exception_on_picking |
exception_on_picking | ir.ui.view | qweb | New |
label_barcode_product_product_view |
label_barcode_product_product_view | ir.ui.view | qweb | New |
label_barcode_product_template_view |
label_barcode_product_template_view | ir.ui.view | qweb | New |
label_lot_template_view |
label_lot_template_view | ir.ui.view | qweb | New |
label_package_template_view |
label_package_template_view | ir.ui.view | qweb | New |
label_picking_type_view |
label_picking_type_view | ir.ui.view | qweb | New |
label_product_packaging_view |
label_product_packaging_view | ir.ui.view | qweb | New |
label_product_product_view |
label_product_product_view | ir.ui.view | qweb | New |
label_product_template_view |
label_product_template_view | ir.ui.view | qweb | New |
label_transfer_template_view_pdf |
label_transfer_template_view_pdf | ir.ui.view | qweb | New |
label_transfer_template_view_zpl |
label_transfer_template_view_zpl | ir.ui.view | qweb | New |
message_body |
message_body | ir.ui.view | qweb | New |
message_head |
message_head | ir.ui.view | qweb | New |
package_level_form_view |
Package Level | stock.package_level | form | New |
package_level_tree_view_picking |
Package Level Tree Picking | stock.package_level | tree | New |
procurement_group_form_view |
procurement.group.form | procurement.group | form | New |
product_category_form_view_inherit |
product.category.form | product.category | div | Inherits product.product_category_form_view |
product_form_view_procurement_button |
product.product.procurement | product.product | data | Inherits product.product_normal_form_view |
product_product_view_form_easy_inherit_stock |
product.product.view.form.easy.inherit.stock | product.product | sheet | Inherits product.product_variant_easy_edit_view |
product_search_form_view_stock |
product.search.stock.form | product.product | field | Inherits product.product_search_form_view |
product_template_form_view_procurement_button |
product.template_procurement | product.template | data | Inherits product.product_template_only_form_view |
product_template_kanban_stock_view |
Product Template Kanban Stock | product.template | xpath | Inherits product.product_template_kanban_view |
product_template_search_form_view_stock |
product.template.search.stock.form | product.template | xpath | Inherits product.product_template_search_view |
quant_package_search_view |
stock.quant.package.search | stock.quant.package | search | New |
quant_search_view |
stock.quant.search | stock.quant | search | New |
qunit_suite |
stock tests | ir.ui.view | qweb | Inherits web.qunit_suite |
report_delivery_document |
report_delivery_document | ir.ui.view | qweb | New |
report_deliveryslip |
report_deliveryslip | ir.ui.view | qweb | New |
report_inventory |
report_inventory | ir.ui.view | qweb | New |
report_location_barcode |
report_location_barcode | ir.ui.view | qweb | New |
report_lot_label |
report_lot_label | ir.ui.view | qweb | New |
report_mrp_line |
report_mrp_line | ir.ui.view | qweb | New |
report_package_barcode |
report_package_barcode | ir.ui.view | qweb | New |
report_package_barcode_small |
report_package_barcode_small | ir.ui.view | qweb | New |
report_picking |
report_picking | ir.ui.view | qweb | New |
report_picking_type_label |
report_picking_type_label | ir.ui.view | qweb | New |
report_stock_body_print |
report_stock_body_print | ir.ui.view | qweb | New |
report_stock_inventory |
report_stock_inventory | ir.ui.view | qweb | New |
report_stock_inventory_print |
report_stock_inventory_print | ir.ui.view | qweb | New |
report_stock_rule |
report_stock_rule | ir.ui.view | qweb | New |
report_stock_rule_left_arrow |
report_stock_rule_left_arrow | ir.ui.view | qweb | New |
report_stock_rule_line |
report_stock_rule_line | ir.ui.view | qweb | New |
report_stock_rule_right_arrow |
report_stock_rule_right_arrow | ir.ui.view | qweb | New |
report_stock_rule_suspension_points |
report_stock_rule_suspension_points | ir.ui.view | qweb | New |
report_stock_rule_vertical_bar |
report_stock_rule_vertical_bar | ir.ui.view | qweb | New |
res_config_settings_view_form |
res.config.settings.view.form.inherit.stock | res.config.settings | xpath | Inherits base.res_config_settings_view_form |
search_product_lot_filter |
Production Lots Filter | stock.production.lot | search | New |
stock_assets_backend |
mrp_workorder assets | ir.ui.view | qweb | Inherits web.assets_backend |
stock_inventory_line_search |
stock.inventory.line.search | stock.inventory.line | search | New |
stock_inventory_line_tree |
stock.inventory.line.tree | stock.inventory.line | tree | New |
stock_inventory_line_tree2 |
stock.inventory.line.tree2 | stock.inventory.line | tree | New |
stock_location_route_form_view |
stock.location.route.form | stock.location.route | form | New |
stock_location_route_tree |
stock.location.route.tree | stock.location.route | tree | New |
stock_location_route_view_search |
stock.location.route.search | stock.location.route | search | New |
stock_location_view_form_editable |
stock.location.form.editable | stock.location | xpath | Inherits stock.view_location_form |
stock_location_view_tree2_editable |
stock.location.tree2.editable | stock.location | xpath | Inherits stock.view_location_tree2 |
stock_move_line_view_search |
stock.move.line.search | stock.move.line | search | New |
stock_move_tree |
Stock Moves | stock.move | tree | New |
stock_move_view_kanban |
stock.move.kanban2 | stock.move | kanban | New |
stock_package_destination_form_view |
stock.package.destination.view | stock.package.destination | form | New |
stock_picking_calendar |
stock.picking.calendar | stock.picking | calendar | New |
stock_picking_kanban |
stock.picking.kanban | stock.picking | kanban | New |
stock_picking_type_kanban |
stock.picking.type.kanban | stock.picking.type | kanban | New |
stock_product_search_form_view |
product.product.search.stock.form | product.product | xpath | Inherits product.product_search_form_view |
stock_putaway_list |
stock.putaway.rule.tree | stock.putaway.rule | tree | New |
stock_quant_view_graph |
stock.quant.graph | stock.quant | graph | New |
stock_report_view_graph |
stock_report_view_graph | report.stock.quantity | graph | New |
stock_report_view_search |
report.stock.quantity.search | report.stock.quantity | search | New |
stock_scrap_form_view |
stock.scrap.form | stock.scrap | form | New |
stock_scrap_form_view2 |
stock.scrap.form2 | stock.scrap | form | New |
stock_scrap_search_view |
stock.scrap.search | stock.scrap | search | New |
stock_scrap_tree_view |
stock.scrap.tree | stock.scrap | tree | New |
stock_scrap_view_kanban |
stock.scrap.kanban | stock.scrap | kanban | New |
stock_warehouse_view_form_editable |
stock.warehouse.form.editable | stock.warehouse | xpath | Inherits stock.view_warehouse |
stock_warehouse_view_search |
stock.warehouse.search | stock.warehouse | search | New |
stock_warehouse_view_tree_editable |
stock.warehouse.tree.editable | stock.warehouse | xpath | Inherits stock.view_warehouse_tree |
stock_warn_insufficient_qty_form_view |
stock.warn.insufficient.qty | stock.warn.insufficient.qty | form | New |
stock_warn_insufficient_qty_scrap_form_view |
stock.warn.insufficient.qty.scrap | stock.warn.insufficient.qty.scrap | xpath | Inherits stock.stock_warn_insufficient_qty_form_view |
track_move_template |
track_move_template | ir.ui.view | qweb | New |
view_assign_serial_numbers |
stock_assign_serial_numbers | stock.assign.serial | form | New |
view_backorder_confirmation |
stock_backorder_confirmation | stock.backorder.confirmation | form | New |
view_change_product_quantity |
Change Product Quantity | stock.change.product.qty | form | New |
view_immediate_transfer |
stock.immediate.transfer.view.form | stock.immediate.transfer | form | New |
view_inventory_filter |
stock.inventory.filter | stock.inventory | search | New |
view_inventory_form |
stock.inventory.form | stock.inventory | form | New |
view_inventory_tree |
stock.inventory.tree | stock.inventory | tree | New |
view_location_form |
stock.location.form | stock.location | form | New |
view_location_search |
stock.location.search | stock.location | search | New |
view_location_tree2 |
stock.location.tree | stock.location | tree | New |
view_move_form |
stock.move.form | stock.move | form | New |
view_move_graph |
stock.move.graph | stock.move | graph | New |
view_move_kandan |
stock.move.kanban | stock.move | kanban | New |
view_move_line_form |
stock.move.line.form | stock.move.line | form | New |
view_move_line_tree |
stock.move.line.tree | stock.move.line | tree | New |
view_move_picking_tree |
stock.move.tree | stock.move | tree | New |
view_move_pivot |
stock.move.pivot | stock.move | pivot | New |
view_move_search |
stock.move.search | stock.move | search | New |
view_move_tree |
stock.move.tree | stock.move | tree | New |
view_move_tree_receipt_picking |
stock.move.tree2 | stock.move | tree | New |
view_move_tree_receipt_picking_board |
stock.move.tree3 | stock.move | tree | New |
view_overprocessed_transfer |
stock.overprocessed.transfer.view.form | stock.overprocessed.transfer | form | New |
view_partner_stock_form |
res.partner.stock.property.form.inherit | res.partner | xpath | Inherits mail.res_partner_view_form_inherit_mail |
view_partner_stock_warnings_form |
res.partner.stock.warning | res.partner | page | Inherits base.view_partner_form |
view_picking_form |
stock.picking.form | stock.picking | form | New |
view_picking_internal_search |
stock.picking.internal.search | stock.picking | search | New |
view_picking_move_tree |
stock.picking.move.tree | stock.move | tree | New |
view_picking_type_form |
Operation Types | stock.picking.type | form | New |
view_picking_type_list |
stock.picking.type.list | stock.picking.type | tree | New |
view_picking_type_tree |
Operation types | stock.picking.type | tree | New |
view_pickingtype_filter |
stock.picking.type.filter | stock.picking.type | search | New |
view_procurement_compute_wizard |
Run Schedulers Manually | stock.scheduler.compute | form | New |
view_product_replenish |
Replenish | product.replenish | form | New |
view_production_lot_form |
stock.production.lot.form | stock.production.lot | form | New |
view_production_lot_tree |
stock.production.lot.tree | stock.production.lot | tree | New |
view_putaway_search |
stock.putaway.rule.search | stock.putaway.rule | search | New |
view_quant_package_form |
stock.quant.package.form | stock.quant.package | form | New |
view_quant_package_kanban |
stock.quant.package.kanban | stock.quant.package | kanban | New |
view_quant_package_tree |
stock.quant.package.tree | stock.quant.package | tree | New |
view_removal |
product.removal.form | product.removal | form | New |
view_route_rule_form |
stock.rule.form | stock.rule | xpath | Inherits stock.view_stock_rule_form |
view_stock_inventory_kanban |
stock.inventory.kanban | stock.inventory | kanban | New |
view_stock_move_kanban |
stock.move.kanban | stock.move | kanban | New |
view_stock_move_line_detailed_operation_tree |
stock.move.line.operations.tree | stock.move.line | tree | New |
view_stock_move_line_kanban |
stock.move.line.kanban | stock.move.line | kanban | New |
view_stock_move_line_operation_tree |
stock.move.line.operations.tree | stock.move.line | tree | New |
view_stock_move_nosuggest_operations |
stock.move.operations.nosuggest.form | stock.move | field | Inherits stock.view_stock_move_operations |
view_stock_move_operations |
stock.move.operations.form | stock.move | form | New |
view_stock_product_template_tree |
product.template.stock.tree.inherit | product.template | tree | Inherits product.product_template_tree_view |
view_stock_product_tree |
product.stock.tree.inherit | product.product | tree | Inherits product.product_product_tree_view |
view_stock_quant_form |
stock.quant.form | stock.quant | form | New |
view_stock_quant_pivot |
stock.quant.pivot | stock.quant | pivot | New |
view_stock_quant_tree |
stock.quant.tree | stock.quant | tree | New |
view_stock_quant_tree_editable |
stock.quant.tree.editable | stock.quant | tree | New |
view_stock_quantity_history |
Inventory Report at Date | stock.quantity.history | form | New |
view_stock_return_picking_form |
Return lines | stock.return.picking | form | New |
view_stock_rule_filter |
stock.rule.select | stock.rule | search | New |
view_stock_rule_form |
stock.rule.form | stock.rule | form | New |
view_stock_rule_tree |
stock.rule.tree | stock.rule | tree | New |
view_stock_rules_report |
Stock Rules Report | stock.rules.report | form | New |
view_stock_track_confirmation |
stock.track.confirmation.view.form | stock.track.confirmation | form | New |
view_stock_warehouse_orderpoint_kanban |
stock.warehouse.orderpoint.kanban | stock.warehouse.orderpoint | kanban | New |
view_template_property_form |
product.template.stock.property.form.inherit | product.template | xpath | Inherits product.product_template_form_view |
view_warehouse |
stock.warehouse | stock.warehouse | form | New |
view_warehouse_orderpoint_form |
stock.warehouse.orderpoint.form | stock.warehouse.orderpoint | form | New |
view_warehouse_orderpoint_tree |
stock.warehouse.orderpoint.tree | stock.warehouse.orderpoint | tree | New |
view_warehouse_tree |
stock.warehouse.tree | stock.warehouse | tree | New |
vpicktree |
stock.picking.tree | stock.picking | tree | New |
warehouse_orderpoint_search |
stock.warehouse.orderpoint.search | stock.warehouse.orderpoint | search | New |
type
Selection
selection_add=[('weight', 'Weighted Product'), ('location', 'Location'), ('lot', 'Lot'), ('package', 'Package')]
No public methods.
move_type
Selection
default='direct'
required=True
string='Delivery Type'
args: [('direct', 'Partial'), ('one', 'All at once')]
name
Char
default=<expr>
required=True
args: 'Reference'
partner_id
Many2one → res.partner
run(self, procurements)
run_scheduler(self, use_new_cursor=False, company_id=False)
putaway_rule_ids
One2many → stock.putaway.rule
removal_strategy_id
Many2one → product.removal
help='Set a specific removal strategy that will be used regardless of the source location for this product category'
args: 'product.removal', 'Force Removal Strategy'
route_ids
Many2many → stock.location.route
domain=[('product_categ_selectable', '=', True)]
args: 'stock.location.route', 'stock_location_route_categ', 'categ_id', 'route_id', 'Routes'
total_route_ids
Many2many → stock.location.route
compute='_compute_total_route_ids'
readonly=True
string='Total routes'
args: 'stock.location.route'
No public methods.
free_qty
Float
compute='_compute_quantities'
compute_sudo=False
digits='Product Unit of Measure'
help="Forecast quantity (computed as Quantity On Hand - reserved quantity)\nIn a context with a single Stock Location, this includes goods stored in this location, or any of its children.\nIn a context with a single Warehouse, this includes goods stored in the Stock Location of this Warehouse, or any of its children.\nOtherwise, this includes goods stored in any Stock Location with 'internal' type."
search='_search_free_qty'
args: 'Free To Use Quantity '
incoming_qty
Float
compute='_compute_quantities'
compute_sudo=False
digits='Product Unit of Measure'
help="Quantity of planned incoming products.\nIn a context with a single Stock Location, this includes goods arriving to this Location, or any of its children.\nIn a context with a single Warehouse, this includes goods arriving to the Stock Location of this Warehouse, or any of its children.\nOtherwise, this includes goods arriving to any Stock Location with 'internal' type."
search='_search_incoming_qty'
args: 'Incoming'
nbr_reordering_rules
Integer
compute='_compute_nbr_reordering_rules'
compute_sudo=False
args: 'Reordering Rules'
orderpoint_ids
One2many → stock.warehouse.orderpoint
outgoing_qty
Float
compute='_compute_quantities'
compute_sudo=False
digits='Product Unit of Measure'
help="Quantity of planned outgoing products.\nIn a context with a single Stock Location, this includes goods leaving this Location, or any of its children.\nIn a context with a single Warehouse, this includes goods leaving the Stock Location of this Warehouse, or any of its children.\nOtherwise, this includes goods leaving any Stock Location with 'internal' type."
search='_search_outgoing_qty'
args: 'Outgoing'
putaway_rule_ids
One2many → stock.putaway.rule
qty_available
Float
compute='_compute_quantities'
compute_sudo=False
digits='Product Unit of Measure'
help="Current quantity of products.\nIn a context with a single Stock Location, this includes goods stored at this Location, or any of its children.\nIn a context with a single Warehouse, this includes goods stored in the Stock Location of this Warehouse, or any of its children.\nstored in the Stock Location of the Warehouse of this Shop, or any of its children.\nOtherwise, this includes goods stored in any Stock Location with 'internal' type."
search='_search_qty_available'
args: 'Quantity On Hand'
reordering_max_qty
Float
compute='_compute_nbr_reordering_rules'
compute_sudo=False
reordering_min_qty
Float
compute='_compute_nbr_reordering_rules'
compute_sudo=False
stock_move_ids
One2many → stock.move
help='Technical: used to compute quantities.'
args: 'stock.move', 'product_id'
stock_quant_ids
One2many → stock.quant
help='Technical: used to compute quantities.'
args: 'stock.quant', 'product_id'
virtual_available
Float
compute='_compute_quantities'
compute_sudo=False
digits='Product Unit of Measure'
help="Forecast quantity (computed as Quantity On Hand - Outgoing + Incoming)\nIn a context with a single Stock Location, this includes goods stored in this location, or any of its children.\nIn a context with a single Warehouse, this includes goods stored in the Stock Location of this Warehouse, or any of its children.\nOtherwise, this includes goods stored in any Stock Location with 'internal' type."
search='_search_virtual_available'
args: 'Forecast Quantity'
action_open_product_lot(self)
action_open_quants(self)
action_product_forecast_report(self)
action_update_quantity_on_hand(self)
action_view_related_putaway_rules(self)
action_view_routes(self)
action_view_stock_move_lines(self)
fields_view_get(self, view_id=None, view_type='form', toolbar=False, submenu=False)
get_components(self)
get_theoretical_quantity(self, product_id, location_id, lot_id=None, package_id=None, owner_id=None, to_uom=None)
onchange_tracking(self)
view_header_get(self, view_id, view_type)
write(self, values)
method
Char
help='FIFO, LIFO...'
required=True
args: 'Method'
name
Char
required=True
args: 'Name'
No public methods.
company_id
Many2one → res.company
date_planned
Datetime
help='Date at which the replenishment should take place.'
required=True
args: 'Scheduled Date'
product_has_variants
Boolean
default=False
required=True
args: 'Has variants'
product_id
Many2one → product.product
required=True
string='Product'
args: 'product.product'
product_tmpl_id
Many2one → product.template
required=True
string='Product Template'
args: 'product.template'
product_uom_category_id
Many2one → uom.category
readonly=True
related='product_id.uom_id.category_id'
required=True
args: 'uom.category'
product_uom_id
Many2one → uom.uom
required=True
string='Unity of measure'
args: 'uom.uom'
quantity
Float
default=1
required=True
args: 'Quantity'
route_ids
Many2many → stock.location.route
domain="['|', ('company_id', '=', False), ('company_id', '=', company_id)]"
help="Apply specific route(s) for the replenishment instead of product's default routes."
string='Preferred Routes'
args: 'stock.location.route'
warehouse_id
Many2one → stock.warehouse
domain="[('company_id', '=', company_id)]"
required=True
string='Warehouse'
args: 'stock.warehouse'
default_get(self, fields)
launch_replenishment(self)
description_picking
Text
translate=True
args: 'Description on Picking'
description_pickingin
Text
translate=True
args: 'Description on Receptions'
description_pickingout
Text
translate=True
args: 'Description on Delivery Orders'
incoming_qty
Float
compute='_compute_quantities'
compute_sudo=False
digits='Product Unit of Measure'
search='_search_incoming_qty'
args: 'Incoming'
location_id
Many2one → stock.location
store=False
args: 'stock.location', 'Location'
nbr_reordering_rules
Integer
compute='_compute_nbr_reordering_rules'
compute_sudo=False
args: 'Reordering Rules'
outgoing_qty
Float
compute='_compute_quantities'
compute_sudo=False
digits='Product Unit of Measure'
search='_search_outgoing_qty'
args: 'Outgoing'
property_stock_inventory
Many2one → stock.location
check_company=True
company_dependent=True
domain="[('usage', '=', 'inventory'), '|', ('company_id', '=', False), ('company_id', '=', allowed_company_ids[0])]"
help='This stock location will be used, instead of the default one, as the source location for stock moves generated when you do an inventory.'
args: 'stock.location', 'Inventory Location'
property_stock_production
Many2one → stock.location
check_company=True
company_dependent=True
domain="[('usage', '=', 'production'), '|', ('company_id', '=', False), ('company_id', '=', allowed_company_ids[0])]"
help='This stock location will be used, instead of the default one, as the source location for stock moves generated by manufacturing orders.'
args: 'stock.location', 'Production Location'
qty_available
Float
compute='_compute_quantities'
compute_sudo=False
digits='Product Unit of Measure'
search='_search_qty_available'
args: 'Quantity On Hand'
reordering_max_qty
Float
compute='_compute_nbr_reordering_rules'
compute_sudo=False
reordering_min_qty
Float
compute='_compute_nbr_reordering_rules'
compute_sudo=False
responsible_id
Many2one → res.users
check_company=True
company_dependent=True
default=<expr>
help='This user will be responsible of the next activities related to logistic operations for this product.'
string='Responsible'
args: 'res.users'
route_from_categ_ids
Many2many
readonly=False
related='categ_id.total_route_ids'
related_sudo=False
relation='stock.location.route'
string='Category Routes'
route_ids
Many2many → stock.location.route
domain=[('product_selectable', '=', True)]
help='Depending on the modules installed, this will allow you to define the route of the product: whether it will be bought, manufactured, replenished on order, etc.'
args: 'stock.location.route', 'stock_route_product', 'product_id', 'route_id', 'Routes'
sale_delay
Float
default=0
help="Delivery lead time, in days. It's the number of days, promised to the customer, between the confirmation of the sales order and the delivery."
args: 'Customer Lead Time'
tracking
Selection
default='none'
help='Ensure the traceability of a storable product in your warehouse.'
required=True
string='Tracking'
args: [('serial', 'By Unique Serial Number'), ('lot', 'By Lots'), ('none', 'No Tracking')]
type
Selection
selection_add=[('product', 'Storable Product')]
tracking=True
virtual_available
Float
compute='_compute_quantities'
compute_sudo=False
digits='Product Unit of Measure'
search='_search_virtual_available'
args: 'Forecasted Quantity'
warehouse_id
Many2one → stock.warehouse
store=False
args: 'stock.warehouse', 'Warehouse'
action_open_product_lot(self)
action_open_quants(self)
action_product_tmpl_forecast_report(self)
action_update_quantity_on_hand(self)
action_view_orderpoints(self)
action_view_related_putaway_rules(self)
action_view_stock_move_lines(self)
onchange_tracking(self)
write(self, vals)
company_id
Many2one → res.company
readonly=True
string='Company'
args: 'res.company'
cumulative_quantity
Float
readonly=True
string='Cumulative Quantity'
date
Date
string='Date'
picking_id
Many2one → stock.picking
readonly=True
string='Picking'
args: 'stock.picking'
product_id
Many2one → product.product
readonly=True
string='Product'
args: 'product.product'
product_tmpl_id
Many2one → product.template
readonly=True
related='product_id.product_tmpl_id'
string='Product Template'
args: 'product.template'
quantity
Float
readonly=True
reference
Char
init(self)
read_group(self, domain, fields, groupby, offset=0, limit=None, orderby=False, lazy=True)
company_id
Many2one → res.company
readonly=True
args: 'res.company'
date
Date
readonly=True
string='Date'
move_ids
One2many → stock.move
readonly=True
args: 'stock.move'
product_id
Many2one → product.product
readonly=True
string='Product'
args: 'product.product'
product_qty
Float
readonly=True
string='Quantity'
product_tmpl_id
Many2one → product.template
related='product_id.product_tmpl_id'
args: 'product.template'
state
Selection
readonly=True
string='State'
args: [('forecast', 'Forecasted Stock'), ('in', 'Forecasted Receipts'), ('out', 'Forecasted Deliveries')]
warehouse_id
Many2one → stock.warehouse
readonly=True
args: 'stock.warehouse'
init(self)
No new fields.
Public methods (0)No public methods.
internal_transit_location_id
Many2one → stock.location
check_company=True
help='Technical field used for resupply routes between warehouses that belong to this company'
ondelete='restrict'
args: 'stock.location', 'Internal Transit Location'
stock_mail_confirmation_template_id
Many2one → mail.template
default=_default_confirmation_mail_template
domain="[('model', '=', 'stock.picking')]"
help='Email sent to the customer once the order is done.'
string='Email Template confirmation picking'
args: 'mail.template'
stock_move_email_validation
Boolean
default=False
args: 'Email Confirmation picking'
create(self, vals)
create_missing_inventory_loss_location(self)
create_missing_production_location(self)
create_missing_scrap_location(self)
create_missing_scrap_sequence(self)
create_missing_transit_location(self)
create_missing_warehouse(self)
group_lot_on_delivery_slip
Boolean
group='base.group_user,base.group_portal'
implied_group='stock.group_lot_on_delivery_slip'
args: 'Display Lots & Serial Numbers on Delivery Slips'
group_stock_adv_location
Boolean
help='Add and customize route operations to process product moves in your warehouse(s): e.g. unload > quality control > stock for incoming products, pick > pack > ship for outgoing products. \n You can also set putaway strategies on warehouse locations in order to send incoming products into specific child locations straight away (e.g. specific bins, racks).'
implied_group='stock.group_adv_location'
args: 'Multi-Step Routes'
group_stock_multi_locations
Boolean
help='Store products in specific locations of your warehouse (e.g. bins, racks) and to track inventory accordingly.'
implied_group='stock.group_stock_multi_locations'
args: 'Storage Locations'
group_stock_multi_warehouses
Boolean
implied_group='stock.group_stock_multi_warehouses'
args: 'Multi-Warehouses'
group_stock_production_lot
Boolean
implied_group='stock.group_production_lot'
args: 'Lots & Serial Numbers'
group_stock_tracking_lot
Boolean
implied_group='stock.group_tracking_lot'
args: 'Delivery Packages'
group_stock_tracking_owner
Boolean
implied_group='stock.group_tracking_owner'
args: 'Consignment'
group_warning_stock
Boolean
implied_group='stock.group_warning_stock'
args: 'Warnings for Stock'
module_delivery
Boolean
module_delivery_bpost
Boolean
module_delivery_dhl
Boolean
module_delivery_easypost
Boolean
module_delivery_fedex
Boolean
module_delivery_ups
Boolean
module_delivery_usps
Boolean
module_procurement_jit
Selection
default='0'
help='Reserving products manually in delivery orders or by running the scheduler is advised to better manage priorities in case of long customer lead times or/and frequent stock-outs.'
args: [('1', 'Immediately after sales order confirmation'), ('0', 'Manually or based on automatic scheduler')], 'Reservation'
module_product_expiry
Boolean
help='Track following dates on lots & serial numbers: best before, removal, end of life, alert. \n Such dates are set automatically at lot/serial number creation based on values set on the product (in days).'
args: 'Expiration Dates'
module_stock_barcode
Boolean
module_stock_picking_batch
Boolean
module_stock_sms
Boolean
stock_mail_confirmation_template_id
Many2one
readonly=False
related='company_id.stock_mail_confirmation_template_id'
stock_move_email_validation
Boolean
readonly=False
related='company_id.stock_move_email_validation'
onchange_adv_location(self)
set_values(self)
picking_warn
Selection
default='no-message'
help=WARNING_HELP
args: WARNING_MESSAGE, 'Stock Picking'
picking_warn_msg
Text
property_stock_customer
Many2one → stock.location
check_company=True
company_dependent=True
domain="['|', ('company_id', '=', False), ('company_id', '=', allowed_company_ids[0])]"
help='The stock location used as destination when sending goods to this contact.'
string='Customer Location'
args: 'stock.location'
property_stock_supplier
Many2one → stock.location
check_company=True
company_dependent=True
domain="['|', ('company_id', '=', False), ('company_id', '=', allowed_company_ids[0])]"
help='The stock location used as source when receiving goods from this contact.'
string='Vendor Location'
args: 'stock.location'
No public methods.
move_id
Many2one → stock.move
required=True
args: 'stock.move'
next_serial_count
Integer
default=_default_next_serial_count
required=True
args: 'Number of SN'
next_serial_number
Char
required=True
args: 'First SN'
product_id
Many2one → product.product
related='move_id.product_id'
required=True
args: 'product.product', 'Product'
generate_serial_numbers(self)
pick_ids
Many2many → stock.picking
process(self)
process_cancel_backorder(self)
new_quantity
Float
default=1
digits='Product Unit of Measure'
help='This quantity is expressed in the Default Unit of Measure of the product.'
required=True
args: 'New Quantity on Hand'
product_id
Many2one → product.product
required=True
args: 'product.product', 'Product'
product_tmpl_id
Many2one → product.template
required=True
args: 'product.template', 'Template'
product_variant_count
Integer
readonly=False
related='product_tmpl_id.product_variant_count'
args: 'Variant Count'
change_product_qty(self)
check_new_quantity(self)
pick_ids
Many2many → stock.picking
process(self)
company_id
Many2one → res.company
default=<expr>
index=True
readonly=True
required=True
states={'draft': [('readonly', False)]}
args: 'res.company', 'Company'
date
Datetime
default=fields.Datetime.now
help='If the inventory adjustment is not validated, date at which the theoritical quantities have been checked.\nIf the inventory adjustment is validated, date at which the inventory adjustment has been validated.'
readonly=True
required=True
args: 'Inventory Date'
line_ids
One2many → stock.inventory.line
copy=False
readonly=False
states={'done': [('readonly', True)]}
string='Inventories'
args: 'stock.inventory.line', 'inventory_id'
location_ids
Many2many → stock.location
check_company=True
domain="[('company_id', '=', company_id), ('usage', 'in', ['internal', 'transit'])]"
readonly=True
states={'draft': [('readonly', False)]}
string='Locations'
args: 'stock.location'
move_ids
One2many → stock.move
states={'done': [('readonly', True)]}
string='Created Moves'
args: 'stock.move', 'inventory_id'
name
Char
default='Inventory'
readonly=True
required=True
states={'draft': [('readonly', False)]}
args: 'Inventory Reference'
prefill_counted_quantity
Selection
default='counted'
help='Allows to start with prefill counted quantity for each lines or with all counted quantity set to zero.'
selection=[('counted', 'Default to stock on hand'), ('zero', 'Default to zero')]
string='Counted Quantities'
product_ids
Many2many → product.product
check_company=True
domain="[('type', '=', 'product'), '|', ('company_id', '=', False), ('company_id', '=', company_id)]"
help='Specify Products to focus your inventory on particular Products.'
readonly=True
states={'draft': [('readonly', False)]}
string='Products'
args: 'product.product'
start_empty
Boolean
help='Allows to start with an empty inventory.'
args: 'Empty Inventory'
state
Selection
copy=False
default='draft'
index=True
readonly=True
selection=[('draft', 'Draft'), ('cancel', 'Cancelled'), ('confirm', 'In Progress'), ('done', 'Validated')]
string='Status'
action_cancel_draft(self)
action_check(self)
action_open_inventory_lines(self)
action_start(self)
action_validate(self)
action_view_related_move_lines(self)
copy_data(self, default=None)
post_inventory(self)
unlink(self)
categ_id
Many2one
related='product_id.categ_id'
store=True
company_id
Many2one → res.company
index=True
readonly=True
related='inventory_id.company_id'
store=True
args: 'res.company', 'Company'
difference_qty
Float
compute='_compute_difference'
digits='Product Unit of Measure'
help="Indicates the gap between the product's theoretical quantity and its newest quantity."
readonly=True
search='_search_difference_qty'
args: 'Difference'
inventory_date
Datetime
default=fields.Datetime.now
help='Last date at which the On Hand Quantity has been computed.'
readonly=True
args: 'Inventory Date'
inventory_id
Many2one → stock.inventory
check_company=True
index=True
ondelete='cascade'
args: 'stock.inventory', 'Inventory'
is_editable
Boolean
help='Technical field to restrict the edition.'
location_id
Many2one → stock.location
check_company=True
domain=<expr>
index=True
required=True
args: 'stock.location', 'Location'
outdated
Boolean
compute='_compute_outdated'
search='_search_outdated'
string='Quantity outdated'
package_id
Many2one → stock.quant.package
check_company=True
domain="[('location_id', '=', location_id)]"
index=True
args: 'stock.quant.package', 'Pack'
partner_id
Many2one → res.partner
check_company=True
args: 'res.partner', 'Owner'
prod_lot_id
Many2one → stock.production.lot
check_company=True
domain="[('product_id','=',product_id), ('company_id', '=', company_id)]"
args: 'stock.production.lot', 'Lot/Serial Number'
product_id
Many2one → product.product
check_company=True
domain=<expr>
index=True
required=True
args: 'product.product', 'Product'
product_qty
Float
default=0
digits='Product Unit of Measure'
args: 'Counted Quantity'
product_tracking
Selection
readonly=True
related='product_id.tracking'
args: 'Tracking'
product_uom_id
Many2one → uom.uom
readonly=True
required=True
args: 'uom.uom', 'Product Unit of Measure'
state
Selection
related='inventory_id.state'
args: 'Status'
theoretical_qty
Float
digits='Product Unit of Measure'
readonly=True
args: 'Theoretical Quantity'
action_refresh_quantity(self)
action_reset_product_qty(self)
create(self, vals_list)
write(self, vals)
active
Boolean
default=True
help='By unchecking the active field, you may hide a location without deleting it.'
args: 'Active'
barcode
Char
copy=False
args: 'Barcode'
child_ids
One2many → stock.location
comment
Text
company_id
Many2one → res.company
default=<expr>
help='Let this field empty if this location is shared between companies'
index=True
args: 'res.company', 'Company'
complete_name
Char
compute='_compute_complete_name'
store=True
args: 'Full Location Name'
location_id
Many2one → stock.location
check_company=True
help="The parent location that includes this location. Example : The 'Dispatch Zone' is the 'Gate 1' parent location."
index=True
ondelete='cascade'
args: 'stock.location', 'Parent Location'
name
Char
required=True
args: 'Location Name'
parent_path
Char
index=True
posx
Integer
default=0
help='Optional localization details, for information purpose only'
args: 'Corridor (X)'
posy
Integer
default=0
help='Optional localization details, for information purpose only'
args: 'Shelves (Y)'
posz
Integer
default=0
help='Optional localization details, for information purpose only'
args: 'Height (Z)'
putaway_rule_ids
One2many → stock.putaway.rule
quant_ids
One2many → stock.quant
removal_strategy_id
Many2one → product.removal
help='Defines the default method used for suggesting the exact location (shelf) where to take the products from, which lot etc. for this location. This method can be enforced at the product category level, and a fallback is made on the parent locations if none is set here.'
args: 'product.removal', 'Removal Strategy'
return_location
Boolean
help='Check this box to allow using this location as a return location.'
args: 'Is a Return Location?'
scrap_location
Boolean
default=False
help='Check this box to allow using this location to put scrapped/damaged goods.'
args: 'Is a Scrap Location?'
usage
Selection
default='internal'
help="* Vendor Location: Virtual location representing the source location for products coming from your vendors\n* View: Virtual location used to create a hierarchical structures for your warehouse, aggregating its child locations ; can't directly contain products\n* Internal Location: Physical locations inside your own warehouses,\n* Customer Location: Virtual location representing the destination location for products sent to your customers\n* Inventory Loss: Virtual location serving as counterpart for inventory operations used to correct stock levels (Physical inventories)\n* Production: Virtual counterpart location for production operations: this location consumes the components and produces finished products\n* Transit Location: Counterpart location that should be used in inter-company or inter-warehouses operations"
index=True
required=True
string='Location Type'
args: [('supplier', 'Vendor Location'), ('view', 'View'), ('internal', 'Internal Location'), ('customer', 'Customer Location'), ('inventory', 'Inventory Loss'), ('production', 'Production'), ('transit', 'Transit Location')]
default_get(self, fields)
get_warehouse(self)
should_bypass_reservation(self)
write(self, values)
active
Boolean
default=True
help='If the active field is set to False, it will allow you to hide the route without removing it.'
args: 'Active'
categ_ids
Many2many → product.category
copy=False
args: 'product.category', 'stock_location_route_categ', 'route_id', 'categ_id', 'Product Categories'
company_id
Many2one → res.company
default=<expr>
help='Leave this field empty if this route is shared between all companies'
index=True
args: 'res.company', 'Company'
name
Char
required=True
translate=True
args: 'Route'
product_categ_selectable
Boolean
help='When checked, the route will be selectable on the Product Category.'
args: 'Applicable on Product Category'
product_ids
Many2many → product.template
check_company=True
copy=False
args: 'product.template', 'stock_route_product', 'route_id', 'product_id', 'Products'
product_selectable
Boolean
default=True
help='When checked, the route will be selectable in the Inventory tab of the Product form.'
args: 'Applicable on Product'
rule_ids
One2many → stock.rule
copy=True
args: 'stock.rule', 'route_id', 'Rules'
sequence
Integer
default=0
args: 'Sequence'
supplied_wh_id
Many2one → stock.warehouse
supplier_wh_id
Many2one → stock.warehouse
warehouse_domain_ids
One2many → stock.warehouse
compute='_compute_warehouses'
args: 'stock.warehouse'
warehouse_ids
Many2many → stock.warehouse
copy=False
domain="[('id', 'in', warehouse_domain_ids)]"
args: 'stock.warehouse', 'stock_route_warehouse', 'route_id', 'warehouse_id', 'Warehouses'
warehouse_selectable
Boolean
help='When a warehouse is selected for this route, this route should be seen as the default route when products pass through this warehouse.'
args: 'Applicable on Warehouse'
toggle_active(self)
view_categ_ids(self)
view_product_ids(self)
additional
Boolean
default=False
args: "Whether the move was added after the picking's confirmation"
availability
Float
compute='_compute_product_availability'
help='Quantity in stock that can still be reserved for this move'
readonly=True
args: 'Forecasted Quantity'
backorder_id
Many2one → stock.picking
index=True
readonly=False
related='picking_id.backorder_id'
args: 'stock.picking', 'Back Order of'
company_id
Many2one → res.company
default=<expr>
index=True
required=True
args: 'res.company', 'Company'
create_date
Datetime
index=True
readonly=True
args: 'Creation Date'
date
Datetime
default=fields.Datetime.now
help='Move date: scheduled date until move is done, then date of actual move processing'
index=True
required=True
states={'done': [('readonly', True)]}
args: 'Date'
date_expected
Datetime
default=fields.Datetime.now
help='Scheduled date for the processing of this move'
index=True
required=True
states={'done': [('readonly', True)]}
args: 'Expected Date'
delay_alert
Boolean
description_picking
Text
display_assign_serial
Boolean
compute='_compute_display_assign_serial'
group_id
Many2one → procurement.group
default=_default_group_id
args: 'procurement.group', 'Procurement Group'
has_move_lines
Boolean
compute='_compute_has_move_lines'
has_tracking
Selection
related='product_id.tracking'
string='Product with Tracking'
inventory_id
Many2one → stock.inventory
check_company=True
args: 'stock.inventory', 'Inventory'
is_initial_demand_editable
Boolean
compute='_compute_is_initial_demand_editable'
args: 'Is initial demand editable'
is_locked
Boolean
compute='_compute_is_locked'
readonly=True
is_quantity_done_editable
Boolean
compute='_compute_is_quantity_done_editable'
args: 'Is quantity done editable'
location_dest_id
Many2one → stock.location
auto_join=True
check_company=True
help='Location where the system will stock the finished products.'
index=True
required=True
args: 'stock.location', 'Destination Location'
location_id
Many2one → stock.location
auto_join=True
check_company=True
help='Sets a location if you produce at a fixed location. This can be a partner location if you subcontract the manufacturing operations.'
index=True
required=True
args: 'stock.location', 'Source Location'
move_dest_ids
Many2many → stock.move
copy=False
help='Optional: next stock move when chaining them'
args: 'stock.move', 'stock_move_move_rel', 'move_orig_id', 'move_dest_id', 'Destination Moves'
move_line_ids
One2many → stock.move.line
move_line_nosuggest_ids
One2many → stock.move.line
domain=[('product_qty', '=', 0.0)]
args: 'stock.move.line', 'move_id'
move_orig_ids
Many2many → stock.move
copy=False
help='Optional: previous stock move when chaining them'
args: 'stock.move', 'stock_move_move_rel', 'move_dest_id', 'move_orig_id', 'Original Move'
name
Char
index=True
required=True
args: 'Description'
next_serial
Char
next_serial_count
Integer
note
Text
origin
Char
origin_returned_move_id
Many2one → stock.move
check_company=True
copy=False
help='Move that created the return move'
index=True
args: 'stock.move', 'Origin return move'
package_level_id
Many2one → stock.package_level
check_company=True
copy=False
args: 'stock.package_level', 'Package Level'
partner_id
Many2one → res.partner
help='Optional address where goods are to be delivered, specifically used for allotment'
states={'done': [('readonly', True)]}
args: 'res.partner', 'Destination Address '
picking_code
Selection
readonly=True
related='picking_id.picking_type_id.code'
picking_id
Many2one → stock.picking
check_company=True
index=True
states={'done': [('readonly', True)]}
args: 'stock.picking', 'Transfer Reference'
picking_partner_id
Many2one → res.partner
readonly=False
related='picking_id.partner_id'
args: 'res.partner', 'Transfer Destination Address'
picking_type_entire_packs
Boolean
readonly=True
related='picking_type_id.show_entire_packs'
picking_type_id
Many2one → stock.picking.type
check_company=True
args: 'stock.picking.type', 'Operation Type'
price_unit
Float
copy=False
help="Technical field used to record the product cost set by the user during a picking confirmation (when costing method used is 'average price' or 'real'). Value given in company currency and in product uom."
args: 'Unit Price'
priority
Selection
default='1'
args: PROCUREMENT_PRIORITIES, 'Priority'
procure_method
Selection
default='make_to_stock'
help='By default, the system will take from the stock in the source location and passively wait for availability. The other possibility allows you to directly create a procurement on the source location (and thus ignore its current stock) to gather products. If we want to chain moves and have this one to wait for the previous, this second option should be chosen.'
required=True
string='Supply Method'
args: [('make_to_stock', 'Default: Take From Stock'), ('make_to_order', 'Advanced: Apply Procurement Rules')]
product_id
Many2one → product.product
check_company=True
domain="[('type', 'in', ['product', 'consu']), '|', ('company_id', '=', False), ('company_id', '=', company_id)]"
index=True
required=True
states={'done': [('readonly', True)]}
args: 'product.product', 'Product'
product_qty
Float
compute='_compute_product_qty'
compute_sudo=True
digits=0
help='Quantity in the default UoM of the product'
inverse='_set_product_qty'
store=True
args: 'Real Quantity'
product_tmpl_id
Many2one → product.template
help='Technical: used in views'
readonly=False
related='product_id.product_tmpl_id'
args: 'product.template', 'Product Template'
product_type
Selection
readonly=True
related='product_id.type'
product_uom
Many2one → uom.uom
domain="[('category_id', '=', product_uom_category_id)]"
required=True
args: 'uom.uom', 'Unit of Measure'
product_uom_category_id
Many2one
related='product_id.uom_id.category_id'
product_uom_qty
Float
default=0.0
digits='Product Unit of Measure'
help="This is the quantity of products from an inventory point of view. For moves in the state 'done', this is the quantity of products that were actually moved. For other moves, this is the quantity of product that is planned to be moved. Lowering this quantity does not generate a backorder. Changing this quantity on assigned moves affects the product reservation, and should be done with care."
required=True
states={'done': [('readonly', True)]}
args: 'Initial Demand'
propagate_cancel
Boolean
default=True
help='If checked, when this move is cancelled, cancel the linked move too'
args: 'Propagate cancel and split'
propagate_date
Boolean
help='The rescheduling is propagated to the next move.'
string='Propagate Rescheduling'
propagate_date_minimum_delta
Integer
help='The change must be higher than this value to be propagated'
string='Reschedule if Higher Than'
quantity_done
Float
compute='_quantity_done_compute'
digits='Product Unit of Measure'
inverse='_quantity_done_set'
args: 'Quantity Done'
reference
Char
compute='_compute_reference'
store=True
string='Reference'
reserved_availability
Float
compute='_compute_reserved_availability'
digits='Product Unit of Measure'
help='Quantity that has already been reserved for this move'
readonly=True
args: 'Quantity Reserved'
restrict_partner_id
Many2one → res.partner
check_company=True
help="Technical field used to depict a restriction on the ownership of quants to consider when marking this move as 'done'"
args: 'res.partner', 'Owner '
returned_move_ids
One2many → stock.move
help='Optional: all returned moves created from this move'
args: 'stock.move', 'origin_returned_move_id', 'All returned moves'
route_ids
Many2many → stock.location.route
check_company=True
help='Preferred route'
args: 'stock.location.route', 'stock_location_route_move', 'move_id', 'route_id', 'Destination route'
rule_id
Many2one → stock.rule
check_company=True
help='The stock rule that created this stock move'
ondelete='restrict'
args: 'stock.rule', 'Stock Rule'
scrap_ids
One2many → stock.scrap
scrapped
Boolean
readonly=True
related='location_dest_id.scrap_location'
store=True
args: 'Scrapped'
sequence
Integer
default=10
args: 'Sequence'
show_details_visible
Boolean
compute='_compute_show_details_visible'
args: 'Details Visible'
show_operations
Boolean
readonly=False
related='picking_id.picking_type_id.show_operations'
show_reserved_availability
Boolean
compute='_compute_show_reserved_availability'
args: 'From Supplier'
state
Selection
copy=False
default='draft'
help="* New: When the stock move is created and not yet confirmed.\n* Waiting Another Move: This state can be seen when a move is waiting for another one, for example in a chained flow.\n* Waiting Availability: This state is reached when the procurement resolution is not straight forward. It may need the scheduler to run, a component to be manufactured...\n* Available: When products are reserved, it is set to 'Available'.\n* Done: When the shipment is processed, the state is 'Done'."
index=True
readonly=True
string='Status'
args: [('draft', 'New'), ('cancel', 'Cancelled'), ('waiting', 'Waiting Another Move'), ('confirmed', 'Waiting Availability'), ('partially_available', 'Partially Available'), ('assigned', 'Available'), ('done', 'Done')]
string_availability_info
Text
compute='_compute_string_qty_information'
help='Show various information on stock availability for this move'
readonly=True
args: 'Availability'
warehouse_id
Many2one → stock.warehouse
help='Technical field depicting the warehouse to consider for the route selection on the next procurement (if any).'
args: 'stock.warehouse', 'Warehouse'
action_assign_serial(self)
action_assign_serial_show_details(self)
action_clear_lines_show_details(self)
action_show_details(self)
create(self, vals_list)
default_get(self, fields_list)
init(self)
name_get(self)
onchange_date(self)
onchange_move_line_ids(self)
onchange_product(self)
onchange_product_id(self)
onchange_product_uom(self)
onchange_quantity(self)
unlink(self)
write(self, vals)
company_id
Many2one → res.company
index=True
readonly=True
required=True
string='Company'
args: 'res.company'
consume_line_ids
Many2many → stock.move.line
help='Technical link to see who consumed what. '
args: 'stock.move.line', 'stock_move_line_consume_rel', 'consume_line_id', 'produce_line_id'
date
Datetime
default=fields.Datetime.now
required=True
args: 'Date'
description_picking
Text
string='Description picking'
is_initial_demand_editable
Boolean
readonly=False
related='move_id.is_initial_demand_editable'
is_locked
Boolean
default=True
readonly=True
related='move_id.is_locked'
location_dest_id
Many2one → stock.location
check_company=True
required=True
args: 'stock.location', 'To'
location_id
Many2one → stock.location
check_company=True
required=True
args: 'stock.location', 'From'
lot_id
Many2one → stock.production.lot
check_company=True
domain="[('product_id', '=', product_id), ('company_id', '=', company_id)]"
args: 'stock.production.lot', 'Lot/Serial Number'
lot_name
Char
lots_visible
Boolean
compute='_compute_lots_visible'
move_id
Many2one → stock.move
check_company=True
help='Change to a better name'
index=True
args: 'stock.move', 'Stock Move'
origin
Char
related='move_id.origin'
string='Source'
owner_id
Many2one → res.partner
check_company=True
help='When validating the transfer, the products will be taken from this owner.'
args: 'res.partner', 'From Owner'
package_id
Many2one → stock.quant.package
check_company=True
domain="[('location_id', '=', location_id)]"
ondelete='restrict'
args: 'stock.quant.package', 'Source Package'
package_level_id
Many2one → stock.package_level
check_company=True
args: 'stock.package_level', 'Package Level'
picking_code
Selection
readonly=True
related='picking_id.picking_type_id.code'
picking_id
Many2one → stock.picking
auto_join=True
check_company=True
help='The stock operation where the packing has been made'
index=True
args: 'stock.picking', 'Stock Picking'
picking_type_entire_packs
Boolean
readonly=True
related='picking_id.picking_type_id.show_entire_packs'
picking_type_use_create_lots
Boolean
readonly=True
related='picking_id.picking_type_id.use_create_lots'
picking_type_use_existing_lots
Boolean
readonly=True
related='picking_id.picking_type_id.use_existing_lots'
produce_line_ids
Many2many → stock.move.line
help='Technical link to see which line was produced with this. '
args: 'stock.move.line', 'stock_move_line_consume_rel', 'produce_line_id', 'consume_line_id'
product_id
Many2one → product.product
check_company=True
domain="[('type', '!=', 'service'), '|', ('company_id', '=', False), ('company_id', '=', company_id)]"
index=True
ondelete='cascade'
args: 'product.product', 'Product'
product_qty
Float
compute='_compute_product_qty'
copy=False
digits=0
inverse='_set_product_qty'
store=True
args: 'Real Reserved Quantity'
product_uom_id
Many2one → uom.uom
required=True
args: 'uom.uom', 'Unit of Measure'
product_uom_qty
Float
copy=False
default=0.0
digits='Product Unit of Measure'
required=True
args: 'Reserved'
qty_done
Float
copy=False
default=0.0
digits='Product Unit of Measure'
args: 'Done'
reference
Char
readonly=False
related='move_id.reference'
related_sudo=False
store=True
result_package_id
Many2one → stock.quant.package
check_company=True
domain="['|', '|', ('location_id', '=', False), ('location_id', '=', location_dest_id), ('id', '=', package_id)]"
help='If set, the operations are packed into this package'
ondelete='restrict'
required=False
args: 'stock.quant.package', 'Destination Package'
state
Selection
related='move_id.state'
related_sudo=False
store=True
tracking
Selection
readonly=True
related='product_id.tracking'
check_reserved_done_quantity(self)
create(self, vals_list)
init(self)
onchange_product_id(self)
onchange_serial_number(self)
unlink(self)
write(self, vals)
overprocessed_product_name
Char
compute='_compute_overprocessed_product_name'
readonly=True
picking_id
Many2one → stock.picking
action_confirm(self)
filtered_location
One2many → stock.location
comodel_name='stock.location'
compute='_filter_location'
location_dest_id
Many2one → stock.location
required=True
args: 'stock.location', 'Destination location'
move_line_ids
Many2many → stock.move.line
compute='_compute_move_line_ids'
required=True
args: 'stock.move.line', 'Products'
picking_id
Many2one → stock.picking
required=True
args: 'stock.picking'
action_done(self)
company_id
Many2one → res.company
index=True
required=True
args: 'res.company', 'Company'
is_done
Boolean
compute='_compute_is_done'
inverse='_set_is_done'
args: 'Done'
is_fresh_package
Boolean
compute='_compute_fresh_pack'
location_dest_id
Many2one → stock.location
check_company=True
domain="[('id', 'child_of', parent.location_dest_id), '|', ('company_id', '=', False), ('company_id', '=', company_id)]"
args: 'stock.location', 'To'
location_id
Many2one → stock.location
check_company=True
compute='_compute_location_id'
args: 'stock.location', 'From'
move_ids
One2many → stock.move
move_line_ids
One2many → stock.move.line
package_id
Many2one → stock.quant.package
check_company=True
domain="[('location_id', 'child_of', parent.location_id), '|', ('company_id', '=', False), ('company_id', '=', company_id)]"
required=True
args: 'stock.quant.package', 'Package'
picking_id
Many2one → stock.picking
check_company=True
args: 'stock.picking', 'Picking'
picking_type_code
Selection
related='picking_id.picking_type_code'
show_lots_m2o
Boolean
compute='_compute_show_lot'
show_lots_text
Boolean
compute='_compute_show_lot'
state
Selection
compute='_compute_state'
string='State'
args: [('draft', 'Draft'), ('confirmed', 'Confirmed'), ('assigned', 'Reserved'), ('new', 'New'), ('done', 'Done'), ('cancel', 'Cancelled')]
action_show_package_details(self)
create(self, vals)
unlink(self)
write(self, vals)
backorder_id
Many2one → stock.picking
check_company=True
copy=False
help='If this shipment was split, then this field links to the shipment which contains the already processed part.'
index=True
readonly=True
args: 'stock.picking', 'Back Order of'
backorder_ids
One2many → stock.picking
company_id
Many2one → res.company
index=True
readonly=True
related='picking_type_id.company_id'
store=True
string='Company'
args: 'res.company'
date
Datetime
default=fields.Datetime.now
help='Creation Date, usually the time of the order'
index=True
states={'done': [('readonly', True)], 'cancel': [('readonly', True)]}
tracking=True
args: 'Creation Date'
date_done
Datetime
copy=False
help='Date at which the transfer has been processed or cancelled.'
readonly=True
args: 'Date of Transfer'
group_id
Many2one → procurement.group
readonly=True
related='move_lines.group_id'
store=True
args: 'procurement.group', 'Procurement Group'
has_packages
Boolean
compute='_compute_has_packages'
help='Check the existence of destination packages on move lines'
args: 'Has Packages'
has_scrap_move
Boolean
compute='_has_scrap_move'
args: 'Has Scrap Moves'
has_tracking
Boolean
compute='_compute_has_tracking'
immediate_transfer
Boolean
default=False
is_locked
Boolean
default=True
help='When the picking is not done this allows changing the initial demand. When the picking is done this allows changing the done quantities.'
location_dest_id
Many2one → stock.location
check_company=True
default=<expr>
readonly=True
required=True
states={'draft': [('readonly', False)]}
args: 'stock.location', 'Destination Location'
location_id
Many2one → stock.location
check_company=True
default=<expr>
readonly=True
required=True
states={'draft': [('readonly', False)]}
args: 'stock.location', 'Source Location'
move_ids_without_package
One2many → stock.move
compute='_compute_move_without_package'
inverse='_set_move_without_package'
string='Stock moves not in package'
args: 'stock.move', 'picking_id'
move_line_exist
Boolean
compute='_compute_move_line_exist'
help='Check the existence of pack operation on the picking'
args: 'Has Pack Operations'
move_line_ids
One2many → stock.move.line
move_line_ids_without_package
One2many → stock.move.line
domain=['|', ('package_level_id', '=', False), ('picking_type_entire_packs', '=', False)]
args: 'stock.move.line', 'picking_id', 'Operations without package'
move_line_nosuggest_ids
One2many → stock.move.line
domain=[('product_qty', '=', 0.0)]
args: 'stock.move.line', 'picking_id'
move_lines
One2many → stock.move
copy=True
string='Stock Moves'
args: 'stock.move', 'picking_id'
move_type
Selection
default='direct'
help='It specifies goods to be deliver partially or all at once'
required=True
states={'done': [('readonly', True)], 'cancel': [('readonly', True)]}
args: [('direct', 'As soon as possible'), ('one', 'When all products are ready')], 'Shipping Policy'
name
Char
copy=False
default='/'
index=True
readonly=True
args: 'Reference'
note
Text
origin
Char
help='Reference of the document'
index=True
states={'done': [('readonly', True)], 'cancel': [('readonly', True)]}
args: 'Source Document'
owner_id
Many2one → res.partner
check_company=True
help='When validating the transfer, the products will be assigned to this owner.'
states={'done': [('readonly', True)], 'cancel': [('readonly', True)]}
args: 'res.partner', 'Assign Owner'
package_level_ids
One2many → stock.package_level
package_level_ids_details
One2many → stock.package_level
partner_id
Many2one → res.partner
check_company=True
states={'done': [('readonly', True)], 'cancel': [('readonly', True)]}
args: 'res.partner', 'Contact'
picking_type_code
Selection
readonly=True
related='picking_type_id.code'
args: [('incoming', 'Vendors'), ('outgoing', 'Customers'), ('internal', 'Internal')]
picking_type_entire_packs
Boolean
readonly=True
related='picking_type_id.show_entire_packs'
picking_type_id
Many2one → stock.picking.type
readonly=True
required=True
states={'draft': [('readonly', False)]}
args: 'stock.picking.type', 'Operation Type'
printed
Boolean
copy=False
args: 'Printed'
priority
Selection
compute='_compute_priority'
help='Products will be reserved first for the transfers with the highest priorities.'
index=True
inverse='_set_priority'
states={'done': [('readonly', True)], 'cancel': [('readonly', True)]}
store=True
string='Priority'
tracking=True
args: PROCUREMENT_PRIORITIES
product_id
Many2one → product.product
readonly=True
related='move_lines.product_id'
args: 'product.product', 'Product'
scheduled_date
Datetime
compute='_compute_scheduled_date'
default=fields.Datetime.now
help='Scheduled time for the first part of the shipment to be processed. Setting manually a value here would set it as expected date for all the stock moves.'
index=True
inverse='_set_scheduled_date'
states={'done': [('readonly', True)], 'cancel': [('readonly', True)]}
store=True
tracking=True
args: 'Scheduled Date'
show_check_availability
Boolean
compute='_compute_show_check_availability'
help='Technical field used to compute whether the check availability button should be shown.'
show_lots_text
Boolean
compute='_compute_show_lots_text'
show_mark_as_todo
Boolean
compute='_compute_show_mark_as_todo'
help='Technical field used to compute whether the mark as todo button should be shown.'
show_operations
Boolean
compute='_compute_show_operations'
show_reserved
Boolean
related='picking_type_id.show_reserved'
show_validate
Boolean
compute='_compute_show_validate'
help='Technical field used to compute whether the validate should be shown.'
state
Selection
compute='_compute_state'
copy=False
help=' * Draft: The transfer is not confirmed yet. Reservation doesn\'t apply.\n * Waiting another operation: This transfer is waiting for another operation before being ready.\n * Waiting: The transfer is waiting for the availability of some products.\n(a) The shipping policy is "As soon as possible": no product could be reserved.\n(b) The shipping policy is "When all products are ready": not all the products could be reserved.\n * Ready: The transfer is ready to be processed.\n(a) The shipping policy is "As soon as possible": at least one product has been reserved.\n(b) The shipping policy is "When all products are ready": all product have been reserved.\n * Done: The transfer has been processed.\n * Cancelled: The transfer has been cancelled.'
index=True
readonly=True
store=True
string='Status'
tracking=True
args: [('draft', 'Draft'), ('waiting', 'Waiting Another Operation'), ('confirmed', 'Waiting'), ('assigned', 'Ready'), ('done', 'Done'), ('cancel', 'Cancelled')]
use_create_lots
Boolean
related='picking_type_id.use_create_lots'
user_id
Many2one → res.users
default=<expr>
domain=<expr>
states={'done': [('readonly', True)], 'cancel': [('readonly', True)]}
tracking=True
args: 'res.users', 'Responsible'
action_assign(self)
action_assign_partner(self)
action_cancel(self)
action_confirm(self)
action_done(self)
action_generate_backorder_wizard(self)
action_picking_move_tree(self)
action_see_move_scrap(self)
action_see_packages(self)
action_toggle_is_locked(self)
button_scrap(self)
button_validate(self)
create(self, vals)
do_print_picking(self)
do_unreserve(self)
onchange_partner_id(self)
onchange_picking_type(self)
put_in_pack(self)
unlink(self)
write(self, vals)
user_id
Many2one → res.users
default=<expr>
domain=<expr>
args: 'res.users', 'Responsible'
assign_responsible(self)
active
Boolean
default=True
args: 'Active'
barcode
Char
copy=False
args: 'Barcode'
code
Selection
required=True
args: [('incoming', 'Receipt'), ('outgoing', 'Delivery'), ('internal', 'Internal Transfer')], 'Type of Operation'
color
Integer
company_id
Many2one → res.company
default=<expr>
index=True
required=True
args: 'res.company', 'Company'
count_picking
Integer
compute='_compute_picking_count'
count_picking_backorders
Integer
compute='_compute_picking_count'
count_picking_draft
Integer
compute='_compute_picking_count'
count_picking_late
Integer
compute='_compute_picking_count'
count_picking_ready
Integer
compute='_compute_picking_count'
count_picking_waiting
Integer
compute='_compute_picking_count'
default_location_dest_id
Many2one → stock.location
check_company=True
help='This is the default destination location when you create a picking manually with this operation type. It is possible however to change it or that the routes put another location. If it is empty, it will check for the customer location on the partner. '
args: 'stock.location', 'Default Destination Location'
default_location_src_id
Many2one → stock.location
check_company=True
help='This is the default source location when you create a picking manually with this operation type. It is possible however to change it or that the routes put another location. If it is empty, it will check for the supplier location on the partner. '
args: 'stock.location', 'Default Source Location'
name
Char
required=True
translate=True
args: 'Operation Type'
rate_picking_backorders
Integer
compute='_compute_picking_count'
rate_picking_late
Integer
compute='_compute_picking_count'
return_picking_type_id
Many2one → stock.picking.type
check_company=True
args: 'stock.picking.type', 'Operation Type for Returns'
sequence
Integer
help="Used to order the 'All Operations' kanban view"
args: 'Sequence'
sequence_code
Char
required=True
args: 'Code'
sequence_id
Many2one → ir.sequence
check_company=True
copy=False
args: 'ir.sequence', 'Reference Sequence'
show_entire_packs
Boolean
help='If ticked, you will be able to select entire packages to move'
args: 'Move Entire Packages'
show_operations
Boolean
default=_default_show_operations
help='If this checkbox is ticked, the pickings lines will represent detailed stock operations. If not, the picking lines will represent an aggregate of detailed stock operations.'
args: 'Show Detailed Operations'
show_reserved
Boolean
default=True
help='If this checkbox is ticked, Odoo will automatically pre-fill the detailed operations with the corresponding products, locations and lot/serial numbers.'
args: 'Pre-fill Detailed Operations'
use_create_lots
Boolean
default=True
help='If this is checked only, it will suppose you want to create new Lots/Serial Numbers, so you can provide them in a text field. '
args: 'Create New Lots/Serial Numbers'
use_existing_lots
Boolean
default=True
help='If this is checked, you will be able to choose the Lots/Serial Numbers. You can also decide to not put lots in this operation type. This means it will create stock with no lot or not put a restriction on the lot taken. '
args: 'Use Existing Lots/Serial Numbers'
warehouse_id
Many2one → stock.warehouse
check_company=True
ondelete='cascade'
args: 'stock.warehouse', 'Warehouse'
create(self, vals)
get_action_picking_tree_backorder(self)
get_action_picking_tree_late(self)
get_action_picking_tree_ready(self)
get_action_picking_tree_waiting(self)
get_stock_picking_action_picking_type(self)
name_get(self)
write(self, vals)
company_id
Many2one → res.company
index=True
required=True
stored=True
args: 'res.company', 'Company'
display_complete
Boolean
compute='_compute_display_complete'
name
Char
default=<expr>
help='Unique Lot/Serial Number'
required=True
args: 'Lot/Serial Number'
note
Html
string='Description'
product_id
Many2one → product.product
check_company=True
domain=<expr>
required=True
args: 'product.product', 'Product'
product_qty
Float
compute='_product_qty'
args: 'Quantity'
product_uom_id
Many2one → uom.uom
readonly=False
related='product_id.uom_id'
store=True
args: 'uom.uom', 'Unit of Measure'
quant_ids
One2many → stock.quant
readonly=True
args: 'stock.quant', 'lot_id', 'Quants'
ref
Char
help="Internal reference number in case it differs from the manufacturer's lot/serial number"
args: 'Internal Reference'
action_lot_open_quants(self)
create(self, vals_list)
write(self, vals)
category_id
Many2one → product.category
default=_default_category_id
domain=_domain_category_id
ondelete='cascade'
args: 'product.category', 'Product Category'
company_id
Many2one → res.company
default=<expr>
index=True
required=True
args: 'res.company', 'Company'
location_in_id
Many2one → stock.location
check_company=True
default=_default_location_id
domain="[('child_ids', '!=', False), '|', ('company_id', '=', False), ('company_id', '=', company_id)]"
ondelete='cascade'
required=True
args: 'stock.location', 'When product arrives in'
location_out_id
Many2one → stock.location
check_company=True
domain="[('id', 'child_of', location_in_id), ('id', '!=', location_in_id), '|', ('company_id', '=', False), ('company_id', '=', company_id)]"
ondelete='cascade'
required=True
args: 'stock.location', 'Store to'
product_id
Many2one → product.product
check_company=True
default=_default_product_id
domain=_domain_product_id
ondelete='cascade'
args: 'product.product', 'Product'
sequence
Integer
help='Give to the more specialized category, a higher priority to have them in top of the list.'
args: 'Priority'
write(self, vals)
company_id
Many2one
readonly=True
related='location_id.company_id'
store=True
string='Company'
in_date
Datetime
readonly=True
args: 'Incoming Date'
inventory_quantity
Float
compute='_compute_inventory_quantity'
groups='stock.group_stock_manager'
inverse='_set_inventory_quantity'
args: 'Inventoried Quantity'
location_id
Many2one → stock.location
auto_join=True
check_company=True
domain=<expr>
index=True
ondelete='restrict'
readonly=True
required=True
args: 'stock.location', 'Location'
lot_id
Many2one → stock.production.lot
check_company=True
domain=<expr>
index=True
ondelete='restrict'
readonly=True
args: 'stock.production.lot', 'Lot/Serial Number'
on_hand
Boolean
search='_search_on_hand'
store=False
args: 'On Hand'
owner_id
Many2one → res.partner
check_company=True
help='This is the owner of the quant'
readonly=True
args: 'res.partner', 'Owner'
package_id
Many2one → stock.quant.package
check_company=True
domain="[('location_id', '=', location_id)]"
help='The package containing this quant'
ondelete='restrict'
readonly=True
args: 'stock.quant.package', 'Package'
product_id
Many2one → product.product
check_company=True
domain=<expr>
index=True
ondelete='restrict'
readonly=True
required=True
args: 'product.product', 'Product'
product_tmpl_id
Many2one → product.template
readonly=False
related='product_id.product_tmpl_id'
string='Product Template'
args: 'product.template'
product_uom_id
Many2one → uom.uom
readonly=True
related='product_id.uom_id'
args: 'uom.uom', 'Unit of Measure'
quantity
Float
help='Quantity of products in this quant, in the default unit of measure of the product'
readonly=True
args: 'Quantity'
reserved_quantity
Float
default=0.0
help='Quantity of reserved products in this quant, in the default unit of measure of the product'
readonly=True
required=True
args: 'Reserved Quantity'
tracking
Selection
readonly=True
related='product_id.tracking'
action_view_quants(self)
action_view_stock_moves(self)
check_location_id(self)
check_product_id(self)
check_quantity(self)
create(self, vals)
read_group(self, domain, fields, groupby, offset=0, limit=None, orderby=False, lazy=True)
write(self, vals)
company_id
Many2one → res.company
compute='_compute_package_info'
index=True
readonly=True
store=True
args: 'res.company', 'Company'
location_id
Many2one → stock.location
compute='_compute_package_info'
index=True
readonly=True
store=True
args: 'stock.location', 'Location'
name
Char
copy=False
default=<expr>
index=True
args: 'Package Reference'
owner_id
Many2one → res.partner
compute='_compute_package_info'
compute_sudo=True
index=True
readonly=True
search='_search_owner'
args: 'res.partner', 'Owner'
packaging_id
Many2one → product.packaging
check_company=True
index=True
args: 'product.packaging', 'Package Type'
quant_ids
One2many → stock.quant
domain=['|', ('quantity', '!=', 0), ('reserved_quantity', '!=', 0)]
readonly=True
args: 'stock.quant', 'package_id', 'Bulk Content'
action_view_picking(self)
name_get(self)
unpack(self)
view_content_package(self)
inventory_datetime
Datetime
default=fields.Datetime.now
help='Choose a date to get the inventory at that date'
args: 'Inventory at Date'
open_at_date(self)
company_id
Many2one
related='picking_id.company_id'
location_id
Many2one → stock.location
domain="['|', ('id', '=', original_location_id), '|', '&', ('return_location', '=', True), ('company_id', '=', False), '&', ('return_location', '=', True), ('company_id', '=', company_id)]"
args: 'stock.location', 'Return Location'
move_dest_exists
Boolean
readonly=True
args: 'Chained Move Exists'
original_location_id
Many2one → stock.location
parent_location_id
Many2one → stock.location
picking_id
Many2one → stock.picking
product_return_moves
One2many → stock.return.picking.line
create_returns(self)
default_get(self, fields)
move_id
Many2one → stock.move
product_id
Many2one → product.product
domain="[('id', '=', product_id)]"
required=True
string='Product'
args: 'product.product'
quantity
Float
digits='Product Unit of Measure'
required=True
args: 'Quantity'
uom_id
Many2one → uom.uom
related='product_id.uom_id'
string='Unit of Measure'
args: 'uom.uom'
wizard_id
Many2one → stock.return.picking
string='Wizard'
args: 'stock.return.picking'
No public methods.
action
Selection
required=True
selection=[('pull', 'Pull From'), ('push', 'Push To'), ('pull_push', 'Pull & Push')]
string='Action'
active
Boolean
default=True
help='If unchecked, it will allow you to hide the rule without removing it.'
args: 'Active'
auto
Selection
default='manual'
help="The 'Manual Operation' value will create a stock move after the current one. With 'Automatic No Step Added', the location is replaced in the original move."
index=True
required=True
string='Automatic Move'
args: [('manual', 'Manual Operation'), ('transparent', 'Automatic No Step Added')]
company_id
Many2one → res.company
default=<expr>
args: 'res.company', 'Company'
delay
Integer
default=0
help='The expected date of the created transfer will be computed based on this delay.'
args: 'Delay'
delay_alert
Boolean
help='Log an exception on the picking if this move has to be delayed (due to a change in the previous move scheduled date).'
args: 'Alert if Delay'
group_id
Many2one → procurement.group
group_propagation_option
Selection
default='propagate'
string='Propagation of Procurement Group'
args: [('none', 'Leave Empty'), ('propagate', 'Propagate'), ('fixed', 'Fixed')]
location_id
Many2one → stock.location
check_company=True
required=True
args: 'stock.location', 'Destination Location'
location_src_id
Many2one → stock.location
check_company=True
args: 'stock.location', 'Source Location'
name
Char
help='This field will fill the packing origin and the name of its moves'
required=True
translate=True
args: 'Name'
partner_address_id
Many2one → res.partner
check_company=True
help='Address where goods should be delivered. Optional.'
args: 'res.partner', 'Partner Address'
picking_type_id
Many2one → stock.picking.type
check_company=True
required=True
args: 'stock.picking.type', 'Operation Type'
procure_method
Selection
default='make_to_stock'
help='Take From Stock: the products will be taken from the available stock of the source location.\nTrigger Another Rule: the system will try to find a stock rule to bring the products in the source location. The available stock will be ignored.\nTake From Stock, if Unavailable, Trigger Another Rule: the products will be taken from the available stock of the source location.If there is no stock available, the system will try to find a rule to bring the products in the source location.'
required=True
string='Supply Method'
args: [('make_to_stock', 'Take From Stock'), ('make_to_order', 'Trigger Another Rule'), ('mts_else_mto', 'Take From Stock, if unavailable, Trigger Another Rule')]
propagate_cancel
Boolean
default=False
help='When ticked, if the move created by this rule is cancelled, the next move will be cancelled too.'
args: 'Cancel Next Move'
propagate_date
Boolean
default=True
help='The rescheduling is propagated to the next move.'
string='Propagate Rescheduling'
propagate_date_minimum_delta
Integer
default=1
help='The change must be higher than this value to be propagated'
string='Reschedule if Higher Than'
propagate_warehouse_id
Many2one → stock.warehouse
help='The warehouse to propagate on the created move/procurement, which can be different of the warehouse this rule is for (e.g for resupplying rules from another warehouse)'
args: 'stock.warehouse', 'Warehouse to Propagate'
route_id
Many2one → stock.location.route
ondelete='cascade'
required=True
args: 'stock.location.route', 'Route'
route_sequence
Integer
compute_sudo=True
readonly=False
related='route_id.sequence'
store=True
args: 'Route Sequence'
rule_message
Html
compute='_compute_action_message'
sequence
Integer
default=20
args: 'Sequence'
warehouse_id
Many2one → stock.warehouse
check_company=True
args: 'stock.warehouse', 'Warehouse'
default_get(self, fields_list)
product_has_variants
Boolean
default=False
required=True
args: 'Has variants'
product_id
Many2one → product.product
required=True
string='Product'
args: 'product.product'
product_tmpl_id
Many2one → product.template
required=True
string='Product Template'
args: 'product.template'
warehouse_ids
Many2many → stock.warehouse
help='Show the routes that apply on selected warehouses.'
required=True
string='Warehouses'
args: 'stock.warehouse'
default_get(self, fields)
print_report(self)
No new fields.
Public methods (1)procure_calculation(self)
company_id
Many2one → res.company
default=<expr>
required=True
states={'done': [('readonly', True)]}
string='Company'
args: 'res.company'
date_done
Datetime
readonly=True
args: 'Date'
location_id
Many2one → stock.location
check_company=True
default=_get_default_location_id
domain="[('usage', '=', 'internal'), ('company_id', 'in', [company_id, False])]"
required=True
states={'done': [('readonly', True)]}
args: 'stock.location', 'Source Location'
lot_id
Many2one → stock.production.lot
check_company=True
domain="[('product_id', '=', product_id), ('company_id', '=', company_id)]"
states={'done': [('readonly', True)]}
args: 'stock.production.lot', 'Lot/Serial'
move_id
Many2one → stock.move
check_company=True
readonly=True
args: 'stock.move', 'Scrap Move'
name
Char
copy=False
default=<expr>
readonly=True
required=True
states={'done': [('readonly', True)]}
args: 'Reference'
origin
Char
string='Source Document'
owner_id
Many2one → res.partner
check_company=True
states={'done': [('readonly', True)]}
args: 'res.partner', 'Owner'
package_id
Many2one → stock.quant.package
check_company=True
states={'done': [('readonly', True)]}
args: 'stock.quant.package', 'Package'
picking_id
Many2one → stock.picking
check_company=True
states={'done': [('readonly', True)]}
args: 'stock.picking', 'Picking'
product_id
Many2one → product.product
check_company=True
domain="[('type', 'in', ['product', 'consu']), '|', ('company_id', '=', False), ('company_id', '=', company_id)]"
required=True
states={'done': [('readonly', True)]}
args: 'product.product', 'Product'
product_uom_category_id
Many2one
related='product_id.uom_id.category_id'
product_uom_id
Many2one → uom.uom
domain="[('category_id', '=', product_uom_category_id)]"
required=True
states={'done': [('readonly', True)]}
args: 'uom.uom', 'Unit of Measure'
scrap_location_id
Many2one → stock.location
check_company=True
default=_get_default_scrap_location_id
domain="[('scrap_location', '=', True), ('company_id', 'in', [company_id, False])]"
required=True
states={'done': [('readonly', True)]}
args: 'stock.location', 'Scrap Location'
scrap_qty
Float
default=1.0
digits='Product Unit of Measure'
required=True
states={'done': [('readonly', True)]}
args: 'Quantity'
state
Selection
default='draft'
readonly=True
string='Status'
tracking=True
args: [('draft', 'Draft'), ('done', 'Done')]
tracking
Selection
readonly=True
related='product_id.tracking'
args: 'Product Tracking'
action_get_stock_move_lines(self)
action_get_stock_picking(self)
action_validate(self)
do_scrap(self)
unlink(self)
No new fields.
Public methods (4)get_html(self, given_context=None)
get_lines(self, line_id=None, **kw)
get_pdf(self, line_data=[])
get_pdf_lines(self, line_data=[])
inventory_id
Many2one → stock.inventory
tracking_line_ids
One2many → stock.track.line
action_confirm(self)
product_id
Many2one → product.product
readonly=True
args: 'product.product', 'Product'
tracking
Selection
readonly=True
args: [('lot', 'Tracked by lot'), ('serial', 'Tracked by serial number')]
wizard_id
Many2one → stock.track.confirmation
readonly=True
args: 'stock.track.confirmation'
No public methods.
active
Boolean
default=True
args: 'Active'
code
Char
help='Short name used to identify your warehouse'
required=True
size=5
args: 'Short Name'
company_id
Many2one → res.company
default=<expr>
help='The company is automatically set from your user preferences.'
index=True
readonly=True
required=True
args: 'res.company', 'Company'
crossdock_route_id
Many2one → stock.location.route
ondelete='restrict'
args: 'stock.location.route', 'Crossdock Route'
delivery_route_id
Many2one → stock.location.route
ondelete='restrict'
args: 'stock.location.route', 'Delivery Route'
delivery_steps
Selection
default='ship_only'
help='Default outgoing route to follow'
required=True
args: [('ship_only', 'Deliver goods directly (1 step)'), ('pick_ship', 'Send goods in output and then deliver (2 steps)'), ('pick_pack_ship', 'Pack goods, send goods in output and then deliver (3 steps)')], 'Outgoing Shipments'
in_type_id
Many2one → stock.picking.type
check_company=True
args: 'stock.picking.type', 'In Type'
int_type_id
Many2one → stock.picking.type
check_company=True
args: 'stock.picking.type', 'Internal Type'
lot_stock_id
Many2one → stock.location
check_company=True
domain="[('usage', '=', 'internal'), ('company_id', '=', company_id)]"
required=True
args: 'stock.location', 'Location Stock'
mto_pull_id
Many2one → stock.rule
name
Char
default=<expr>
index=True
required=True
args: 'Warehouse'
out_type_id
Many2one → stock.picking.type
check_company=True
args: 'stock.picking.type', 'Out Type'
pack_type_id
Many2one → stock.picking.type
check_company=True
args: 'stock.picking.type', 'Pack Type'
partner_id
Many2one → res.partner
check_company=True
default=<expr>
args: 'res.partner', 'Address'
pick_type_id
Many2one → stock.picking.type
check_company=True
args: 'stock.picking.type', 'Pick Type'
reception_route_id
Many2one → stock.location.route
ondelete='restrict'
args: 'stock.location.route', 'Receipt Route'
reception_steps
Selection
default='one_step'
help='Default incoming route to follow'
required=True
args: [('one_step', 'Receive goods directly (1 step)'), ('two_steps', 'Receive goods in input and then stock (2 steps)'), ('three_steps', 'Receive goods in input, then quality and then stock (3 steps)')], 'Incoming Shipments'
resupply_route_ids
One2many → stock.location.route
help='Routes will be created for these resupply warehouses and you can select them on products and product categories'
args: 'stock.location.route', 'supplied_wh_id', 'Resupply Routes'
resupply_wh_ids
Many2many → stock.warehouse
help='Routes will be created automatically to resupply this warehouse from the warehouses ticked'
args: 'stock.warehouse', 'stock_wh_resupply_table', 'supplied_wh_id', 'supplier_wh_id', 'Resupply From'
route_ids
Many2many → stock.location.route
check_company=True
domain="[('warehouse_selectable', '=', True), '|', ('company_id', '=', False), ('company_id', '=', company_id)]"
help='Defaults routes through the warehouse'
args: 'stock.location.route', 'stock_route_warehouse', 'warehouse_id', 'route_id', 'Routes'
sequence
Integer
default=10
help='Gives the sequence of this line when displaying the warehouses.'
show_resupply
Boolean
compute='_compute_show_resupply'
view_location_id
Many2one → stock.location
check_company=True
domain="[('usage', '=', 'view'), ('company_id', '=', company_id)]"
required=True
args: 'stock.location', 'View Location'
warehouse_count
Integer
compute='_compute_warehouse_count'
wh_input_stock_loc_id
Many2one → stock.location
check_company=True
args: 'stock.location', 'Input Location'
wh_output_stock_loc_id
Many2one → stock.location
check_company=True
args: 'stock.location', 'Output Location'
wh_pack_stock_loc_id
Many2one → stock.location
check_company=True
args: 'stock.location', 'Packing Location'
wh_qc_stock_loc_id
Many2one → stock.location
check_company=True
args: 'stock.location', 'Quality Control Location'
action_view_all_routes(self)
create(self, vals)
create_resupply_routes(self, supplier_warehouses)
get_rules_dict(self)
write(self, vals)
active
Boolean
default=True
help='If the active field is set to False, it will allow you to hide the orderpoint without removing it.'
args: 'Active'
allowed_location_ids
One2many → stock.location
comodel_name='stock.location'
compute='_compute_allowed_location_ids'
company_id
Many2one → res.company
default=<expr>
index=True
required=True
args: 'res.company', 'Company'
group_id
Many2one → procurement.group
copy=False
help='Moves created through this orderpoint will be put in this procurement group. If none is given, the moves generated by stock rules will be grouped into one big picking.'
args: 'procurement.group', 'Procurement Group'
lead_days
Integer
default=1
help='Number of days after the orderpoint is triggered to receive the products or to order to the vendor'
args: 'Lead Time'
lead_type
Selection
default='supplier'
required=True
args: [('net', 'Days to get the products'), ('supplier', 'Days to purchase')], 'Lead Type'
location_id
Many2one → stock.location
check_company=True
ondelete='cascade'
required=True
args: 'stock.location', 'Location'
name
Char
copy=False
default=<expr>
readonly=True
required=True
args: 'Name'
product_id
Many2one → product.product
check_company=True
domain="[('type', '=', 'product'), '|', ('company_id', '=', False), ('company_id', '=', company_id)]"
ondelete='cascade'
required=True
args: 'product.product', 'Product'
product_max_qty
Float
digits='Product Unit of Measure'
help='When the virtual stock goes below the Min Quantity, Odoo generates a procurement to bring the forecasted quantity to the Quantity specified as Max Quantity.'
required=True
args: 'Maximum Quantity'
product_min_qty
Float
digits='Product Unit of Measure'
help='When the virtual stock equals to or goes below the Min Quantity specified for this field, Odoo generates a procurement to bring the forecasted quantity to the Max Quantity.'
required=True
args: 'Minimum Quantity'
product_uom
Many2one → uom.uom
default=<expr>
readonly=True
related='product_id.uom_id'
required=True
args: 'uom.uom', 'Unit of Measure'
product_uom_name
Char
readonly=True
related='product_uom.display_name'
string='Product unit of measure label'
qty_multiple
Float
default=1
digits='Product Unit of Measure'
help='The procurement quantity will be rounded up to this multiple. If it is 0, the exact quantity will be used.'
required=True
args: 'Qty Multiple'
warehouse_id
Many2one → stock.warehouse
check_company=True
ondelete='cascade'
required=True
args: 'stock.warehouse', 'Warehouse'
create(self, vals)
default_get(self, fields)
onchange_warehouse_id(self)
write(self, vals)
location_id
Many2one → stock.location
domain="[('usage', '=', 'internal')]"
required=True
args: 'stock.location', 'Location'
product_id
Many2one → product.product
required=True
args: 'product.product', 'Product'
quant_ids
Many2many → stock.quant
compute='_compute_quant_ids'
args: 'stock.quant'
action_done(self)
scrap_id
Many2one → stock.scrap
action_cancel(self)
action_done(self)
No new fields.
Public methods (1)write(self, values)
| XML ID | Name | Model | Type | Status |
|---|---|---|---|---|
assets_common |
report_stock_rule assets | ir.ui.view | qweb | Inherits web.report_assets_common |
assets_common |
stock_location_barcodes pdf assets | ir.ui.view | qweb | Inherits web.report_assets_common |
assets_stock_print_report |
assets_stock_print_report | ir.ui.view | qweb | Inherits web.assets_common |
exception_on_picking |
exception_on_picking | ir.ui.view | qweb | New |
message_body |
message_body | ir.ui.view | qweb | New |
message_head |
message_head | ir.ui.view | qweb | New |
package_level_form_view |
Package Level | stock.package_level | form | New |
package_level_tree_view_picking |
Package Level Tree Picking | stock.package_level | tree | New |
procurement_group_form_view |
procurement.group.form | procurement.group | form | New |
product_category_form_view_inherit |
product.category.form | product.category | group | Inherits product.product_category_form_view |
product_form_view_procurement_button |
product.product.procurement | product.product | data | Inherits product.product_normal_form_view |
product_product_view_form_easy_inherit_stock |
product.product.view.form.easy.inherit.stock | product.product | sheet | Inherits product.product_variant_easy_edit_view |
product_search_form_view_stock |
product.search.stock.form | product.product | field | Inherits product.product_search_form_view |
product_template_form_view_procurement_button |
product.template_procurement | product.template | data | Inherits product.product_template_only_form_view |
product_template_kanban_stock_view |
Product Template Kanban Stock | product.template | field | Inherits product.product_template_kanban_view |
product_template_search_form_view_stock |
product.template.search.stock.form | product.template | xpath | Inherits product.product_template_search_view |
quant_package_search_view |
stock.quant.package.search | stock.quant.package | search | New |
quant_search_view |
stock.quant.search | stock.quant | search | New |
report_delivery_document |
report_delivery_document | ir.ui.view | qweb | New |
report_deliveryslip |
report_deliveryslip | ir.ui.view | qweb | New |
report_inventory |
report_inventory | ir.ui.view | qweb | New |
report_location_barcode |
report_location_barcode | ir.ui.view | qweb | New |
report_lot_label |
report_lot_label | ir.ui.view | qweb | New |
report_mrp_line |
report_mrp_line | ir.ui.view | qweb | New |
report_package_barcode |
report_package_barcode | ir.ui.view | qweb | New |
report_package_barcode_small |
report_package_barcode_small | ir.ui.view | qweb | New |
report_picking |
report_picking | ir.ui.view | qweb | New |
report_picking_type_label |
report_picking_type_label | ir.ui.view | qweb | New |
report_stock_body_print |
report_stock_body_print | ir.ui.view | qweb | New |
report_stock_inventory |
report_stock_inventory | ir.ui.view | qweb | New |
report_stock_inventory_print |
report_stock_inventory_print | ir.ui.view | qweb | New |
report_stock_rule |
report_stock_rule | ir.ui.view | qweb | New |
report_stock_rule_left_arrow |
report_stock_rule_left_arrow | ir.ui.view | qweb | New |
report_stock_rule_line |
report_stock_rule_line | ir.ui.view | qweb | New |
report_stock_rule_right_arrow |
report_stock_rule_right_arrow | ir.ui.view | qweb | New |
report_stock_rule_suspension_points |
report_stock_rule_suspension_points | ir.ui.view | qweb | New |
res_config_settings_view_form |
res.config.settings.view.form.inherit.stock | res.config.settings | xpath | Inherits base.res_config_settings_view_form |
search_product_lot_filter |
Production Lots Filter | stock.production.lot | search | New |
stock_assets_backend |
mrp_workorder assets | ir.ui.view | qweb | Inherits web.assets_backend |
stock_fixed_putaway_strat_form |
stock.fixed.putaway.strat.form | stock.fixed.putaway.strat | form | New |
stock_inventory_line_search |
stock.inventory.line.search | stock.inventory.line | search | New |
stock_inventory_line_tree |
stock.inventory.line.tree | stock.inventory.line | tree | New |
stock_inventory_line_tree2 |
stock.inventory.line.tree2 | stock.inventory.line | tree | New |
stock_location_route_form_view |
stock.location.route.form | stock.location.route | form | New |
stock_location_route_tree |
stock.location.route.tree | stock.location.route | tree | New |
stock_location_route_view_search |
stock.location.route.search | stock.location.route | search | New |
stock_location_view_form_editable |
stock.location.form.editable | stock.location | xpath | Inherits stock.view_location_form |
stock_location_view_tree2_editable |
stock.location.tree2.editable | stock.location | xpath | Inherits stock.view_location_tree2 |
stock_move_line_view_search |
stock.move.line.search | stock.move.line | search | New |
stock_move_tree |
Stock Moves | stock.move | tree | New |
stock_move_view_kanban |
stock.move.kanban2 | stock.move | kanban | New |
stock_package_destination_form_view |
stock.package.destination.view | stock.package.destination | form | New |
stock_picking_calendar |
stock.picking.calendar | stock.picking | calendar | New |
stock_picking_kanban |
stock.picking.kanban | stock.picking | kanban | New |
stock_picking_type_kanban |
stock.picking.type.kanban | stock.picking.type | kanban | New |
stock_product_search_form_view |
product.product.search.stock.form | product.product | xpath | Inherits product.product_search_form_view |
stock_quant_view_graph |
stock.quant.graph | stock.quant | graph | New |
stock_scrap_form_view |
stock.scrap.form | stock.scrap | form | New |
stock_scrap_form_view2 |
stock.scrap.form2 | stock.scrap | form | New |
stock_scrap_search_view |
stock.scrap.search | stock.scrap | search | New |
stock_scrap_tree_view |
stock.scrap.tree | stock.scrap | tree | New |
stock_scrap_view_kanban |
stock.scrap.kanban | stock.scrap | kanban | New |
stock_warehouse_view_form_editable |
stock.warehouse.form.editable | stock.warehouse | xpath | Inherits stock.view_warehouse |
stock_warehouse_view_search |
stock.warehouse.search | stock.warehouse | search | New |
stock_warehouse_view_tree_editable |
stock.warehouse.tree.editable | stock.warehouse | xpath | Inherits stock.view_warehouse_tree |
stock_warn_insufficient_qty_form_view |
stock.warn.insufficient.qty | stock.warn.insufficient.qty | form | New |
stock_warn_insufficient_qty_scrap_form_view |
stock.warn.insufficient.qty.scrap | stock.warn.insufficient.qty.scrap | xpath | Inherits stock.stock_warn_insufficient_qty_form_view |
track_move_template |
track_move_template | ir.ui.view | qweb | New |
view_backorder_confirmation |
stock_backorder_confirmation | stock.backorder.confirmation | form | New |
view_change_product_quantity |
Change Product Quantity | stock.change.product.qty | form | New |
view_immediate_transfer |
stock.immediate.transfer.view.form | stock.immediate.transfer | form | New |
view_inventory_filter |
stock.inventory.filter | stock.inventory | search | New |
view_inventory_form |
stock.inventory.form | stock.inventory | form | New |
view_inventory_tree |
stock.inventory.tree | stock.inventory | tree | New |
view_location_form |
stock.location.form | stock.location | form | New |
view_location_search |
stock.location.search | stock.location | search | New |
view_location_tree2 |
stock.location.tree | stock.location | tree | New |
view_move_form |
stock.move.form | stock.move | form | New |
view_move_graph |
stock.move.graph | stock.move | graph | New |
view_move_kandan |
stock.move.kanban | stock.move | kanban | New |
view_move_line_form |
stock.move.line.form | stock.move.line | form | New |
view_move_line_tree |
stock.move.line.tree | stock.move.line | tree | New |
view_move_picking_form |
stock.move.form | stock.move | form | New |
view_move_picking_tree |
stock.move.tree | stock.move | tree | New |
view_move_pivot |
stock.move.pivot | stock.move | pivot | New |
view_move_search |
stock.move.search | stock.move | search | New |
view_move_tree |
stock.move.tree | stock.move | tree | New |
view_move_tree_receipt_picking |
stock.move.tree2 | stock.move | tree | New |
view_move_tree_receipt_picking_board |
stock.move.tree3 | stock.move | tree | New |
view_overprocessed_transfer |
stock.overprocessed.transfer.view.form | stock.overprocessed.transfer | form | New |
view_partner_stock_form |
res.partner.stock.property.form.inherit | res.partner | xpath | Inherits mail.res_partner_view_form_inherit_mail |
view_partner_stock_warnings_form |
res.partner.stock.warning | res.partner | page | Inherits base.view_partner_form |
view_picking_form |
stock.picking.form | stock.picking | form | New |
view_picking_internal_search |
stock.picking.internal.search | stock.picking | search | New |
view_picking_move_tree |
stock.picking.move.tree | stock.move | tree | New |
view_picking_type_form |
Operation Types | stock.picking.type | form | New |
view_picking_type_list |
stock.picking.type.list | stock.picking.type | tree | New |
view_picking_type_tree |
Operation types | stock.picking.type | tree | New |
view_pickingtype_filter |
stock.picking.type.filter | stock.picking.type | search | New |
view_procurement_compute_wizard |
Run Schedulers Manually | stock.scheduler.compute | form | New |
view_product_replenish |
Replenish | product.replenish | form | New |
view_production_lot_form |
stock.production.lot.form | stock.production.lot | form | New |
view_production_lot_form_simple |
stock.production.lot.form.simple | stock.production.lot | form | New |
view_production_lot_tree |
stock.production.lot.tree | stock.production.lot | tree | New |
view_putaway |
product.putaway.form | product.putaway | form | New |
view_quant_package_form |
stock.quant.package.form | stock.quant.package | form | New |
view_quant_package_kanban |
stock.quant.package.kanban | stock.quant.package | kanban | New |
view_quant_package_tree |
stock.quant.package.tree | stock.quant.package | tree | New |
view_removal |
product.removal.form | product.removal | form | New |
view_route_rule_form |
stock.rule.form | stock.rule | xpath | Inherits stock.view_stock_rule_form |
view_stock_inventory_kanban |
stock.inventory.kanban | stock.inventory | kanban | New |
view_stock_level_forecast_filter |
view.stock.level.forecast.filter | report.stock.forecast | search | New |
view_stock_level_forecast_graph |
Stock.forecast.graph | report.stock.forecast | graph | New |
view_stock_level_forecast_pivot |
Stock.forecast.pivot | report.stock.forecast | pivot | New |
view_stock_move_kanban |
stock.move.kanban | stock.move | kanban | New |
view_stock_move_line_kanban |
stock.move.line.kanban | stock.move.line | kanban | New |
view_stock_move_line_operation_tree |
stock.move.line.operations.tree | stock.move.line | tree | New |
view_stock_move_nosuggest_operations |
stock.move.operations.nosuggest.form | stock.move | field | Inherits stock.view_stock_move_operations |
view_stock_move_operations |
stock.move.operations.form | stock.move | form | New |
view_stock_product_template_tree |
product.template.stock.tree.inherit | product.template | tree | Inherits product.product_template_tree_view |
view_stock_product_tree |
product.stock.tree.inherit | product.product | tree | Inherits product.product_product_tree_view |
view_stock_quant_form |
stock.quant.form | stock.quant | form | New |
view_stock_quant_pivot |
stock.quant.pivot | stock.quant | pivot | New |
view_stock_quant_tree |
stock.quant.tree | stock.quant | tree | New |
view_stock_quantity_history |
Inventory Report | stock.quantity.history | form | New |
view_stock_return_picking_form |
Return lines | stock.return.picking | form | New |
view_stock_rule_filter |
stock.rule.select | stock.rule | search | New |
view_stock_rule_form |
stock.rule.form | stock.rule | form | New |
view_stock_rule_tree |
stock.rule.tree | stock.rule | tree | New |
view_stock_rules_report |
Stock Rules Report | stock.rules.report | form | New |
view_stock_track_confirmation |
stock.track.confirmation.view.form | stock.track.confirmation | form | New |
view_stock_warehouse_orderpoint_kanban |
stock.warehouse.orderpoint.kanban | stock.warehouse.orderpoint | kanban | New |
view_template_property_form |
product.template.stock.property.form.inherit | product.template | xpath | Inherits product.product_template_form_view |
view_warehouse |
stock.warehouse | stock.warehouse | form | New |
view_warehouse_orderpoint_form |
stock.warehouse.orderpoint.form | stock.warehouse.orderpoint | form | New |
view_warehouse_orderpoint_tree |
stock.warehouse.orderpoint.tree | stock.warehouse.orderpoint | tree | New |
view_warehouse_tree |
stock.warehouse.tree | stock.warehouse | tree | New |
vpicktree |
stock.picking.tree | stock.picking | tree | New |
warehouse_orderpoint_search |
stock.warehouse.orderpoint.search | stock.warehouse.orderpoint | search | New |
type
Selection
selection_add=[('weight', 'Weighted Product'), ('location', 'Location'), ('lot', 'Lot'), ('package', 'Package')]
No public methods.
move_type
Selection
default='direct'
required=True
string='Delivery Type'
args: [('direct', 'Partial'), ('one', 'All at once')]
name
Char
default=<expr>
required=True
args: 'Reference'
partner_id
Many2one → res.partner
run(self, product_id, product_qty, product_uom, location_id, name, origin, values)
run_scheduler(self, use_new_cursor=False, company_id=False)
removal_strategy_id
Many2one → product.removal
help='Set a specific removal strategy that will be used regardless of the source location for this product category'
args: 'product.removal', 'Force Removal Strategy'
route_ids
Many2many → stock.location.route
domain=[('product_categ_selectable', '=', True)]
args: 'stock.location.route', 'stock_location_route_categ', 'categ_id', 'route_id', 'Routes'
total_route_ids
Many2many → stock.location.route
compute='_compute_total_route_ids'
readonly=True
string='Total routes'
args: 'stock.location.route'
No public methods.
incoming_qty
Float
compute='_compute_quantities'
digits=dp.get_precision('Product Unit of Measure')
help="Quantity of planned incoming products.\nIn a context with a single Stock Location, this includes goods arriving to this Location, or any of its children.\nIn a context with a single Warehouse, this includes goods arriving to the Stock Location of this Warehouse, or any of its children.\nOtherwise, this includes goods arriving to any Stock Location with 'internal' type."
search='_search_incoming_qty'
args: 'Incoming'
nbr_reordering_rules
Integer
compute='_compute_nbr_reordering_rules'
args: 'Reordering Rules'
orderpoint_ids
One2many → stock.warehouse.orderpoint
outgoing_qty
Float
compute='_compute_quantities'
digits=dp.get_precision('Product Unit of Measure')
help="Quantity of planned outgoing products.\nIn a context with a single Stock Location, this includes goods leaving this Location, or any of its children.\nIn a context with a single Warehouse, this includes goods leaving the Stock Location of this Warehouse, or any of its children.\nOtherwise, this includes goods leaving any Stock Location with 'internal' type."
search='_search_outgoing_qty'
args: 'Outgoing'
qty_available
Float
compute='_compute_quantities'
digits=dp.get_precision('Product Unit of Measure')
help="Current quantity of products.\nIn a context with a single Stock Location, this includes goods stored at this Location, or any of its children.\nIn a context with a single Warehouse, this includes goods stored in the Stock Location of this Warehouse, or any of its children.\nstored in the Stock Location of the Warehouse of this Shop, or any of its children.\nOtherwise, this includes goods stored in any Stock Location with 'internal' type."
search='_search_qty_available'
args: 'Quantity On Hand'
reordering_max_qty
Float
compute='_compute_nbr_reordering_rules'
reordering_min_qty
Float
compute='_compute_nbr_reordering_rules'
stock_move_ids
One2many → stock.move
help='Technical: used to compute quantities.'
args: 'stock.move', 'product_id'
stock_quant_ids
One2many → stock.quant
help='Technical: used to compute quantities.'
args: 'stock.quant', 'product_id'
virtual_available
Float
compute='_compute_quantities'
digits=dp.get_precision('Product Unit of Measure')
help="Forecast quantity (computed as Quantity On Hand - Outgoing + Incoming)\nIn a context with a single Stock Location, this includes goods stored in this location, or any of its children.\nIn a context with a single Warehouse, this includes goods stored in the Stock Location of this Warehouse, or any of its children.\nOtherwise, this includes goods stored in any Stock Location with 'internal' type."
search='_search_virtual_available'
args: 'Forecast Quantity'
action_open_product_lot(self)
action_open_quants(self)
action_update_quantity_on_hand(self)
action_view_routes(self)
action_view_stock_move_lines(self)
fields_view_get(self, view_id=None, view_type='form', toolbar=False, submenu=False)
get_theoretical_quantity(self, product_id, location_id, lot_id=None, package_id=None, owner_id=None, to_uom=None)
onchange_tracking(self)
view_header_get(self, view_id, view_type)
write(self, values)
fixed_location_ids
One2many → stock.fixed.putaway.strat
copy=True
domain=[('category_id', '!=', False)]
args: 'stock.fixed.putaway.strat', 'putaway_id', 'Fixed Locations Per Product Category'
name
Char
required=True
args: 'Name'
product_location_ids
One2many → stock.fixed.putaway.strat
copy=True
domain=[('product_id', '!=', False)]
args: 'stock.fixed.putaway.strat', 'putaway_id', 'Fixed Locations Per Product'
putaway_apply(self, product)
method
Char
help='FIFO, LIFO...'
required=True
args: 'Method'
name
Char
required=True
args: 'Name'
No public methods.
date_planned
Datetime
help='Date at which the replenishment should take place.'
args: 'Scheduled Date'
product_has_variants
Boolean
default=False
required=True
args: 'Has variants'
product_id
Many2one → product.product
required=True
string='Product'
args: 'product.product'
product_tmpl_id
Many2one → product.template
String='Product Template'
required=True
args: 'product.template'
product_uom_category_id
Many2one → uom.category
readonly=True
related='product_id.uom_id.category_id'
required=True
args: 'uom.category'
product_uom_id
Many2one → uom.uom
required=True
string='Unity of measure'
args: 'uom.uom'
quantity
Float
default=1
required=True
args: 'Quantity'
route_ids
Many2many → stock.location.route
help="Apply specific route(s) for the replenishment instead of product's default routes."
string='Preferred Routes'
args: 'stock.location.route'
warehouse_id
Many2one → stock.warehouse
required=True
string='Warehouse'
args: 'stock.warehouse'
default_get(self, fields)
launch_replenishment(self)
description_picking
Text
translate=True
args: 'Description on Picking'
description_pickingin
Text
translate=True
args: 'Description on Receptions'
description_pickingout
Text
translate=True
args: 'Description on Delivery Orders'
incoming_qty
Float
compute='_compute_quantities'
digits=dp.get_precision('Product Unit of Measure')
search='_search_incoming_qty'
args: 'Incoming'
location_id
Many2one → stock.location
store=False
args: 'stock.location', 'Location'
nbr_reordering_rules
Integer
compute='_compute_nbr_reordering_rules'
args: 'Reordering Rules'
outgoing_qty
Float
compute='_compute_quantities'
digits=dp.get_precision('Product Unit of Measure')
search='_search_outgoing_qty'
args: 'Outgoing'
property_stock_inventory
Many2one → stock.location
company_dependent=True
domain=[('usage', 'like', 'inventory')]
help='This stock location will be used, instead of the default one, as the source location for stock moves generated when you do an inventory.'
args: 'stock.location', 'Inventory Location'
property_stock_production
Many2one → stock.location
company_dependent=True
domain=[('usage', 'like', 'production')]
help='This stock location will be used, instead of the default one, as the source location for stock moves generated by manufacturing orders.'
args: 'stock.location', 'Production Location'
qty_available
Float
compute='_compute_quantities'
digits=dp.get_precision('Product Unit of Measure')
search='_search_qty_available'
args: 'Quantity On Hand'
reordering_max_qty
Float
compute='_compute_nbr_reordering_rules'
reordering_min_qty
Float
compute='_compute_nbr_reordering_rules'
responsible_id
Many2one → res.users
default=<expr>
help='This user will be responsible of the next activities related to logistic operations for this product.'
required=True
string='Responsible'
args: 'res.users'
route_from_categ_ids
Many2many
readonly=False
related='categ_id.total_route_ids'
relation='stock.location.route'
string='Category Routes'
route_ids
Many2many → stock.location.route
domain=[('product_selectable', '=', True)]
help='Depending on the modules installed, this will allow you to define the route of the product: whether it will be bought, manufactured, MTO, etc.'
args: 'stock.location.route', 'stock_route_product', 'product_id', 'route_id', 'Routes'
sale_delay
Float
default=0
help="Delivery lead time, in days. It's the number of days, promised to the customer, between the confirmation of the sales order and the delivery."
args: 'Customer Lead Time'
tracking
Selection
default='none'
help='Ensure the traceability of a storable product in your warehouse.'
required=True
string='Tracking'
args: [('serial', 'By Unique Serial Number'), ('lot', 'By Lots'), ('none', 'No Tracking')]
type
Selection
selection_add=[('product', 'Storable Product')]
track_visibility='onchange'
virtual_available
Float
compute='_compute_quantities'
digits=dp.get_precision('Product Unit of Measure')
search='_search_virtual_available'
args: 'Forecasted Quantity'
warehouse_id
Many2one → stock.warehouse
store=False
args: 'stock.warehouse', 'Warehouse'
action_open_product_lot(self)
action_open_quants(self)
action_update_quantity_on_hand(self)
action_view_orderpoints(self)
action_view_stock_move_lines(self)
onchange_tracking(self)
write(self, vals)
company_id
Many2one → res.company
readonly=True
string='Company'
args: 'res.company'
cumulative_quantity
Float
readonly=True
string='Cumulative Quantity'
date
Date
string='Date'
product_id
Many2one → product.product
readonly=True
string='Product'
args: 'product.product'
product_tmpl_id
Many2one → product.template
readonly=True
related='product_id.product_tmpl_id'
string='Product Template'
args: 'product.template'
quantity
Float
readonly=True
init(self)
No new fields.
Public methods (0)No public methods.
internal_transit_location_id
Many2one → stock.location
help='Technical field used for resupply routes between warehouses that belong to this company'
on_delete='restrict'
args: 'stock.location', 'Internal Transit Location'
propagation_minimum_delta
Integer
default=1
args: 'Minimum Delta for Propagation of a Date Change on moves linked together'
create(self, vals)
create_transit_location(self)
group_lot_on_delivery_slip
Boolean
implied_group='stock.group_lot_on_delivery_slip'
args: 'Display Lots & Serial Numbers'
group_stock_adv_location
Boolean
help='Add and customize route operations to process product moves in your warehouse(s): e.g. unload > quality control > stock for incoming products, pick > pack > ship for outgoing products. \n You can also set putaway strategies on warehouse locations in order to send incoming products into specific child locations straight away (e.g. specific bins, racks).'
implied_group='stock.group_adv_location'
args: 'Multi-Step Routes'
group_stock_multi_locations
Boolean
help='Store products in specific locations of your warehouse (e.g. bins, racks) and to track inventory accordingly.'
implied_group='stock.group_stock_multi_locations'
args: 'Storage Locations'
group_stock_multi_warehouses
Boolean
implied_group='stock.group_stock_multi_warehouses'
args: 'Multi-Warehouses'
group_stock_production_lot
Boolean
implied_group='stock.group_production_lot'
args: 'Lots & Serial Numbers'
group_stock_tracking_lot
Boolean
implied_group='stock.group_tracking_lot'
args: 'Delivery Packages'
group_stock_tracking_owner
Boolean
implied_group='stock.group_tracking_owner'
args: 'Consignment'
group_warning_stock
Boolean
implied_group='stock.group_warning_stock'
args: 'Warnings for Stock'
module_delivery_bpost
Boolean
module_delivery_dhl
Boolean
module_delivery_easypost
Boolean
module_delivery_fedex
Boolean
module_delivery_ups
Boolean
module_delivery_usps
Boolean
module_procurement_jit
Selection
help='Reserving products manually in delivery orders or by running the scheduler is advised to better manage priorities in case of long customer lead times or/and frequent stock-outs.'
args: [(1, 'Immediately after sales order confirmation'), (0, 'Manually or based on automatic scheduler')], 'Reservation'
module_product_expiry
Boolean
help='Track following dates on lots & serial numbers: best before, removal, end of life, alert. \n Such dates are set automatically at lot/serial number creation based on values set on the product (in days).'
args: 'Expiration Dates'
module_stock_barcode
Boolean
module_stock_picking_batch
Boolean
oldname='module_stock_picking_wave'
args: 'Batch Pickings'
propagation_minimum_delta
Integer
readonly=False
related='company_id.propagation_minimum_delta'
string='Minimum Delta for Propagation'
use_propagation_minimum_delta
Boolean
config_parameter='stock.use_propagation_minimum_delta'
help='Rescheduling applies to any chain of operations (e.g. Make To Order, Pick Pack Ship). In the case of MTO sales, a vendor delay (updated incoming date) impacts the expected delivery date to the customer. \n This option allows to not propagate the rescheduling if the change is not critical.'
oldname='default_new_propagation_minimum_delta'
string='No Rescheduling Propagation'
onchange_adv_location(self)
set_values(self)
picking_warn
Selection
default='no-message'
help=WARNING_HELP
args: WARNING_MESSAGE, 'Stock Picking'
picking_warn_msg
Text
property_stock_customer
Many2one → stock.location
company_dependent=True
help='The stock location used as destination when sending goods to this contact.'
string='Customer Location'
args: 'stock.location'
property_stock_supplier
Many2one → stock.location
company_dependent=True
help='The stock location used as source when receiving goods from this contact.'
string='Vendor Location'
args: 'stock.location'
No public methods.
pick_ids
Many2many → stock.picking
process(self)
process_cancel_backorder(self)
location_id
Many2one → stock.location
domain="[('usage', '=', 'internal')]"
required=True
args: 'stock.location', 'Location'
new_quantity
Float
default=1
digits=dp.get_precision('Product Unit of Measure')
help='This quantity is expressed in the Default Unit of Measure of the product.'
required=True
args: 'New Quantity on Hand'
product_id
Many2one → product.product
required=True
args: 'product.product', 'Product'
product_tmpl_id
Many2one → product.template
required=True
args: 'product.template', 'Template'
product_variant_count
Integer
readonly=False
related='product_tmpl_id.product_variant_count'
args: 'Variant Count'
change_product_qty(self)
check_new_quantity(self)
create(self, values)
default_get(self, fields)
onchange_location_id(self)
onchange_product_id(self)
onchange_product_id_dict(self, product_id)
category_id
Many2one → product.category
fixed_location_id
Many2one → stock.location
required=True
args: 'stock.location', 'Location'
product_id
Many2one → product.product
putaway_id
Many2one → product.putaway
required=True
args: 'product.putaway', 'Put Away Method'
sequence
Integer
help='Give to the more specialized category, a higher priority to have them in top of the list.'
args: 'Priority'
No public methods.
pick_ids
Many2many → stock.picking
process(self)
category_id
Many2one → product.category
help='Specify Product Category to focus your inventory on a particular Category.'
readonly=True
states={'draft': [('readonly', False)]}
args: 'product.category', 'Product Category'
company_id
Many2one → res.company
default=<expr>
index=True
readonly=True
required=True
states={'draft': [('readonly', False)]}
args: 'res.company', 'Company'
date
Datetime
default=fields.Datetime.now
help='If the inventory adjustment is not validated, date at which the theoritical quantities have been checked.\nIf the inventory adjustment is validated, date at which the inventory adjustment has been validated.'
readonly=True
required=True
args: 'Inventory Date'
exhausted
Boolean
readonly=True
states={'draft': [('readonly', False)]}
args: 'Include Exhausted Products'
filter
Selection
default='none'
help="If you do an entire inventory, you can choose 'All Products' and it will prefill the inventory with the current stock. If you only do some products (e.g. Cycle Counting) you can choose 'Manual Selection of Products' and the system won't propose anything. You can also let the system propose for a single product / lot /... "
required=True
selection='_selection_filter'
string='Inventory of'
line_ids
One2many → stock.inventory.line
copy=True
readonly=False
states={'done': [('readonly', True)]}
string='Inventories'
args: 'stock.inventory.line', 'inventory_id'
location_id
Many2one → stock.location
default=_default_location_id
readonly=True
required=True
states={'draft': [('readonly', False)]}
args: 'stock.location', 'Inventoried Location'
lot_id
Many2one → stock.production.lot
copy=False
help='Specify Lot/Serial Number to focus your inventory on a particular Lot/Serial Number.'
readonly=True
states={'draft': [('readonly', False)]}
args: 'stock.production.lot', 'Inventoried Lot/Serial Number'
move_ids
One2many → stock.move
states={'done': [('readonly', True)]}
string='Created Moves'
args: 'stock.move', 'inventory_id'
name
Char
readonly=True
required=True
states={'draft': [('readonly', False)]}
args: 'Inventory Reference'
package_id
Many2one → stock.quant.package
help='Specify Pack to focus your inventory on a particular Pack.'
readonly=True
states={'draft': [('readonly', False)]}
args: 'stock.quant.package', 'Inventoried Pack'
partner_id
Many2one → res.partner
help='Specify Owner to focus your inventory on a particular Owner.'
readonly=True
states={'draft': [('readonly', False)]}
args: 'res.partner', 'Inventoried Owner'
product_id
Many2one → product.product
help='Specify Product to focus your inventory on a particular Product.'
readonly=True
states={'draft': [('readonly', False)]}
args: 'product.product', 'Inventoried Product'
state
Selection
copy=False
default='draft'
index=True
readonly=True
selection=[('draft', 'Draft'), ('cancel', 'Cancelled'), ('confirm', 'In Progress'), ('done', 'Validated')]
string='Status'
total_qty
Float
compute='_compute_total_qty'
args: 'Total Quantity'
action_cancel_draft(self)
action_check(self)
action_inventory_line_tree(self)
action_reset_product_qty(self)
action_start(self)
action_validate(self)
post_inventory(self)
unlink(self)
company_id
Many2one → res.company
index=True
readonly=True
related='inventory_id.company_id'
store=True
args: 'res.company', 'Company'
inventory_id
Many2one → stock.inventory
index=True
ondelete='cascade'
args: 'stock.inventory', 'Inventory'
inventory_location_id
Many2one → stock.location
readonly=False
related='inventory_id.location_id'
related_sudo=False
args: 'stock.location', 'Inventory Location'
location_id
Many2one → stock.location
index=True
required=True
args: 'stock.location', 'Location'
package_id
Many2one → stock.quant.package
index=True
args: 'stock.quant.package', 'Pack'
partner_id
Many2one → res.partner
prod_lot_id
Many2one → stock.production.lot
domain="[('product_id','=',product_id)]"
args: 'stock.production.lot', 'Lot/Serial Number'
product_id
Many2one → product.product
domain=[('type', '=', 'product')]
index=True
required=True
args: 'product.product', 'Product'
product_qty
Float
default=0
digits=dp.get_precision('Product Unit of Measure')
args: 'Checked Quantity'
product_tracking
Selection
readonly=True
related='product_id.tracking'
args: 'Tracking'
product_uom_category_id
Many2one
readonly=True
related='product_uom_id.category_id'
string='Uom category'
product_uom_id
Many2one → uom.uom
required=True
args: 'uom.uom', 'Product Unit of Measure'
state
Selection
readonly=True
related='inventory_id.state'
args: 'Status'
theoretical_qty
Float
compute='_compute_theoretical_qty'
digits=dp.get_precision('Product Unit of Measure')
readonly=True
store=True
args: 'Theoretical Quantity'
create(self, vals_list)
write(self, vals)
active
Boolean
default=True
help='By unchecking the active field, you may hide a location without deleting it.'
args: 'Active'
barcode
Char
copy=False
oldname='loc_barcode'
args: 'Barcode'
child_ids
One2many → stock.location
comment
Text
company_id
Many2one → res.company
default=<expr>
help='Let this field empty if this location is shared between companies'
index=True
args: 'res.company', 'Company'
complete_name
Char
compute='_compute_complete_name'
store=True
args: 'Full Location Name'
location_id
Many2one → stock.location
help="The parent location that includes this location. Example : The 'Dispatch Zone' is the 'Gate 1' parent location."
index=True
ondelete='cascade'
args: 'stock.location', 'Parent Location'
name
Char
required=True
args: 'Location Name'
parent_path
Char
index=True
partner_id
Many2one → res.partner
help='Owner of the location if not internal'
args: 'res.partner', 'Owner'
posx
Integer
default=0
help='Optional localization details, for information purpose only'
args: 'Corridor (X)'
posy
Integer
default=0
help='Optional localization details, for information purpose only'
args: 'Shelves (Y)'
posz
Integer
default=0
help='Optional localization details, for information purpose only'
args: 'Height (Z)'
putaway_strategy_id
Many2one → product.putaway
help='Allows to suggest the exact location (shelf) where to store the product.'
args: 'product.putaway', 'Put Away Strategy'
quant_ids
One2many → stock.quant
removal_strategy_id
Many2one → product.removal
help='Defines the default method used for suggesting the exact location (shelf) where to take the products from, which lot etc. for this location. This method can be enforced at the product category level, and a fallback is made on the parent locations if none is set here.'
args: 'product.removal', 'Removal Strategy'
return_location
Boolean
help='Check this box to allow using this location as a return location.'
args: 'Is a Return Location?'
scrap_location
Boolean
default=False
help='Check this box to allow using this location to put scrapped/damaged goods.'
args: 'Is a Scrap Location?'
usage
Selection
default='internal'
help="* Vendor Location: Virtual location representing the source location for products coming from your vendors\n* View: Virtual location used to create a hierarchical structures for your warehouse, aggregating its child locations ; can't directly contain products\n* Internal Location: Physical locations inside your own warehouses,\n* Customer Location: Virtual location representing the destination location for products sent to your customers\n* Inventory Loss: Virtual location serving as counterpart for inventory operations used to correct stock levels (Physical inventories)\n* Procurement: Virtual location serving as temporary counterpart for procurement operations when the source (vendor or production) is not known yet. This location should be empty when the procurement scheduler has finished running.\n* Production: Virtual counterpart location for production operations: this location consumes the raw material and produces finished products\n* Transit Location: Counterpart location that should be used in inter-company or inter-warehouses operations"
index=True
required=True
string='Location Type'
args: [('supplier', 'Vendor Location'), ('view', 'View'), ('internal', 'Internal Location'), ('customer', 'Customer Location'), ('inventory', 'Inventory Loss'), ('procurement', 'Procurement'), ('production', 'Production'), ('transit', 'Transit Location')]
default_get(self, fields)
get_putaway_strategy(self, product)
get_warehouse(self)
name_get(self)
should_bypass_reservation(self)
write(self, values)
active
Boolean
default=True
help='If the active field is set to False, it will allow you to hide the route without removing it.'
args: 'Active'
categ_ids
Many2many → product.category
copy=False
args: 'product.category', 'stock_location_route_categ', 'route_id', 'categ_id', 'Product Categories'
company_id
Many2one → res.company
default=<expr>
help='Leave this field empty if this route is shared between all companies'
index=True
args: 'res.company', 'Company'
name
Char
required=True
translate=True
args: 'Route'
product_categ_selectable
Boolean
help='When checked, the route will be selectable on the Product Category.'
args: 'Applicable on Product Category'
product_ids
Many2many → product.template
copy=False
args: 'product.template', 'stock_route_product', 'route_id', 'product_id', 'Products'
product_selectable
Boolean
default=True
help='When checked, the route will be selectable in the Inventory tab of the Product form.'
args: 'Applicable on Product'
rule_ids
One2many → stock.rule
copy=True
args: 'stock.rule', 'route_id', 'Rules'
sequence
Integer
default=0
args: 'Sequence'
supplied_wh_id
Many2one → stock.warehouse
supplier_wh_id
Many2one → stock.warehouse
warehouse_ids
Many2many → stock.warehouse
copy=False
args: 'stock.warehouse', 'stock_route_warehouse', 'route_id', 'warehouse_id', 'Warehouses'
warehouse_selectable
Boolean
help='When a warehouse is selected for this route, this route should be seen as the default route when products pass through this warehouse.'
args: 'Applicable on Warehouse'
toggle_active(self)
view_categ_ids(self)
view_product_ids(self)
additional
Boolean
default=False
args: "Whether the move was added after the picking's confirmation"
availability
Float
compute='_compute_product_availability'
help='Quantity in stock that can still be reserved for this move'
readonly=True
args: 'Forecasted Quantity'
backorder_id
Many2one → stock.picking
index=True
readonly=False
related='picking_id.backorder_id'
args: 'stock.picking', 'Back Order of'
company_id
Many2one → res.company
default=<expr>
index=True
required=True
args: 'res.company', 'Company'
create_date
Datetime
index=True
readonly=True
args: 'Creation Date'
date
Datetime
default=fields.Datetime.now
help='Move date: scheduled date until move is done, then date of actual move processing'
index=True
required=True
states={'done': [('readonly', True)]}
args: 'Date'
date_expected
Datetime
default=fields.Datetime.now
help='Scheduled date for the processing of this move'
index=True
required=True
states={'done': [('readonly', True)]}
args: 'Expected Date'
group_id
Many2one → procurement.group
default=_default_group_id
args: 'procurement.group', 'Procurement Group'
has_move_lines
Boolean
compute='_compute_has_move_lines'
has_tracking
Selection
readonly=True
related='product_id.tracking'
string='Product with Tracking'
inventory_id
Many2one → stock.inventory
is_initial_demand_editable
Boolean
compute='_compute_is_initial_demand_editable'
args: 'Is initial demand editable'
is_locked
Boolean
compute='_compute_is_locked'
readonly=True
is_quantity_done_editable
Boolean
compute='_compute_is_quantity_done_editable'
args: 'Is quantity done editable'
location_dest_id
Many2one → stock.location
auto_join=True
help='Location where the system will stock the finished products.'
index=True
required=True
args: 'stock.location', 'Destination Location'
location_id
Many2one → stock.location
auto_join=True
help='Sets a location if you produce at a fixed location. This can be a partner location if you subcontract the manufacturing operations.'
index=True
required=True
args: 'stock.location', 'Source Location'
move_dest_ids
Many2many → stock.move
copy=False
help='Optional: next stock move when chaining them'
args: 'stock.move', 'stock_move_move_rel', 'move_orig_id', 'move_dest_id', 'Destination Moves'
move_line_ids
One2many → stock.move.line
move_line_nosuggest_ids
One2many → stock.move.line
domain=[('product_qty', '=', 0.0)]
args: 'stock.move.line', 'move_id'
move_orig_ids
Many2many → stock.move
copy=False
help='Optional: previous stock move when chaining them'
args: 'stock.move', 'stock_move_move_rel', 'move_dest_id', 'move_orig_id', 'Original Move'
name
Char
index=True
required=True
args: 'Description'
note
Text
origin
Char
origin_returned_move_id
Many2one → stock.move
copy=False
help='Move that created the return move'
index=True
args: 'stock.move', 'Origin return move'
package_level_id
Many2one → stock.package_level
partner_id
Many2one → res.partner
help='Optional address where goods are to be delivered, specifically used for allotment'
states={'done': [('readonly', True)]}
args: 'res.partner', 'Destination Address '
picking_code
Selection
readonly=True
related='picking_id.picking_type_id.code'
picking_id
Many2one → stock.picking
index=True
states={'done': [('readonly', True)]}
args: 'stock.picking', 'Transfer Reference'
picking_partner_id
Many2one → res.partner
readonly=False
related='picking_id.partner_id'
args: 'res.partner', 'Transfer Destination Address'
picking_type_entire_packs
Boolean
readonly=True
related='picking_type_id.show_entire_packs'
picking_type_id
Many2one → stock.picking.type
price_unit
Float
copy=False
help="Technical field used to record the product cost set by the user during a picking confirmation (when costing method used is 'average price' or 'real'). Value given in company currency and in product uom."
args: 'Unit Price'
priority
Selection
default='1'
args: PROCUREMENT_PRIORITIES, 'Priority'
procure_method
Selection
default='make_to_stock'
help='By default, the system will take from the stock in the source location and passively wait for availability. The other possibility allows you to directly create a procurement on the source location (and thus ignore its current stock) to gather products. If we want to chain moves and have this one to wait for the previous, this second option should be chosen.'
required=True
string='Supply Method'
args: [('make_to_stock', 'Default: Take From Stock'), ('make_to_order', 'Advanced: Apply Procurement Rules')]
product_id
Many2one → product.product
domain=[('type', 'in', ['product', 'consu'])]
index=True
required=True
states={'done': [('readonly', True)]}
args: 'product.product', 'Product'
product_packaging
Many2one → product.packaging
help='It specifies attributes of packaging like type, quantity of packaging,etc.'
args: 'product.packaging', 'Preferred Packaging'
product_qty
Float
compute='_compute_product_qty'
compute_sudo=True
digits=0
help='Quantity in the default UoM of the product'
inverse='_set_product_qty'
store=True
args: 'Real Quantity'
product_tmpl_id
Many2one → product.template
help='Technical: used in views'
readonly=False
related='product_id.product_tmpl_id'
args: 'product.template', 'Product Template'
product_type
Selection
readonly=True
related='product_id.type'
product_uom
Many2one → uom.uom
required=True
args: 'uom.uom', 'Unit of Measure'
product_uom_qty
Float
default=0.0
digits=dp.get_precision('Product Unit of Measure')
help="This is the quantity of products from an inventory point of view. For moves in the state 'done', this is the quantity of products that were actually moved. For other moves, this is the quantity of product that is planned to be moved. Lowering this quantity does not generate a backorder. Changing this quantity on assigned moves affects the product reservation, and should be done with care."
required=True
states={'done': [('readonly', True)]}
args: 'Initial Demand'
propagate
Boolean
default=True
help='If checked, when this move is cancelled, cancel the linked move too'
args: 'Propagate cancel and split'
quantity_done
Float
compute='_quantity_done_compute'
digits=dp.get_precision('Product Unit of Measure')
inverse='_quantity_done_set'
args: 'Quantity Done'
reference
Char
compute='_compute_reference'
store=True
string='Reference'
reserved_availability
Float
compute='_compute_reserved_availability'
digits=dp.get_precision('Product Unit of Measure')
help='Quantity that has already been reserved for this move'
readonly=True
args: 'Quantity Reserved'
restrict_partner_id
Many2one → res.partner
help="Technical field used to depict a restriction on the ownership of quants to consider when marking this move as 'done'"
args: 'res.partner', 'Owner '
returned_move_ids
One2many → stock.move
help='Optional: all returned moves created from this move'
args: 'stock.move', 'origin_returned_move_id', 'All returned moves'
route_ids
Many2many → stock.location.route
help='Preferred route'
args: 'stock.location.route', 'stock_location_route_move', 'move_id', 'route_id', 'Destination route'
rule_id
Many2one → stock.rule
help='The stock rule that created this stock move'
ondelete='restrict'
args: 'stock.rule', 'Stock Rule'
scrap_ids
One2many → stock.scrap
scrapped
Boolean
readonly=True
related='location_dest_id.scrap_location'
store=True
args: 'Scrapped'
sequence
Integer
default=10
args: 'Sequence'
show_details_visible
Boolean
compute='_compute_show_details_visible'
args: 'Details Visible'
show_operations
Boolean
readonly=False
related='picking_id.picking_type_id.show_operations'
show_reserved_availability
Boolean
compute='_compute_show_reserved_availability'
args: 'From Supplier'
state
Selection
copy=False
default='draft'
help="* New: When the stock move is created and not yet confirmed.\n* Waiting Another Move: This state can be seen when a move is waiting for another one, for example in a chained flow.\n* Waiting Availability: This state is reached when the procurement resolution is not straight forward. It may need the scheduler to run, a component to be manufactured...\n* Available: When products are reserved, it is set to 'Available'.\n* Done: When the shipment is processed, the state is 'Done'."
index=True
readonly=True
string='Status'
args: [('draft', 'New'), ('cancel', 'Cancelled'), ('waiting', 'Waiting Another Move'), ('confirmed', 'Waiting Availability'), ('partially_available', 'Partially Available'), ('assigned', 'Available'), ('done', 'Done')]
string_availability_info
Text
compute='_compute_string_qty_information'
help='Show various information on stock availability for this move'
readonly=True
args: 'Availability'
warehouse_id
Many2one → stock.warehouse
help='Technical field depicting the warehouse to consider for the route selection on the next procurement (if any).'
args: 'stock.warehouse', 'Warehouse'
action_show_details(self)
create(self, vals_list)
default_get(self, fields_list)
init(self)
name_get(self)
onchange_date(self)
onchange_product_id(self)
onchange_product_uom(self)
onchange_quantity(self)
unlink(self)
write(self, vals)
consume_line_ids
Many2many → stock.move.line
help='Technical link to see who consumed what. '
args: 'stock.move.line', 'stock_move_line_consume_rel', 'consume_line_id', 'produce_line_id'
date
Datetime
default=fields.Datetime.now
required=True
args: 'Date'
is_initial_demand_editable
Boolean
readonly=False
related='move_id.is_initial_demand_editable'
is_locked
Boolean
default=True
readonly=True
related='move_id.is_locked'
location_dest_id
Many2one → stock.location
required=True
args: 'stock.location', 'To'
location_id
Many2one → stock.location
required=True
args: 'stock.location', 'From'
lot_id
Many2one → stock.production.lot
lot_name
Char
lots_visible
Boolean
compute='_compute_lots_visible'
move_id
Many2one → stock.move
help='Change to a better name'
index=True
args: 'stock.move', 'Stock Move'
owner_id
Many2one → res.partner
help='Owner of the quants'
args: 'res.partner', 'Owner'
package_id
Many2one → stock.quant.package
ondelete='restrict'
args: 'stock.quant.package', 'Source Package'
package_level_id
Many2one → stock.package_level
picking_id
Many2one → stock.picking
auto_join=True
help='The stock operation where the packing has been made'
args: 'stock.picking', 'Stock Picking'
picking_type_entire_packs
Boolean
readonly=True
related='picking_id.picking_type_id.show_entire_packs'
picking_type_use_create_lots
Boolean
readonly=True
related='picking_id.picking_type_id.use_create_lots'
picking_type_use_existing_lots
Boolean
readonly=True
related='picking_id.picking_type_id.use_existing_lots'
produce_line_ids
Many2many → stock.move.line
help='Technical link to see which line was produced with this. '
args: 'stock.move.line', 'stock_move_line_consume_rel', 'produce_line_id', 'consume_line_id'
product_id
Many2one → product.product
ondelete='cascade'
args: 'product.product', 'Product'
product_qty
Float
compute='_compute_product_qty'
copy=False
digits=0
inverse='_set_product_qty'
store=True
args: 'Real Reserved Quantity'
product_uom_id
Many2one → uom.uom
required=True
args: 'uom.uom', 'Unit of Measure'
product_uom_qty
Float
copy=False
default=0.0
digits=dp.get_precision('Product Unit of Measure')
required=True
args: 'Reserved'
qty_done
Float
copy=False
default=0.0
digits=dp.get_precision('Product Unit of Measure')
args: 'Done'
reference
Char
readonly=False
related='move_id.reference'
related_sudo=False
store=True
result_package_id
Many2one → stock.quant.package
help='If set, the operations are packed into this package'
ondelete='restrict'
required=False
args: 'stock.quant.package', 'Destination Package'
state
Selection
readonly=False
related='move_id.state'
related_sudo=False
store=True
tracking
Selection
readonly=True
related='product_id.tracking'
check_reserved_done_quantity(self)
create(self, vals_list)
init(self)
onchange_product_id(self)
onchange_serial_number(self)
unlink(self)
write(self, vals)
overprocessed_product_name
Char
compute='_compute_overprocessed_product_name'
readonly=True
picking_id
Many2one → stock.picking
action_confirm(self)
filtered_location
One2many → stock.location
comodel_name='stock.location'
compute='_filter_location'
location_dest_id
Many2one → stock.location
required=True
args: 'stock.location', 'Destination location'
move_line_ids
Many2many → stock.move.line
compute='_compute_move_line_ids'
required=True
args: 'stock.move.line', 'Products'
picking_id
Many2one → stock.picking
required=True
args: 'stock.picking'
action_done(self)
is_done
Boolean
compute='_compute_is_done'
inverse='_set_is_done'
args: 'Done'
is_fresh_package
Boolean
compute='_compute_fresh_pack'
location_dest_id
Many2one → stock.location
location_id
Many2one → stock.location
compute='_compute_location_id'
args: 'stock.location', 'From'
move_ids
One2many → stock.move
move_line_ids
One2many → stock.move.line
package_id
Many2one → stock.quant.package
required=True
args: 'stock.quant.package', 'Package'
picking_id
Many2one → stock.picking
picking_source_location
Many2one → stock.location
readonly=False
related='picking_id.location_id'
args: 'stock.location'
show_lots_m2o
Boolean
compute='_compute_show_lot'
show_lots_text
Boolean
compute='_compute_show_lot'
state
Selection
compute='_compute_state'
string='State'
args: [('draft', 'Draft'), ('confirmed', 'Confirmed'), ('assigned', 'Reserved'), ('new', 'New'), ('done', 'Done'), ('cancel', 'Cancelled')]
create(self, vals)
unlink(self)
write(self, vals)
backorder_id
Many2one → stock.picking
copy=False
help='If this shipment was split, then this field links to the shipment which contains the already processed part.'
index=True
states={'done': [('readonly', True)], 'cancel': [('readonly', True)]}
args: 'stock.picking', 'Back Order of'
backorder_ids
One2many → stock.picking
company_id
Many2one → res.company
default=<expr>
index=True
required=True
states={'done': [('readonly', True)], 'cancel': [('readonly', True)]}
args: 'res.company', 'Company'
date
Datetime
default=fields.Datetime.now
help='Creation Date, usually the time of the order'
index=True
states={'done': [('readonly', True)], 'cancel': [('readonly', True)]}
track_visibility='onchange'
args: 'Creation Date'
date_done
Datetime
copy=False
help='Date at which the transfer has been processed or cancelled.'
readonly=True
args: 'Date of Transfer'
group_id
Many2one → procurement.group
readonly=True
related='move_lines.group_id'
store=True
args: 'procurement.group', 'Procurement Group'
has_packages
Boolean
compute='_compute_has_packages'
help='Check the existence of destination packages on move lines'
args: 'Has Packages'
has_scrap_move
Boolean
compute='_has_scrap_move'
args: 'Has Scrap Moves'
has_tracking
Boolean
compute='_compute_has_tracking'
immediate_transfer
Boolean
default=False
is_locked
Boolean
default=True
help='When the picking is not done this allows changing the initial demand. When the picking is done this allows changing the done quantities.'
location_dest_id
Many2one → stock.location
default=<expr>
readonly=True
required=True
states={'draft': [('readonly', False)]}
args: 'stock.location', 'Destination Location'
location_id
Many2one → stock.location
default=<expr>
readonly=True
required=True
states={'draft': [('readonly', False)]}
args: 'stock.location', 'Source Location'
move_ids_without_package
One2many → stock.move
domain=['|', ('package_level_id', '=', False), ('picking_type_entire_packs', '=', False)]
string='Stock moves not in package'
args: 'stock.move', 'picking_id'
move_line_exist
Boolean
compute='_compute_move_line_exist'
help='Check the existence of pack operation on the picking'
args: 'Has Pack Operations'
move_line_ids
One2many → stock.move.line
move_line_ids_without_package
One2many → stock.move.line
domain=['|', ('package_level_id', '=', False), ('picking_type_entire_packs', '=', False)]
args: 'stock.move.line', 'picking_id', 'Operations without package'
move_lines
One2many → stock.move
copy=True
string='Stock Moves'
args: 'stock.move', 'picking_id'
move_type
Selection
default='direct'
help='It specifies goods to be deliver partially or all at once'
required=True
states={'done': [('readonly', True)], 'cancel': [('readonly', True)]}
args: [('direct', 'As soon as possible'), ('one', 'When all products are ready')], 'Shipping Policy'
name
Char
copy=False
default='/'
index=True
states={'done': [('readonly', True)], 'cancel': [('readonly', True)]}
args: 'Reference'
note
Text
origin
Char
help='Reference of the document'
index=True
states={'done': [('readonly', True)], 'cancel': [('readonly', True)]}
args: 'Source Document'
owner_id
Many2one → res.partner
help='Default Owner'
states={'done': [('readonly', True)], 'cancel': [('readonly', True)]}
args: 'res.partner', 'Owner'
package_level_ids
One2many → stock.package_level
package_level_ids_details
One2many → stock.package_level
partner_id
Many2one → res.partner
states={'done': [('readonly', True)], 'cancel': [('readonly', True)]}
args: 'res.partner', 'Partner'
picking_type_code
Selection
readonly=True
related='picking_type_id.code'
args: [('incoming', 'Vendors'), ('outgoing', 'Customers'), ('internal', 'Internal')]
picking_type_entire_packs
Boolean
readonly=True
related='picking_type_id.show_entire_packs'
picking_type_id
Many2one → stock.picking.type
readonly=True
required=True
states={'draft': [('readonly', False)]}
args: 'stock.picking.type', 'Operation Type'
printed
Boolean
priority
Selection
compute='_compute_priority'
help='Priority for this picking. Setting manually a value here would set it as priority for all the moves'
index=True
inverse='_set_priority'
states={'done': [('readonly', True)], 'cancel': [('readonly', True)]}
store=True
string='Priority'
track_visibility='onchange'
args: PROCUREMENT_PRIORITIES
product_id
Many2one → product.product
readonly=True
related='move_lines.product_id'
args: 'product.product', 'Product'
scheduled_date
Datetime
compute='_compute_scheduled_date'
help='Scheduled time for the first part of the shipment to be processed. Setting manually a value here would set it as expected date for all the stock moves.'
index=True
inverse='_set_scheduled_date'
store=True
track_visibility='onchange'
args: 'Scheduled Date'
show_check_availability
Boolean
compute='_compute_show_check_availability'
help='Technical field used to compute whether the check availability button should be shown.'
show_lots_text
Boolean
compute='_compute_show_lots_text'
show_mark_as_todo
Boolean
compute='_compute_show_mark_as_todo'
help='Technical field used to compute whether the mark as todo button should be shown.'
show_operations
Boolean
compute='_compute_show_operations'
show_validate
Boolean
compute='_compute_show_validate'
help='Technical field used to compute whether the validate should be shown.'
state
Selection
compute='_compute_state'
copy=False
help=" * Draft: not confirmed yet and will not be scheduled until confirmed.\n * Waiting Another Operation: waiting for another move to proceed before it becomes automatically available (e.g. in Make-To-Order flows).\n * Waiting: if it is not ready to be sent because the required products could not be reserved.\n * Ready: products are reserved and ready to be sent. If the shipping policy is 'As soon as possible' this happens as soon as anything is reserved.\n * Done: has been processed, can't be modified or cancelled anymore.\n * Cancelled: has been cancelled, can't be confirmed anymore."
index=True
readonly=True
store=True
string='Status'
track_visibility='onchange'
args: [('draft', 'Draft'), ('waiting', 'Waiting Another Operation'), ('confirmed', 'Waiting'), ('assigned', 'Ready'), ('done', 'Done'), ('cancel', 'Cancelled')]
action_assign(self)
action_assign_owner(self)
action_assign_partner(self)
action_cancel(self)
action_confirm(self)
action_done(self)
action_generate_backorder_wizard(self)
action_picking_move_tree(self)
action_see_move_scrap(self)
action_see_packages(self)
action_toggle_is_locked(self)
button_scrap(self)
button_validate(self)
check_destinations(self)
create(self, vals)
do_print_picking(self)
do_unreserve(self)
onchange_partner_id(self)
onchange_picking_type(self)
put_in_pack(self)
unlink(self)
write(self, vals)
active
Boolean
default=True
args: 'Active'
barcode
Char
copy=False
args: 'Barcode'
code
Selection
required=True
args: [('incoming', 'Vendors'), ('outgoing', 'Customers'), ('internal', 'Internal')], 'Type of Operation'
color
Integer
count_picking
Integer
compute='_compute_picking_count'
count_picking_backorders
Integer
compute='_compute_picking_count'
count_picking_draft
Integer
compute='_compute_picking_count'
count_picking_late
Integer
compute='_compute_picking_count'
count_picking_ready
Integer
compute='_compute_picking_count'
count_picking_waiting
Integer
compute='_compute_picking_count'
default_location_dest_id
Many2one → stock.location
help='This is the default destination location when you create a picking manually with this operation type. It is possible however to change it or that the routes put another location. If it is empty, it will check for the customer location on the partner. '
args: 'stock.location', 'Default Destination Location'
default_location_src_id
Many2one → stock.location
help='This is the default source location when you create a picking manually with this operation type. It is possible however to change it or that the routes put another location. If it is empty, it will check for the supplier location on the partner. '
args: 'stock.location', 'Default Source Location'
last_done_picking
Char
compute='_compute_last_done_picking'
args: 'Last 10 Done Pickings'
name
Char
required=True
translate=True
args: 'Operation Type'
rate_picking_backorders
Integer
compute='_compute_picking_count'
rate_picking_late
Integer
compute='_compute_picking_count'
return_picking_type_id
Many2one → stock.picking.type
sequence
Integer
help="Used to order the 'All Operations' kanban view"
args: 'Sequence'
sequence_id
Many2one → ir.sequence
required=True
args: 'ir.sequence', 'Reference Sequence'
show_entire_packs
Boolean
help='If ticked, you will be able to select entire packages to move'
args: 'Move Entire Packages'
show_operations
Boolean
default=False
help='If this checkbox is ticked, the pickings lines will represent detailed stock operations. If not, the picking lines will represent an aggregate of detailed stock operations.'
args: 'Show Detailed Operations'
show_reserved
Boolean
default=True
help='If this checkbox is ticked, Odoo will show which products are reserved (lot/serial number, source location, source package).'
args: 'Show Reserved'
use_create_lots
Boolean
default=True
help='If this is checked only, it will suppose you want to create new Lots/Serial Numbers, so you can provide them in a text field. '
args: 'Create New Lots/Serial Numbers'
use_existing_lots
Boolean
default=True
help='If this is checked, you will be able to choose the Lots/Serial Numbers. You can also decide to not put lots in this operation type. This means it will create stock with no lot or not put a restriction on the lot taken. '
args: 'Use Existing Lots/Serial Numbers'
warehouse_id
Many2one → stock.warehouse
default=<expr>
ondelete='cascade'
args: 'stock.warehouse', 'Warehouse'
get_action_picking_tree_backorder(self)
get_action_picking_tree_late(self)
get_action_picking_tree_ready(self)
get_action_picking_tree_waiting(self)
get_stock_picking_action_picking_type(self)
name_get(self)
onchange_picking_code(self)
onchange_show_operations(self)
name
Char
default=<expr>
help='Unique Lot/Serial Number'
required=True
args: 'Lot/Serial Number'
product_id
Many2one → product.product
domain=[('type', 'in', ['product', 'consu'])]
required=True
args: 'product.product', 'Product'
product_qty
Float
compute='_product_qty'
args: 'Quantity'
product_uom_id
Many2one → uom.uom
readonly=False
related='product_id.uom_id'
store=True
args: 'uom.uom', 'Unit of Measure'
quant_ids
One2many → stock.quant
readonly=True
args: 'stock.quant', 'lot_id', 'Quants'
ref
Char
help="Internal reference number in case it differs from the manufacturer's lot/serial number"
args: 'Internal Reference'
create(self, vals_list)
write(self, vals)
company_id
Many2one
readonly=True
related='location_id.company_id'
store=True
string='Company'
in_date
Datetime
readonly=True
args: 'Incoming Date'
location_id
Many2one → stock.location
auto_join=True
index=True
ondelete='restrict'
readonly=True
required=True
args: 'stock.location', 'Location'
lot_id
Many2one → stock.production.lot
index=True
ondelete='restrict'
readonly=True
args: 'stock.production.lot', 'Lot/Serial Number'
owner_id
Many2one → res.partner
help='This is the owner of the quant'
readonly=True
args: 'res.partner', 'Owner'
package_id
Many2one → stock.quant.package
help='The package containing this quant'
ondelete='restrict'
readonly=True
args: 'stock.quant.package', 'Package'
product_id
Many2one → product.product
index=True
ondelete='restrict'
readonly=True
required=True
args: 'product.product', 'Product'
product_tmpl_id
Many2one → product.template
readonly=False
related='product_id.product_tmpl_id'
string='Product Template'
args: 'product.template'
product_uom_id
Many2one → uom.uom
readonly=True
related='product_id.uom_id'
args: 'uom.uom', 'Unit of Measure'
quantity
Float
help='Quantity of products in this quant, in the default unit of measure of the product'
oldname='qty'
readonly=True
required=True
args: 'Quantity'
reserved_quantity
Float
default=0.0
help='Quantity of reserved products in this quant, in the default unit of measure of the product'
readonly=True
required=True
args: 'Reserved Quantity'
action_view_stock_moves(self)
check_location_id(self)
check_product_id(self)
check_quantity(self)
company_id
Many2one → res.company
compute='_compute_package_info'
index=True
readonly=True
store=True
args: 'res.company', 'Company'
location_id
Many2one → stock.location
compute='_compute_package_info'
index=True
readonly=True
store=True
args: 'stock.location', 'Location'
name
Char
copy=False
default=<expr>
index=True
args: 'Package Reference'
owner_id
Many2one → res.partner
compute='_compute_package_info'
index=True
readonly=True
search='_search_owner'
args: 'res.partner', 'Owner'
packaging_id
Many2one → product.packaging
index=True
args: 'product.packaging', 'Package Type'
quant_ids
One2many → stock.quant
domain=['|', ('quantity', '!=', 0), ('reserved_quantity', '!=', 0)]
readonly=True
args: 'stock.quant', 'package_id', 'Bulk Content'
action_view_picking(self)
name_get(self)
unpack(self)
view_content_package(self)
compute_at_date
Selection
help='Choose to analyze the current inventory or from a specific date in the past.'
string='Compute'
args: [(0, 'Current Inventory'), (1, 'At a Specific Date')]
date
Datetime
default=fields.Datetime.now
help='Choose a date to get the inventory at that date'
args: 'Inventory at Date'
open_table(self)
location_id
Many2one → stock.location
domain="['|', ('id', '=', original_location_id), ('return_location', '=', True)]"
args: 'stock.location', 'Return Location'
move_dest_exists
Boolean
readonly=True
args: 'Chained Move Exists'
original_location_id
Many2one → stock.location
parent_location_id
Many2one → stock.location
picking_id
Many2one → stock.picking
product_return_moves
One2many → stock.return.picking.line
create_returns(self)
default_get(self, fields)
move_id
Many2one → stock.move
product_id
Many2one → product.product
domain="[('id', '=', product_id)]"
required=True
string='Product'
args: 'product.product'
quantity
Float
digits=dp.get_precision('Product Unit of Measure')
required=True
args: 'Quantity'
uom_id
Many2one → uom.uom
readonly=False
related='move_id.product_uom'
string='Unit of Measure'
args: 'uom.uom'
wizard_id
Many2one → stock.return.picking
string='Wizard'
args: 'stock.return.picking'
No public methods.
action
Selection
required=True
selection=[('pull', 'Pull From'), ('push', 'Push To'), ('pull_push', 'Pull & Push')]
string='Action'
active
Boolean
default=True
help='If unchecked, it will allow you to hide the rule without removing it.'
args: 'Active'
auto
Selection
default='manual'
help="The 'Manual Operation' value will create a stock move after the current one. With 'Automatic No Step Added', the location is replaced in the original move."
index=True
required=True
string='Automatic Move'
args: [('manual', 'Manual Operation'), ('transparent', 'Automatic No Step Added')]
company_id
Many2one → res.company
default=<expr>
args: 'res.company', 'Company'
delay
Integer
default=0
help='The expected date of the created transfer will be computed based on this delay.'
args: 'Delay'
group_id
Many2one → procurement.group
group_propagation_option
Selection
default='propagate'
string='Propagation of Procurement Group'
args: [('none', 'Leave Empty'), ('propagate', 'Propagate'), ('fixed', 'Fixed')]
location_id
Many2one → stock.location
required=True
args: 'stock.location', 'Destination Location'
location_src_id
Many2one → stock.location
name
Char
help='This field will fill the packing origin and the name of its moves'
required=True
translate=True
args: 'Name'
partner_address_id
Many2one → res.partner
help='Address where goods should be delivered. Optional.'
args: 'res.partner', 'Partner Address'
picking_type_id
Many2one → stock.picking.type
required=True
args: 'stock.picking.type', 'Operation Type'
procure_method
Selection
default='make_to_stock'
help='Create Procurement: A procurement will be created in the source location and the system will try to find a rule to resolve it. The available stock will be ignored.\n Take from Stock: The products will be taken from the available stock.'
required=True
string='Move Supply Method'
args: [('make_to_stock', 'Take From Stock'), ('make_to_order', 'Trigger Another Rule')]
propagate
Boolean
default=True
help='When ticked, if the move is splitted or cancelled, the next move will be too.'
args: 'Propagate cancel and split'
propagate_warehouse_id
Many2one → stock.warehouse
help='The warehouse to propagate on the created move/procurement, which can be different of the warehouse this rule is for (e.g for resupplying rules from another warehouse)'
args: 'stock.warehouse', 'Warehouse to Propagate'
route_id
Many2one → stock.location.route
ondelete='cascade'
required=True
args: 'stock.location.route', 'Route'
route_sequence
Integer
compute_sudo=True
readonly=False
related='route_id.sequence'
store=True
args: 'Route Sequence'
rule_message
Html
compute='_compute_action_message'
sequence
Integer
default=20
args: 'Sequence'
warehouse_id
Many2one → stock.warehouse
No public methods.
product_has_variants
Boolean
default=False
required=True
args: 'Has variants'
product_id
Many2one → product.product
required=True
string='Product'
args: 'product.product'
product_tmpl_id
Many2one → product.template
String='Product Template'
required=True
args: 'product.template'
warehouse_ids
Many2many → stock.warehouse
help='Show the routes that apply on selected warehouses.'
required=True
string='Warehouses'
args: 'stock.warehouse'
default_get(self, fields)
print_report(self)
No new fields.
Public methods (1)procure_calculation(self)
date_expected
Datetime
default=fields.Datetime.now
args: 'Expected Date'
location_id
Many2one → stock.location
default=_get_default_location_id
domain="[('usage', '=', 'internal')]"
required=True
states={'done': [('readonly', True)]}
args: 'stock.location', 'Location'
lot_id
Many2one → stock.production.lot
domain="[('product_id', '=', product_id)]"
states={'done': [('readonly', True)]}
args: 'stock.production.lot', 'Lot'
move_id
Many2one → stock.move
readonly=True
args: 'stock.move', 'Scrap Move'
name
Char
copy=False
default=<expr>
readonly=True
required=True
states={'done': [('readonly', True)]}
args: 'Reference'
origin
Char
string='Source Document'
owner_id
Many2one → res.partner
states={'done': [('readonly', True)]}
args: 'res.partner', 'Owner'
package_id
Many2one → stock.quant.package
states={'done': [('readonly', True)]}
args: 'stock.quant.package', 'Package'
picking_id
Many2one → stock.picking
states={'done': [('readonly', True)]}
args: 'stock.picking', 'Picking'
product_id
Many2one → product.product
domain=[('type', 'in', ['product', 'consu'])]
required=True
states={'done': [('readonly', True)]}
args: 'product.product', 'Product'
product_uom_id
Many2one → uom.uom
required=True
states={'done': [('readonly', True)]}
args: 'uom.uom', 'Unit of Measure'
scrap_location_id
Many2one → stock.location
default=_get_default_scrap_location_id
domain="[('scrap_location', '=', True)]"
required=True
states={'done': [('readonly', True)]}
args: 'stock.location', 'Scrap Location'
scrap_qty
Float
default=1.0
digits=dp.get_precision('Product Unit of Measure')
required=True
states={'done': [('readonly', True)]}
args: 'Quantity'
state
Selection
default='draft'
string='Status'
args: [('draft', 'Draft'), ('done', 'Done')]
tracking
Selection
readonly=True
related='product_id.tracking'
args: 'Product Tracking'
action_get_stock_move_lines(self)
action_get_stock_picking(self)
action_validate(self)
create(self, vals)
do_scrap(self)
onchange_product_id(self)
unlink(self)
No new fields.
Public methods (4)get_html(self, given_context=None)
get_lines(self, line_id=None, **kw)
get_pdf(self, line_data=[])
get_pdf_lines(self, line_data=[])
inventory_id
Many2one → stock.inventory
tracking_line_ids
One2many → stock.track.line
action_confirm(self)
product_id
Many2one → product.product
readonly=True
args: 'product.product', 'Product'
tracking
Selection
readonly=True
args: [('lot', 'Tracked by lot'), ('serial', 'Tracked by serial number')]
wizard_id
Many2one → stock.track.confirmation
readonly=True
args: 'stock.track.confirmation'
No public methods.
active
Boolean
default=True
args: 'Active'
code
Char
help='Short name used to identify your warehouse'
required=True
size=5
args: 'Short Name'
company_id
Many2one → res.company
default=<expr>
help='The company is automatically set from your user preferences.'
index=True
readonly=True
required=True
args: 'res.company', 'Company'
crossdock_route_id
Many2one → stock.location.route
ondelete='restrict'
args: 'stock.location.route', 'Crossdock Route'
delivery_route_id
Many2one → stock.location.route
ondelete='restrict'
args: 'stock.location.route', 'Delivery Route'
delivery_steps
Selection
default='ship_only'
help='Default outgoing route to follow'
required=True
args: [('ship_only', 'Deliver goods directly (1 step)'), ('pick_ship', 'Send goods in output and then deliver (2 steps)'), ('pick_pack_ship', 'Pack goods, send goods in output and then deliver (3 steps)')], 'Outgoing Shipments'
in_type_id
Many2one → stock.picking.type
int_type_id
Many2one → stock.picking.type
lot_stock_id
Many2one → stock.location
domain=[('usage', '=', 'internal')]
required=True
args: 'stock.location', 'Location Stock'
mto_pull_id
Many2one → stock.rule
name
Char
default=<expr>
index=True
required=True
args: 'Warehouse'
out_type_id
Many2one → stock.picking.type
pack_type_id
Many2one → stock.picking.type
partner_id
Many2one → res.partner
pick_type_id
Many2one → stock.picking.type
reception_route_id
Many2one → stock.location.route
ondelete='restrict'
args: 'stock.location.route', 'Receipt Route'
reception_steps
Selection
default='one_step'
help='Default incoming route to follow'
required=True
args: [('one_step', 'Receive goods directly (1 step)'), ('two_steps', 'Receive goods in input and then stock (2 steps)'), ('three_steps', 'Receive goods in input, then quality and then stock (3 steps)')], 'Incoming Shipments'
resupply_route_ids
One2many → stock.location.route
help='Routes will be created for these resupply warehouses and you can select them on products and product categories'
args: 'stock.location.route', 'supplied_wh_id', 'Resupply Routes'
resupply_wh_ids
Many2many → stock.warehouse
help='Routes will be created automatically to resupply this warehouse from the warehouses ticked'
args: 'stock.warehouse', 'stock_wh_resupply_table', 'supplied_wh_id', 'supplier_wh_id', 'Resupply From'
route_ids
Many2many → stock.location.route
domain="[('warehouse_selectable', '=', True)]"
help='Defaults routes through the warehouse'
args: 'stock.location.route', 'stock_route_warehouse', 'warehouse_id', 'route_id', 'Routes'
show_resupply
Boolean
compute='_compute_show_resupply'
view_location_id
Many2one → stock.location
domain=[('usage', '=', 'view')]
required=True
args: 'stock.location', 'View Location'
warehouse_count
Integer
compute='_compute_warehouse_count'
warehouse_count
Integer
compute='_compute_warehouse_count'
wh_input_stock_loc_id
Many2one → stock.location
wh_output_stock_loc_id
Many2one → stock.location
wh_pack_stock_loc_id
Many2one → stock.location
wh_qc_stock_loc_id
Many2one → stock.location
action_view_all_routes(self)
create(self, vals)
create_resupply_routes(self, supplier_warehouses)
get_rules_dict(self)
write(self, vals)
active
Boolean
default=True
help='If the active field is set to False, it will allow you to hide the orderpoint without removing it.'
args: 'Active'
company_id
Many2one → res.company
default=<expr>
required=True
args: 'res.company', 'Company'
group_id
Many2one → procurement.group
copy=False
help='Moves created through this orderpoint will be put in this procurement group. If none is given, the moves generated by stock rules will be grouped into one big picking.'
args: 'procurement.group', 'Procurement Group'
lead_days
Integer
default=1
help='Number of days after the orderpoint is triggered to receive the products or to order to the vendor'
args: 'Lead Time'
lead_type
Selection
default='supplier'
required=True
args: [('net', 'Day(s) to get the products'), ('supplier', 'Day(s) to purchase')], 'Lead Type'
location_id
Many2one → stock.location
ondelete='cascade'
required=True
args: 'stock.location', 'Location'
name
Char
copy=False
default=<expr>
required=True
args: 'Name'
product_id
Many2one → product.product
domain=[('type', '=', 'product')]
ondelete='cascade'
required=True
args: 'product.product', 'Product'
product_max_qty
Float
digits=dp.get_precision('Product Unit of Measure')
help='When the virtual stock goes below the Min Quantity, Odoo generates a procurement to bring the forecasted quantity to the Quantity specified as Max Quantity.'
required=True
args: 'Maximum Quantity'
product_min_qty
Float
digits=dp.get_precision('Product Unit of Measure')
help='When the virtual stock goes below the Min Quantity specified for this field, Odoo generates a procurement to bring the forecasted quantity to the Max Quantity.'
required=True
args: 'Minimum Quantity'
product_uom
Many2one → uom.uom
default=<expr>
readonly=True
related='product_id.uom_id'
required=True
args: 'uom.uom', 'Product Unit of Measure'
qty_multiple
Float
default=1
digits=dp.get_precision('Product Unit of Measure')
help='The procurement quantity will be rounded up to this multiple. If it is 0, the exact quantity will be used.'
required=True
args: 'Qty Multiple'
warehouse_id
Many2one → stock.warehouse
ondelete='cascade'
required=True
args: 'stock.warehouse', 'Warehouse'
default_get(self, fields)
onchange_product_id(self)
onchange_warehouse_id(self)
location_id
Many2one → stock.location
domain="[('usage', '=', 'internal')]"
required=True
args: 'stock.location', 'Location'
product_id
Many2one → product.product
required=True
args: 'product.product', 'Product'
quant_ids
Many2many → stock.quant
compute='_compute_quant_ids'
args: 'stock.quant'
action_done(self)
scrap_id
Many2one → stock.scrap
action_cancel(self)
action_done(self)
No new fields.
Public methods (1)write(self, values)
| XML ID | Name | Model | Type | Status |
|---|---|---|---|---|
assets_common |
stock_location_barcodes pdf assets | ir.ui.view | qweb | Inherits web.report_assets_common |
assets_stock_print_report |
assets_stock_print_report | ir.ui.view | qweb | Inherits web.assets_common |
inventory_planner |
inventory_planner | ir.ui.view | qweb | New |
message_body |
message_body | ir.ui.view | qweb | New |
message_head |
message_head | ir.ui.view | qweb | New |
procurement_group_form_view |
procurement.group.form | procurement.group | form | New |
product_category_form_view_inherit |
product.category.form | product.category | group | Inherits product.product_category_form_view |
product_form_view_procurement_button |
product.product.procurement | product.product | data | Inherits product.product_normal_form_view |
product_product_view_form_easy_inherit_stock |
product.product.view.form.easy.inherit.stock | product.product | sheet | Inherits product.product_variant_easy_edit_view |
product_search_form_view_stock |
product.search.stock.form | product.product | field | Inherits product.product_search_form_view |
product_template_form_view_procurement_button |
product.template_procurement | product.template | data | Inherits product.product_template_only_form_view |
product_template_kanban_stock_view |
Product Template Kanban Stock | product.template | field | Inherits product.product_template_kanban_view |
product_template_search_form_view_stock |
product.template.search.stock.form | product.template | field | Inherits product.product_template_search_view |
quant_package_search_view |
stock.quant.package.search | stock.quant.package | search | New |
quant_search_view |
stock.quant.search | stock.quant | search | New |
report_delivery_document |
report_delivery_document | ir.ui.view | qweb | New |
report_deliveryslip |
report_deliveryslip | ir.ui.view | qweb | New |
report_inventory |
report_inventory | ir.ui.view | qweb | New |
report_location_barcode |
report_location_barcode | ir.ui.view | qweb | New |
report_lot_barcode |
report_lot_barcode | ir.ui.view | qweb | New |
report_mrp_line |
report_mrp_line | ir.ui.view | qweb | New |
report_package_barcode |
report_package_barcode | ir.ui.view | qweb | New |
report_package_barcode_small |
report_package_barcode_small | ir.ui.view | qweb | New |
report_picking |
report_picking | ir.ui.view | qweb | New |
report_stock_body_print |
report_stock_body_print | ir.ui.view | qweb | New |
report_stock_inventory |
report_stock_inventory | ir.ui.view | qweb | New |
report_stock_inventory_print |
report_stock_inventory_print | ir.ui.view | qweb | New |
res_config_settings_view_form |
res.config.settings.view.form.inherit.stock | res.config.settings | xpath | Inherits base.res_config_settings_view_form |
search_product_lot_filter |
Production Lots Filter | stock.production.lot | search | New |
stock_assets_backend |
mrp_workorder assets | ir.ui.view | qweb | Inherits web.assets_backend |
stock_incoterms_form |
stock.incoterms.form | stock.incoterms | form | New |
stock_incoterms_view_search |
stock.incoterms.search | stock.incoterms | search | New |
stock_inventory_line_search |
stock.inventory.line.search | stock.inventory.line | search | New |
stock_inventory_line_tree |
stock.inventory.line.tree | stock.inventory.line | tree | New |
stock_inventory_line_tree2 |
stock.inventory.line.tree2 | stock.inventory.line | tree | New |
stock_location_path_filter |
stock.location.path.select | stock.location.path | search | New |
stock_location_path_form |
stock.location.path.form | stock.location.path | form | New |
stock_location_path_tree |
stock.location.path.tree | stock.location.path | tree | New |
stock_location_route_form_view |
stock.location.route.form | stock.location.route | form | New |
stock_location_route_tree |
stock.location.route.tree | stock.location.route | tree | New |
stock_location_route_view_search |
stock.location.route.search | stock.location.route | search | New |
stock_location_view_form_editable |
stock.location.form.editable | stock.location | xpath | Inherits stock.view_location_form |
stock_location_view_tree2_editable |
stock.location.tree2.editable | stock.location | xpath | Inherits stock.view_location_tree2 |
stock_move_line_view_search |
stock.move.line.search | stock.move.line | search | New |
stock_move_tree |
Stock Moves | stock.move | tree | New |
stock_move_view_kanban |
stock.move.kanban2 | stock.move | kanban | New |
stock_picking_calendar |
stock.picking.calendar | stock.picking | calendar | New |
stock_picking_kanban |
stock.picking.kanban | stock.picking | kanban | New |
stock_picking_type_kanban |
stock.picking.type.kanban | stock.picking.type | kanban | New |
stock_quant_view_graph |
stock.quant.graph | stock.quant | graph | New |
stock_scrap_form_view |
stock.scrap.form | stock.scrap | form | New |
stock_scrap_form_view2 |
stock.scrap.form2 | stock.scrap | form | New |
stock_scrap_search_view |
stock.scrap.search | stock.scrap | search | New |
stock_scrap_tree_view |
stock.scrap.tree | stock.scrap | tree | New |
stock_warehouse_view_form_editable |
stock.warehouse.form.editable | stock.warehouse | xpath | Inherits stock.view_warehouse |
stock_warehouse_view_search |
stock.warehouse.search | stock.warehouse | search | New |
stock_warehouse_view_tree_editable |
stock.warehouse.tree.editable | stock.warehouse | xpath | Inherits stock.view_warehouse_tree |
stock_warn_insufficient_qty_form_view |
stock.warn.insufficient.qty | stock.warn.insufficient.qty | form | New |
stock_warn_insufficient_qty_scrap_form_view |
stock.warn.insufficient.qty.scrap | stock.warn.insufficient.qty.scrap | xpath | Inherits stock.stock_warn_insufficient_qty_form_view |
track_move_template |
track_move_template | ir.ui.view | qweb | New |
view_backorder_confirmation |
stock_backorder_confirmation | stock.backorder.confirmation | form | New |
view_change_product_quantity |
Change Product Quantity | stock.change.product.qty | form | New |
view_immediate_transfer |
stock.immediate.transfer.view.form | stock.immediate.transfer | form | New |
view_incoterms_tree |
stock.incoterms.tree | stock.incoterms | tree | New |
view_inventory_filter |
stock.inventory.filter | stock.inventory | search | New |
view_inventory_form |
stock.inventory.form | stock.inventory | form | New |
view_inventory_tree |
stock.inventory.tree | stock.inventory | tree | New |
view_location_form |
stock.location.form | stock.location | form | New |
view_location_search |
stock.location.search | stock.location | search | New |
view_location_tree2 |
stock.location.tree | stock.location | tree | New |
view_move_form |
stock.move.form | stock.move | form | New |
view_move_graph |
stock.move.graph | stock.move | graph | New |
view_move_kandan |
stock.move.kanban | stock.move | kanban | New |
view_move_line_form |
stock.move.line.form | stock.move.line | form | New |
view_move_line_tree |
stock.move.line.tree | stock.move.line | tree | New |
view_move_picking_form |
stock.move.form | stock.move | form | New |
view_move_picking_tree |
stock.move.tree | stock.move | tree | New |
view_move_pivot |
stock.move.pivot | stock.move | pivot | New |
view_move_search |
stock.move.search | stock.move | search | New |
view_move_tree |
stock.move.tree | stock.move | tree | New |
view_move_tree_receipt_picking |
stock.move.tree2 | stock.move | tree | New |
view_move_tree_receipt_picking_board |
stock.move.tree3 | stock.move | tree | New |
view_overprocessed_transfer |
stock.overprocessed.transfer.view.form | stock.overprocessed.transfer | form | New |
view_partner_stock_form |
res.partner.stock.property.form.inherit | res.partner | xpath | Inherits mail.res_partner_view_form_inherit_mail |
view_partner_stock_warnings_form |
res.partner.stock.warning | res.partner | page | Inherits base.view_partner_form |
view_picking_form |
stock.picking.form | stock.picking | form | New |
view_picking_internal_search |
stock.picking.internal.search | stock.picking | search | New |
view_picking_move_tree |
stock.picking.move.tree | stock.move | tree | New |
view_picking_type_form |
Operation Types | stock.picking.type | form | New |
view_picking_type_list |
stock.picking.type.list | stock.picking.type | tree | New |
view_picking_type_tree |
Operation types | stock.picking.type | tree | New |
view_pickingtype_filter |
stock.picking.type.filter | stock.picking.type | search | New |
view_procurement_compute_wizard |
Run Schedulers Manually | stock.scheduler.compute | form | New |
view_procurement_rule_filter |
procurement.rule.select | procurement.rule | search | New |
view_procurement_rule_form |
procurement.rule.form | procurement.rule | form | New |
view_procurement_rule_tree |
procurement.rule.tree | procurement.rule | tree | New |
view_production_lot_form |
stock.production.lot.form | stock.production.lot | form | New |
view_production_lot_form_simple |
stock.production.lot.form.simple | stock.production.lot | form | New |
view_production_lot_tree |
stock.production.lot.tree | stock.production.lot | tree | New |
view_putaway |
product.putaway.form | product.putaway | form | New |
view_quant_package_form |
stock.quant.package.form | stock.quant.package | form | New |
view_quant_package_kanban |
stock.quant.package.kanban | stock.quant.package | kanban | New |
view_quant_package_picking_tree |
stock.quant.package.picking.tree | stock.quant.package | tree | New |
view_quant_package_tree |
stock.quant.package.tree | stock.quant.package | tree | New |
view_removal |
product.removal.form | product.removal | form | New |
view_stock_inventory_kanban |
stock.inventory.kanban | stock.inventory | kanban | New |
view_stock_level_forecast_filter |
view.stock.level.forecast.filter | report.stock.forecast | search | New |
view_stock_level_forecast_graph |
Stock.forecast.graph | report.stock.forecast | graph | New |
view_stock_level_forecast_pivot |
Stock.forecast.pivot | report.stock.forecast | pivot | New |
view_stock_move_kanban |
stock.move.kanban | stock.move | kanban | New |
view_stock_move_line_kanban |
stock.move.line.kanban | stock.move.line | kanban | New |
view_stock_move_line_operation_tree |
stock.move.line.operations.tree | stock.move.line | tree | New |
view_stock_move_nosuggest_operations |
stock.move.operations.nosuggest.form | stock.move | field | Inherits stock.view_stock_move_operations |
view_stock_move_operations |
stock.move.operations.form | stock.move | form | New |
view_stock_product_template_tree |
product.template.stock.tree.inherit | product.template | tree | Inherits product.product_template_tree_view |
view_stock_product_tree |
product.stock.tree.inherit | product.product | tree | Inherits product.product_product_tree_view |
view_stock_quant_form |
stock.quant.form | stock.quant | form | New |
view_stock_quant_pivot |
stock.quant.pivot | stock.quant | pivot | New |
view_stock_quant_tree |
stock.quant.tree | stock.quant | tree | New |
view_stock_quantity_history |
Inventory Report | stock.quantity.history | form | New |
view_stock_return_picking_form |
Return lines | stock.return.picking | form | New |
view_stock_warehouse_orderpoint_kanban |
stock.warehouse.orderpoint.kanban | stock.warehouse.orderpoint | kanban | New |
view_template_property_form |
product.template.stock.property.form.inherit | product.template | group | Inherits product.product_template_form_view |
view_warehouse |
stock.warehouse | stock.warehouse | form | New |
view_warehouse_orderpoint_form |
stock.warehouse.orderpoint.form | stock.warehouse.orderpoint | form | New |
view_warehouse_orderpoint_tree |
stock.warehouse.orderpoint.tree | stock.warehouse.orderpoint | tree | New |
view_warehouse_tree |
stock.warehouse.tree | stock.warehouse | tree | New |
vpicktree |
stock.picking.tree | stock.picking | tree | New |
warehouse_orderpoint_search |
stock.warehouse.orderpoint.search | stock.warehouse.orderpoint | search | New |
type
Selection
selection_add=[('weight', 'Weighted Product'), ('location', 'Location'), ('lot', 'Lot'), ('package', 'Package')]
No public methods.
move_type
Selection
default='direct'
required=True
string='Delivery Type'
args: [('direct', 'Partial'), ('one', 'All at once')]
name
Char
default=<expr>
required=True
args: 'Reference'
partner_id
Many2one → res.partner
run(self, product_id, product_qty, product_uom, location_id, name, origin, values)
run_scheduler(self, use_new_cursor=False, company_id=False)
action
Selection
required=True
selection=[('move', 'Move From Another Location')]
string='Action'
active
Boolean
default=True
help='If unchecked, it will allow you to hide the rule without removing it.'
args: 'Active'
company_id
Many2one → res.company
delay
Integer
default=0
args: 'Number of Days'
group_id
Many2one → procurement.group
group_propagation_option
Selection
default='propagate'
string='Propagation of Procurement Group'
args: [('none', 'Leave Empty'), ('propagate', 'Propagate'), ('fixed', 'Fixed')]
location_id
Many2one → stock.location
location_src_id
Many2one → stock.location
help='Source location is action=move'
args: 'stock.location', 'Source Location'
name
Char
help='This field will fill the packing origin and the name of its moves'
required=True
translate=True
args: 'Name'
partner_address_id
Many2one → res.partner
picking_type_id
Many2one → stock.picking.type
help='Operation Type determines the way the picking should be shown in the view, reports, ...'
required=True
args: 'stock.picking.type', 'Operation Type'
procure_method
Selection
default='make_to_stock'
help="Determines the procurement method of the stock move that will be generated: whether it will need to 'take from the available stock' in its source location or needs to ignore its stock and create a procurement over there."
required=True
string='Move Supply Method'
args: [('make_to_stock', 'Take From Stock'), ('make_to_order', 'Create Procurement')]
propagate
Boolean
default=True
help='If checked, when the previous move of the move (which was generated by a next procurement) is cancelled or split, the move generated by this move will too'
args: 'Propagate cancel and split'
propagate_warehouse_id
Many2one → stock.warehouse
help='The warehouse to propagate on the created move/procurement, which can be different of the warehouse this rule is for (e.g for resupplying rules from another warehouse)'
args: 'stock.warehouse', 'Warehouse to Propagate'
route_id
Many2one → stock.location.route
ondelete='cascade'
required=True
args: 'stock.location.route', 'Route'
route_sequence
Integer
related='route_id.sequence'
store=True
args: 'Route Sequence'
sequence
Integer
default=20
args: 'Sequence'
warehouse_id
Many2one → stock.warehouse
help='The warehouse this rule is for'
args: 'stock.warehouse', 'Served Warehouse'
No public methods.
removal_strategy_id
Many2one → product.removal
help='Set a specific removal strategy that will be used regardless of the source location for this product category'
args: 'product.removal', 'Force Removal Strategy'
route_ids
Many2many → stock.location.route
domain=[('product_categ_selectable', '=', True)]
args: 'stock.location.route', 'stock_location_route_categ', 'categ_id', 'route_id', 'Routes'
total_route_ids
Many2many → stock.location.route
compute='_compute_total_route_ids'
readonly=True
string='Total routes'
args: 'stock.location.route'
No public methods.
incoming_qty
Float
compute='_compute_quantities'
digits=dp.get_precision('Product Unit of Measure')
help="Quantity of planned incoming products.\nIn a context with a single Stock Location, this includes goods arriving to this Location, or any of its children.\nIn a context with a single Warehouse, this includes goods arriving to the Stock Location of this Warehouse, or any of its children.\nOtherwise, this includes goods arriving to any Stock Location with 'internal' type."
search='_search_incoming_qty'
args: 'Incoming'
nbr_reordering_rules
Integer
compute='_compute_nbr_reordering_rules'
args: 'Reordering Rules'
orderpoint_ids
One2many → stock.warehouse.orderpoint
outgoing_qty
Float
compute='_compute_quantities'
digits=dp.get_precision('Product Unit of Measure')
help="Quantity of planned outgoing products.\nIn a context with a single Stock Location, this includes goods leaving this Location, or any of its children.\nIn a context with a single Warehouse, this includes goods leaving the Stock Location of this Warehouse, or any of its children.\nOtherwise, this includes goods leaving any Stock Location with 'internal' type."
search='_search_outgoing_qty'
args: 'Outgoing'
qty_available
Float
compute='_compute_quantities'
digits=dp.get_precision('Product Unit of Measure')
help="Current quantity of products.\nIn a context with a single Stock Location, this includes goods stored at this Location, or any of its children.\nIn a context with a single Warehouse, this includes goods stored in the Stock Location of this Warehouse, or any of its children.\nstored in the Stock Location of the Warehouse of this Shop, or any of its children.\nOtherwise, this includes goods stored in any Stock Location with 'internal' type."
search='_search_qty_available'
args: 'Quantity On Hand'
reordering_max_qty
Float
compute='_compute_nbr_reordering_rules'
reordering_min_qty
Float
compute='_compute_nbr_reordering_rules'
stock_move_ids
One2many → stock.move
help='Technical: used to compute quantities.'
args: 'stock.move', 'product_id'
stock_quant_ids
One2many → stock.quant
help='Technical: used to compute quantities.'
args: 'stock.quant', 'product_id'
virtual_available
Float
compute='_compute_quantities'
digits=dp.get_precision('Product Unit of Measure')
help="Forecast quantity (computed as Quantity On Hand - Outgoing + Incoming)\nIn a context with a single Stock Location, this includes goods stored in this location, or any of its children.\nIn a context with a single Warehouse, this includes goods stored in the Stock Location of this Warehouse, or any of its children.\nOtherwise, this includes goods stored in any Stock Location with 'internal' type."
search='_search_virtual_available'
args: 'Forecast Quantity'
action_open_product_lot(self)
action_view_routes(self)
action_view_stock_move_lines(self)
fields_view_get(self, view_id=None, view_type='form', toolbar=False, submenu=False)
onchange_tracking(self)
view_header_get(self, view_id, view_type)
write(self, values)
fixed_location_ids
One2many → stock.fixed.putaway.strat
copy=True
help='When the method is fixed, this location will be used to store the products'
args: 'stock.fixed.putaway.strat', 'putaway_id', 'Fixed Locations Per Product Category'
name
Char
required=True
args: 'Name'
putaway_apply(self, product)
method
Char
help='FIFO, LIFO...'
required=True
args: 'Method'
name
Char
required=True
args: 'Name'
No public methods.
description_picking
Text
translate=True
args: 'Description on Picking'
description_pickingin
Text
translate=True
args: 'Description on Receptions'
description_pickingout
Text
translate=True
args: 'Description on Delivery Orders'
incoming_qty
Float
compute='_compute_quantities'
digits=dp.get_precision('Product Unit of Measure')
search='_search_incoming_qty'
args: 'Incoming'
location_id
Many2one → stock.location
search=<expr>
store=False
args: 'stock.location', 'Location'
nbr_reordering_rules
Integer
compute='_compute_nbr_reordering_rules'
args: 'Reordering Rules'
outgoing_qty
Float
compute='_compute_quantities'
digits=dp.get_precision('Product Unit of Measure')
search='_search_outgoing_qty'
args: 'Outgoing'
property_stock_inventory
Many2one → stock.location
company_dependent=True
domain=[('usage', 'like', 'inventory')]
help='This stock location will be used, instead of the default one, as the source location for stock moves generated when you do an inventory.'
args: 'stock.location', 'Inventory Location'
property_stock_production
Many2one → stock.location
company_dependent=True
domain=[('usage', 'like', 'production')]
help='This stock location will be used, instead of the default one, as the source location for stock moves generated by manufacturing orders.'
args: 'stock.location', 'Production Location'
qty_available
Float
compute='_compute_quantities'
digits=dp.get_precision('Product Unit of Measure')
search='_search_qty_available'
args: 'Quantity On Hand'
reordering_max_qty
Float
compute='_compute_nbr_reordering_rules'
reordering_min_qty
Float
compute='_compute_nbr_reordering_rules'
responsible_id
Many2one → res.users
default=<expr>
required=True
string='Responsible'
args: 'res.users'
route_from_categ_ids
Many2many
related='categ_id.total_route_ids'
relation='stock.location.route'
string='Category Routes'
route_ids
Many2many → stock.location.route
domain=[('product_selectable', '=', True)]
help='Depending on the modules installed, this will allow you to define the route of the product: whether it will be bought, manufactured, MTO/MTS,...'
args: 'stock.location.route', 'stock_route_product', 'product_id', 'route_id', 'Routes'
sale_delay
Float
default=0
help="The average delay in days between the confirmation of the customer order and the delivery of the finished products. It's the time you promise to your customers."
args: 'Customer Lead Time'
tracking
Selection
default='none'
required=True
string='Tracking'
args: [('serial', 'By Unique Serial Number'), ('lot', 'By Lots'), ('none', 'No Tracking')]
type
Selection
selection_add=[('product', 'Stockable Product')]
track_visibility='onchange'
virtual_available
Float
compute='_compute_quantities'
digits=dp.get_precision('Product Unit of Measure')
search='_search_virtual_available'
args: 'Forecasted Quantity'
warehouse_id
Many2one → stock.warehouse
search=<expr>
store=False
args: 'stock.warehouse', 'Warehouse'
action_open_product_lot(self)
action_open_quants(self)
action_view_orderpoints(self)
action_view_routes(self)
action_view_stock_move_lines(self)
onchange_tracking(self)
write(self, vals)
No new fields.
Public methods (1)write(self, values)
cumulative_quantity
Float
readonly=True
string='Cumulative Quantity'
date
Date
string='Date'
product_id
Many2one → product.product
readonly=True
string='Product'
args: 'product.product'
product_tmpl_id
Many2one → product.template
readonly=True
related='product_id.product_tmpl_id'
string='Product Template'
args: 'product.template'
quantity
Float
readonly=True
init(self)
internal_transit_location_id
Many2one → stock.location
help='Technical field used for resupply routes between warehouses that belong to this company'
on_delete='restrict'
args: 'stock.location', 'Internal Transit Location'
propagation_minimum_delta
Integer
default=1
args: 'Minimum Delta for Propagation of a Date Change on moves linked together'
create(self, vals)
create_transit_location(self)
group_stock_adv_location
Boolean
help='Add and customize route operations to process product moves in your warehouse(s): e.g. unload > quality control > stock for incoming products, pick > pack > ship for outgoing products. \n You can also set putaway strategies on warehouse locations in order to send incoming products into specific child locations straight away (e.g. specific bins, racks).'
implied_group='stock.group_adv_location'
args: 'Multi-Step Routes'
group_stock_multi_locations
Boolean
help='Store products in specific locations of your warehouse (e.g. bins, racks) and to track inventory accordingly.'
implied_group='stock.group_stock_multi_locations'
args: 'Storage Locations'
group_stock_multi_warehouses
Boolean
implied_group='stock.group_stock_multi_warehouses'
args: 'Multi-Warehouses'
group_stock_production_lot
Boolean
implied_group='stock.group_production_lot'
args: 'Lots & Serial Numbers'
group_stock_tracking_lot
Boolean
implied_group='stock.group_tracking_lot'
args: 'Delivery Packages'
group_stock_tracking_owner
Boolean
implied_group='stock.group_tracking_owner'
args: 'Consignment'
group_warning_stock
Boolean
implied_group='stock.group_warning_stock'
args: 'Warnings'
module_delivery_bpost
Boolean
module_delivery_dhl
Boolean
module_delivery_fedex
Boolean
module_delivery_ups
Boolean
module_delivery_usps
Boolean
module_procurement_jit
Selection
help='Reserving products manually in delivery orders or by running the scheduler is advised to better manage priorities in case of long customer lead times or/and frequent stock-outs.'
args: [(1, 'Immediately after sales order confirmation'), (0, 'Manually or based on automatic scheduler')], 'Reservation'
module_product_expiry
Boolean
help='Track following dates on lots & serial numbers: best before, removal, end of life, alert. \n Such dates are set automatically at lot/serial number creation based on values set on the product (in days).'
args: 'Expiration Dates'
module_stock_barcode
Boolean
module_stock_picking_batch
Boolean
oldname='module_stock_picking_wave'
args: 'Batch Pickings'
propagation_minimum_delta
Integer
related='company_id.propagation_minimum_delta'
string='No Rescheduling Propagation'
use_propagation_minimum_delta
Boolean
help='Rescheduling applies to any chain of operations (e.g. Make To Order, Pick Pack Ship). In the case of MTO sales, a vendor delay (updated incoming date) impacts the expected delivery date to the customer. \n This option allows to not propagate the rescheduling if the change is not critical.'
oldname='default_new_propagation_minimum_delta'
string='No Rescheduling Propagation'
get_values(self)
onchange_adv_location(self)
set_values(self)
picking_warn
Selection
default='no-message'
help=WARNING_HELP
required=True
args: WARNING_MESSAGE, 'Stock Picking'
picking_warn_msg
Text
property_stock_customer
Many2one → stock.location
company_dependent=True
help='This stock location will be used, instead of the default one, as the destination location for goods you send to this partner'
string='Customer Location'
args: 'stock.location'
property_stock_supplier
Many2one → stock.location
company_dependent=True
help='This stock location will be used, instead of the default one, as the source location for goods you receive from the current partner'
string='Vendor Location'
args: 'stock.location'
No public methods.
pick_ids
Many2many → stock.picking
process(self)
process_cancel_backorder(self)
location_id
Many2one → stock.location
domain="[('usage', '=', 'internal')]"
required=True
args: 'stock.location', 'Location'
lot_id
Many2one → stock.production.lot
domain="[('product_id','=',product_id)]"
args: 'stock.production.lot', 'Lot/Serial Number'
new_quantity
Float
default=1
digits=dp.get_precision('Product Unit of Measure')
help='This quantity is expressed in the Default Unit of Measure of the product.'
required=True
args: 'New Quantity on Hand'
product_id
Many2one → product.product
required=True
args: 'product.product', 'Product'
product_tmpl_id
Many2one → product.template
required=True
args: 'product.template', 'Template'
product_variant_count
Integer
related='product_tmpl_id.product_variant_count'
args: 'Variant Count'
change_product_qty(self)
check_new_quantity(self)
create(self, values)
default_get(self, fields)
onchange_location_id(self)
onchange_product_id(self)
onchange_product_id_dict(self, product_id)
category_id
Many2one → product.category
required=True
args: 'product.category', 'Product Category'
fixed_location_id
Many2one → stock.location
required=True
args: 'stock.location', 'Location'
putaway_id
Many2one → product.putaway
required=True
args: 'product.putaway', 'Put Away Method'
sequence
Integer
help='Give to the more specialized category, a higher priority to have them in top of the list.'
args: 'Priority'
No public methods.
pick_ids
Many2many → stock.picking
process(self)
active
Boolean
default=True
help='By unchecking the active field, you may hide an INCOTERM you will not use.'
args: 'Active'
code
Char
help='Incoterm Standard Code'
required=True
size=3
args: 'Code'
name
Char
help='Incoterms are series of sales terms. They are used to divide transaction costs and responsibilities between buyer and seller and reflect state-of-the-art transportation practices.'
required=True
translate=True
args: 'Name'
No public methods.
category_id
Many2one → product.category
help='Specify Product Category to focus your inventory on a particular Category.'
readonly=True
states={'draft': [('readonly', False)]}
args: 'product.category', 'Inventoried Category'
company_id
Many2one → res.company
default=<expr>
index=True
readonly=True
required=True
states={'draft': [('readonly', False)]}
args: 'res.company', 'Company'
date
Datetime
default=fields.Datetime.now
help='The date that will be used for the stock level check of the products and the validation of the stock move related to this inventory.'
readonly=True
required=True
args: 'Inventory Date'
exhausted
Boolean
readonly=True
states={'draft': [('readonly', False)]}
args: 'Include Exhausted Products'
filter
Selection
default='none'
help="If you do an entire inventory, you can choose 'All Products' and it will prefill the inventory with the current stock. If you only do some products (e.g. Cycle Counting) you can choose 'Manual Selection of Products' and the system won't propose anything. You can also let the system propose for a single product / lot /... "
required=True
selection='_selection_filter'
string='Inventory of'
line_ids
One2many → stock.inventory.line
copy=True
readonly=False
states={'done': [('readonly', True)]}
string='Inventories'
args: 'stock.inventory.line', 'inventory_id'
location_id
Many2one → stock.location
default=_default_location_id
readonly=True
required=True
states={'draft': [('readonly', False)]}
args: 'stock.location', 'Inventoried Location'
lot_id
Many2one → stock.production.lot
copy=False
help='Specify Lot/Serial Number to focus your inventory on a particular Lot/Serial Number.'
readonly=True
states={'draft': [('readonly', False)]}
args: 'stock.production.lot', 'Inventoried Lot/Serial Number'
move_ids
One2many → stock.move
states={'done': [('readonly', True)]}
string='Created Moves'
args: 'stock.move', 'inventory_id'
name
Char
readonly=True
required=True
states={'draft': [('readonly', False)]}
args: 'Inventory Reference'
package_id
Many2one → stock.quant.package
help='Specify Pack to focus your inventory on a particular Pack.'
readonly=True
states={'draft': [('readonly', False)]}
args: 'stock.quant.package', 'Inventoried Pack'
partner_id
Many2one → res.partner
help='Specify Owner to focus your inventory on a particular Owner.'
readonly=True
states={'draft': [('readonly', False)]}
args: 'res.partner', 'Inventoried Owner'
product_id
Many2one → product.product
help='Specify Product to focus your inventory on a particular Product.'
readonly=True
states={'draft': [('readonly', False)]}
args: 'product.product', 'Inventoried Product'
state
Selection
copy=False
default='draft'
index=True
readonly=True
selection=[('draft', 'Draft'), ('cancel', 'Cancelled'), ('confirm', 'In Progress'), ('done', 'Validated')]
string='Status'
total_qty
Float
compute='_compute_total_qty'
args: 'Total Quantity'
action_cancel_draft(self)
action_check(self)
action_done(self)
action_inventory_line_tree(self)
action_reset_product_qty(self)
action_start(self)
onchange_filter(self)
onchange_location_id(self)
post_inventory(self)
unlink(self)
company_id
Many2one → res.company
index=True
readonly=True
related='inventory_id.company_id'
store=True
args: 'res.company', 'Company'
inventory_id
Many2one → stock.inventory
index=True
ondelete='cascade'
args: 'stock.inventory', 'Inventory'
inventory_location_id
Many2one → stock.location
related='inventory_id.location_id'
related_sudo=False
args: 'stock.location', 'Location'
location_id
Many2one → stock.location
index=True
required=True
args: 'stock.location', 'Location'
location_name
Char
related='location_id.complete_name'
store=True
args: 'Location Name'
package_id
Many2one → stock.quant.package
index=True
args: 'stock.quant.package', 'Pack'
partner_id
Many2one → res.partner
prod_lot_id
Many2one → stock.production.lot
domain="[('product_id','=',product_id)]"
args: 'stock.production.lot', 'Lot/Serial Number'
prodlot_name
Char
readonly=True
related='prod_lot_id.name'
store=True
args: 'Serial Number Name'
product_code
Char
compute_sudo=True
readonly=True
related='product_id.default_code'
store=True
args: 'Product Code'
product_id
Many2one → product.product
domain=[('type', '=', 'product')]
index=True
required=True
args: 'product.product', 'Product'
product_name
Char
compute_sudo=True
readonly=True
related='product_id.name'
store=True
args: 'Product Name'
product_qty
Float
default=0
digits=dp.get_precision('Product Unit of Measure')
args: 'Checked Quantity'
product_uom_id
Many2one → product.uom
default=<expr>
required=True
args: 'product.uom', 'Product Unit of Measure'
state
Selection
readonly=True
related='inventory_id.state'
args: 'Status'
theoretical_qty
Float
compute='_compute_theoretical_qty'
digits=dp.get_precision('Product Unit of Measure')
readonly=True
store=True
args: 'Theoretical Quantity'
create(self, values)
onchange_product(self)
onchange_quantity_context(self)
write(self, values)
active
Boolean
default=True
help='By unchecking the active field, you may hide a location without deleting it.'
args: 'Active'
barcode
Char
copy=False
oldname='loc_barcode'
args: 'Barcode'
child_ids
One2many → stock.location
comment
Text
company_id
Many2one → res.company
default=<expr>
help='Let this field empty if this location is shared between companies'
index=True
args: 'res.company', 'Company'
complete_name
Char
compute='_compute_complete_name'
store=True
args: 'Full Location Name'
location_id
Many2one → stock.location
help="The parent location that includes this location. Example : The 'Dispatch Zone' is the 'Gate 1' parent location."
index=True
ondelete='cascade'
args: 'stock.location', 'Parent Location'
name
Char
required=True
translate=True
args: 'Location Name'
parent_left
Integer
index=True
args: 'Left Parent'
parent_right
Integer
index=True
args: 'Right Parent'
partner_id
Many2one → res.partner
help='Owner of the location if not internal'
args: 'res.partner', 'Owner'
posx
Integer
default=0
help='Optional localization details, for information purpose only'
args: 'Corridor (X)'
posy
Integer
default=0
help='Optional localization details, for information purpose only'
args: 'Shelves (Y)'
posz
Integer
default=0
help='Optional localization details, for information purpose only'
args: 'Height (Z)'
putaway_strategy_id
Many2one → product.putaway
help='Defines the default method used for suggesting the exact location (shelf) where to store the products. This method can be enforced at the product category level, and a fallback is made on the parent locations if none is set here.'
args: 'product.putaway', 'Put Away Strategy'
quant_ids
One2many → stock.quant
removal_strategy_id
Many2one → product.removal
help='Defines the default method used for suggesting the exact location (shelf) where to take the products from, which lot etc. for this location. This method can be enforced at the product category level, and a fallback is made on the parent locations if none is set here.'
args: 'product.removal', 'Removal Strategy'
return_location
Boolean
help='Check this box to allow using this location as a return location.'
args: 'Is a Return Location?'
scrap_location
Boolean
default=False
help='Check this box to allow using this location to put scrapped/damaged goods.'
args: 'Is a Scrap Location?'
usage
Selection
default='internal'
help="* Vendor Location: Virtual location representing the source location for products coming from your vendors\n* View: Virtual location used to create a hierarchical structures for your warehouse, aggregating its child locations ; can't directly contain products\n* Internal Location: Physical locations inside your own warehouses,\n* Customer Location: Virtual location representing the destination location for products sent to your customers\n* Inventory Loss: Virtual location serving as counterpart for inventory operations used to correct stock levels (Physical inventories)\n* Procurement: Virtual location serving as temporary counterpart for procurement operations when the source (vendor or production) is not known yet. This location should be empty when the procurement scheduler has finished running.\n* Production: Virtual counterpart location for production operations: this location consumes the raw material and produces finished products\n* Transit Location: Counterpart location that should be used in inter-company or inter-warehouses operations"
index=True
required=True
string='Location Type'
args: [('supplier', 'Vendor Location'), ('view', 'View'), ('internal', 'Internal Location'), ('customer', 'Customer Location'), ('inventory', 'Inventory Loss'), ('procurement', 'Procurement'), ('production', 'Production'), ('transit', 'Transit Location')]
default_get(self, fields)
get_putaway_strategy(self, product)
get_warehouse(self)
name_get(self)
name_search(self, name, args=None, operator='ilike', limit=100)
should_bypass_reservation(self)
write(self, values)
active
Boolean
default=True
args: 'Active'
auto
Selection
default='manual'
help="The 'Manual Operation' value will create a stock move after the current one. With 'Automatic No Step Added', the location is replaced in the original move."
index=True
required=True
string='Automatic Move'
args: [('manual', 'Manual Operation'), ('transparent', 'Automatic No Step Added')]
company_id
Many2one → res.company
default=<expr>
index=True
args: 'res.company', 'Company'
delay
Integer
default=0
help='Number of days needed to transfer the goods'
args: 'Delay (days)'
location_dest_id
Many2one → stock.location
help='The new location where the goods need to go'
index=True
ondelete='cascade'
required=True
args: 'stock.location', 'Destination Location'
location_from_id
Many2one → stock.location
help='This rule can be applied when a move is confirmed that has this location as destination location'
index=True
ondelete='cascade'
required=True
args: 'stock.location', 'Source Location'
name
Char
required=True
args: 'Operation Name'
picking_type_id
Many2one → stock.picking.type
help='This is the operation type that will be put on the stock moves'
required=True
args: 'stock.picking.type', 'Operation Type'
propagate
Boolean
default=True
help='If checked, when the previous move is cancelled or split, the move generated by this move will too'
args: 'Propagate cancel and split'
route_id
Many2one → stock.location.route
ondelete='cascade'
required=True
args: 'stock.location.route', 'Route'
route_sequence
Integer
related='route_id.sequence'
store=True
args: 'Route Sequence'
sequence
Integer
warehouse_id
Many2one → stock.warehouse
No public methods.
active
Boolean
default=True
help='If the active field is set to False, it will allow you to hide the route without removing it.'
args: 'Active'
categ_ids
Many2many → product.category
company_id
Many2one → res.company
default=<expr>
help='Leave this field empty if this route is shared between all companies'
index=True
args: 'res.company', 'Company'
name
Char
required=True
translate=True
args: 'Route Name'
product_categ_selectable
Boolean
help='When checked, the route will be selectable on the Product Category. It will take priority over the Warehouse route. '
args: 'Applicable on Product Category'
product_ids
Many2many → product.template
product_selectable
Boolean
default=True
help='When checked, the route will be selectable in the Inventory tab of the Product form. It will take priority over the Warehouse route. '
args: 'Applicable on Product'
pull_ids
One2many → procurement.rule
copy=True
help='The demand represented by a procurement from e.g. a sale order, a reordering rule, another move, needs to be solved by applying a procurement rule. Depending on the action on the procurement rule,this triggers a purchase order, manufacturing order or another move. This way we create chains in the reverse order from the endpoint with the original demand to the starting point. That way, it is always known where we need to go and that is why they are preferred over push rules.'
args: 'procurement.rule', 'route_id', 'Procurement Rules'
push_ids
One2many → stock.location.path
copy=True
help='When a move is foreseen to a location, the push rule will automatically create a move to a next location after. This is mainly only needed when creating manual operations e.g. 2/3 step manual purchase order or 2/3 step finished product manual manufacturing order. In other cases, it is important to use pull rules where you know where you are going based on a demand.'
args: 'stock.location.path', 'route_id', 'Push Rules'
sequence
Integer
default=0
args: 'Sequence'
supplied_wh_id
Many2one → stock.warehouse
supplier_wh_id
Many2one → stock.warehouse
warehouse_ids
Many2many → stock.warehouse
warehouse_selectable
Boolean
help='When a warehouse is selected for this route, this route should be seen as the default route when products pass through this warehouse. This behaviour can be overridden by the routes on the Product/Product Categories or by the Preferred Routes on the Procurement'
args: 'Applicable on Warehouse'
view_categ_ids(self)
view_product_ids(self)
write(self, values)
additional
Boolean
default=False
args: "Whether the move was added after the picking's confirmation"
availability
Float
compute='_compute_product_availability'
help='Quantity in stock that can still be reserved for this move'
readonly=True
args: 'Forecasted Quantity'
backorder_id
Many2one → stock.picking
index=True
related='picking_id.backorder_id'
args: 'stock.picking', 'Back Order of'
company_id
Many2one → res.company
default=<expr>
index=True
required=True
args: 'res.company', 'Company'
create_date
Datetime
index=True
readonly=True
args: 'Creation Date'
date
Datetime
default=fields.Datetime.now
help='Move date: scheduled date until move is done, then date of actual move processing'
index=True
required=True
states={'done': [('readonly', True)]}
args: 'Date'
date_expected
Datetime
default=fields.Datetime.now
help='Scheduled date for the processing of this move'
index=True
required=True
states={'done': [('readonly', True)]}
args: 'Expected Date'
group_id
Many2one → procurement.group
default=_default_group_id
args: 'procurement.group', 'Procurement Group'
has_move_lines
Boolean
compute='_compute_has_move_lines'
has_tracking
Selection
readonly=True
related='product_id.tracking'
string='Product with Tracking'
inventory_id
Many2one → stock.inventory
is_initial_demand_editable
Boolean
compute='_compute_is_initial_demand_editable'
args: 'Is initial demand editable'
is_locked
Boolean
compute='_compute_is_locked'
readonly=True
is_quantity_done_editable
Boolean
compute='_compute_is_quantity_done_editable'
args: 'Is quantity done editable'
location_dest_id
Many2one → stock.location
auto_join=True
help='Location where the system will stock the finished products.'
index=True
required=True
args: 'stock.location', 'Destination Location'
location_id
Many2one → stock.location
auto_join=True
help='Sets a location if you produce at a fixed location. This can be a partner location if you subcontract the manufacturing operations.'
index=True
required=True
args: 'stock.location', 'Source Location'
move_dest_ids
Many2many → stock.move
copy=False
help='Optional: next stock move when chaining them'
args: 'stock.move', 'stock_move_move_rel', 'move_orig_id', 'move_dest_id', 'Destination Moves'
move_line_ids
One2many → stock.move.line
move_line_nosuggest_ids
One2many → stock.move.line
domain=[('product_qty', '=', 0.0)]
args: 'stock.move.line', 'move_id'
move_orig_ids
Many2many → stock.move
copy=False
help='Optional: previous stock move when chaining them'
args: 'stock.move', 'stock_move_move_rel', 'move_dest_id', 'move_orig_id', 'Original Move'
name
Char
index=True
required=True
args: 'Description'
note
Text
ordered_qty
Float
digits=dp.get_precision('Product Unit of Measure')
args: 'Ordered Quantity'
origin
Char
origin_returned_move_id
Many2one → stock.move
copy=False
help='Move that created the return move'
args: 'stock.move', 'Origin return move'
partner_id
Many2one → res.partner
help='Optional address where goods are to be delivered, specifically used for allotment'
states={'done': [('readonly', True)]}
args: 'res.partner', 'Destination Address '
picking_code
Selection
readonly=True
related='picking_id.picking_type_id.code'
picking_id
Many2one → stock.picking
index=True
states={'done': [('readonly', True)]}
args: 'stock.picking', 'Transfer Reference'
picking_partner_id
Many2one → res.partner
related='picking_id.partner_id'
args: 'res.partner', 'Transfer Destination Address'
picking_type_id
Many2one → stock.picking.type
price_unit
Float
copy=False
help="Technical field used to record the product cost set by the user during a picking confirmation (when costing method used is 'average price' or 'real'). Value given in company currency and in product uom."
args: 'Unit Price'
priority
Selection
default='1'
args: PROCUREMENT_PRIORITIES, 'Priority'
procure_method
Selection
default='make_to_stock'
help='By default, the system will take from the stock in the source location and passively wait for availability. The other possibility allows you to directly create a procurement on the source location (and thus ignore its current stock) to gather products. If we want to chain moves and have this one to wait for the previous, this second option should be chosen.'
required=True
string='Supply Method'
args: [('make_to_stock', 'Default: Take From Stock'), ('make_to_order', 'Advanced: Apply Procurement Rules')]
product_id
Many2one → product.product
domain=[('type', 'in', ['product', 'consu'])]
index=True
required=True
states={'done': [('readonly', True)]}
args: 'product.product', 'Product'
product_packaging
Many2one → product.packaging
help='It specifies attributes of packaging like type, quantity of packaging,etc.'
args: 'product.packaging', 'Preferred Packaging'
product_qty
Float
compute='_compute_product_qty'
compute_sudo=True
digits=0
help='Quantity in the default UoM of the product'
inverse='_set_product_qty'
store=True
args: 'Real Quantity'
product_tmpl_id
Many2one → product.template
help='Technical: used in views'
related='product_id.product_tmpl_id'
args: 'product.template', 'Product Template'
product_type
Selection
readonly=True
related='product_id.type'
product_uom
Many2one → product.uom
required=True
args: 'product.uom', 'Unit of Measure'
product_uom_qty
Float
default=0.0
digits=dp.get_precision('Product Unit of Measure')
help="This is the quantity of products from an inventory point of view. For moves in the state 'done', this is the quantity of products that were actually moved. For other moves, this is the quantity of product that is planned to be moved. Lowering this quantity does not generate a backorder. Changing this quantity on assigned moves affects the product reservation, and should be done with care."
required=True
states={'done': [('readonly', True)]}
args: 'Initial Demand'
propagate
Boolean
default=True
help='If checked, when this move is cancelled, cancel the linked move too'
args: 'Propagate cancel and split'
push_rule_id
Many2one → stock.location.path
help='The push rule that created this stock move'
ondelete='restrict'
args: 'stock.location.path', 'Push Rule'
quantity_done
Float
compute='_quantity_done_compute'
digits=dp.get_precision('Product Unit of Measure')
inverse='_quantity_done_set'
args: 'Quantity Done'
reference
Char
compute='_compute_reference'
store=True
string='Reference'
reserved_availability
Float
compute='_compute_reserved_availability'
digits=dp.get_precision('Product Unit of Measure')
help='Quantity that has already been reserved for this move'
readonly=True
args: 'Quantity Reserved'
restrict_partner_id
Many2one → res.partner
help="Technical field used to depict a restriction on the ownership of quants to consider when marking this move as 'done'"
args: 'res.partner', 'Owner '
returned_move_ids
One2many → stock.move
help='Optional: all returned moves created from this move'
args: 'stock.move', 'origin_returned_move_id', 'All returned moves'
route_ids
Many2many → stock.location.route
help='Preferred route'
args: 'stock.location.route', 'stock_location_route_move', 'move_id', 'route_id', 'Destination route'
rule_id
Many2one → procurement.rule
help='The procurement rule that created this stock move'
ondelete='restrict'
args: 'procurement.rule', 'Procurement Rule'
scrap_ids
One2many → stock.scrap
scrapped
Boolean
readonly=True
related='location_dest_id.scrap_location'
store=True
args: 'Scrapped'
sequence
Integer
default=10
args: 'Sequence'
show_details_visible
Boolean
compute='_compute_show_details_visible'
args: 'Details Visible'
show_operations
Boolean
related='picking_id.picking_type_id.show_operations'
show_reserved_availability
Boolean
compute='_compute_show_reserved_availability'
args: 'From Supplier'
state
Selection
copy=False
default='draft'
help="* New: When the stock move is created and not yet confirmed.\n* Waiting Another Move: This state can be seen when a move is waiting for another one, for example in a chained flow.\n* Waiting Availability: This state is reached when the procurement resolution is not straight forward. It may need the scheduler to run, a component to be manufactured...\n* Available: When products are reserved, it is set to 'Available'.\n* Done: When the shipment is processed, the state is 'Done'."
index=True
readonly=True
string='Status'
args: [('draft', 'New'), ('cancel', 'Cancelled'), ('waiting', 'Waiting Another Move'), ('confirmed', 'Waiting Availability'), ('partially_available', 'Partially Available'), ('assigned', 'Available'), ('done', 'Done')]
string_availability_info
Text
compute='_compute_string_qty_information'
help='Show various information on stock availability for this move'
readonly=True
args: 'Availability'
warehouse_id
Many2one → stock.warehouse
help='Technical field depicting the warehouse to consider for the route selection on the next procurement (if any).'
args: 'stock.warehouse', 'Warehouse'
action_show_details(self)
create(self, vals)
default_get(self, fields_list)
init(self)
name_get(self)
onchange_date(self)
onchange_product_id(self)
onchange_product_uom(self)
onchange_quantity(self)
unlink(self)
write(self, vals)
consume_line_ids
Many2many → stock.move.line
help='Technical link to see who consumed what. '
args: 'stock.move.line', 'stock_move_line_consume_rel', 'consume_line_id', 'produce_line_id'
date
Datetime
default=fields.Datetime.now
required=True
args: 'Date'
from_loc
Char
compute='_compute_location_description'
in_entire_package
Boolean
compute='_compute_in_entire_package'
is_initial_demand_editable
Boolean
related='move_id.is_initial_demand_editable'
is_locked
Boolean
default=True
readonly=True
related='move_id.is_locked'
location_dest_id
Many2one → stock.location
required=True
args: 'stock.location', 'To'
location_id
Many2one → stock.location
required=True
args: 'stock.location', 'From'
lot_id
Many2one → stock.production.lot
lot_name
Char
lots_visible
Boolean
compute='_compute_lots_visible'
move_id
Many2one → stock.move
help='Change to a better name'
index=True
args: 'stock.move', 'Stock Move'
ordered_qty
Float
digits=dp.get_precision('Product Unit of Measure')
args: 'Ordered Quantity'
owner_id
Many2one → res.partner
help='Owner of the quants'
args: 'res.partner', 'Owner'
package_id
Many2one → stock.quant.package
ondelete='restrict'
args: 'stock.quant.package', 'Source Package'
picking_id
Many2one → stock.picking
help='The stock operation where the packing has been made'
args: 'stock.picking', 'Stock Picking'
produce_line_ids
Many2many → stock.move.line
help='Technical link to see which line was produced with this. '
args: 'stock.move.line', 'stock_move_line_consume_rel', 'produce_line_id', 'consume_line_id'
product_id
Many2one → product.product
ondelete='cascade'
args: 'product.product', 'Product'
product_qty
Float
compute='_compute_product_qty'
digits=0
inverse='_set_product_qty'
store=True
args: 'Real Reserved Quantity'
product_uom_id
Many2one → product.uom
required=True
args: 'product.uom', 'Unit of Measure'
product_uom_qty
Float
default=0.0
digits=dp.get_precision('Product Unit of Measure')
required=True
args: 'Reserved'
qty_done
Float
copy=False
default=0.0
digits=dp.get_precision('Product Unit of Measure')
args: 'Done'
reference
Char
related='move_id.reference'
store=True
result_package_id
Many2one → stock.quant.package
help='If set, the operations are packed into this package'
ondelete='restrict'
required=False
args: 'stock.quant.package', 'Destination Package'
state
Selection
related='move_id.state'
store=True
to_loc
Char
compute='_compute_location_description'
check_reserved_done_quantity(self)
create(self, vals)
onchange_product_id(self)
onchange_serial_number(self)
unlink(self)
write(self, vals)
overprocessed_product_name
Char
compute='_compute_overprocessed_product_name'
readonly=True
picking_id
Many2one → stock.picking
action_confirm(self)
backorder_id
Many2one → stock.picking
copy=False
help='If this shipment was split, then this field links to the shipment which contains the already processed part.'
index=True
states={'done': [('readonly', True)], 'cancel': [('readonly', True)]}
args: 'stock.picking', 'Back Order of'
company_id
Many2one → res.company
default=<expr>
index=True
required=True
states={'done': [('readonly', True)], 'cancel': [('readonly', True)]}
args: 'res.company', 'Company'
date
Datetime
default=fields.Datetime.now
help='Creation Date, usually the time of the order'
index=True
states={'done': [('readonly', True)], 'cancel': [('readonly', True)]}
track_visibility='onchange'
args: 'Creation Date'
date_done
Datetime
copy=False
help='Completion Date of Transfer'
readonly=True
args: 'Date of Transfer'
entire_package_detail_ids
One2many → stock.quant.package
compute='_compute_entire_package_ids'
help='Those are the entire packages of a picking shown in the view of detailed operations'
args: 'stock.quant.package'
entire_package_ids
One2many → stock.quant.package
compute='_compute_entire_package_ids'
help='Those are the entire packages of a picking shown in the view of operations'
args: 'stock.quant.package'
group_id
Many2one → procurement.group
readonly=True
related='move_lines.group_id'
store=True
args: 'procurement.group', 'Procurement Group'
has_packages
Boolean
compute='_compute_has_packages'
help='Check the existence of destination packages on move lines'
args: 'Has Packages'
has_scrap_move
Boolean
compute='_has_scrap_move'
args: 'Has Scrap Moves'
has_tracking
Boolean
compute='_compute_has_tracking'
is_locked
Boolean
default=True
help='When the picking is not done this allows changing the initial demand. When the picking is done this allows changing the done quantities.'
location_dest_id
Many2one → stock.location
default=<expr>
readonly=True
required=True
states={'draft': [('readonly', False)]}
args: 'stock.location', 'Destination Location'
location_id
Many2one → stock.location
default=<expr>
readonly=True
required=True
states={'draft': [('readonly', False)]}
args: 'stock.location', 'Source Location'
move_line_exist
Boolean
compute='_compute_move_line_exist'
help='Check the existence of pack operation on the picking'
args: 'Has Pack Operations'
move_line_ids
One2many → stock.move.line
move_lines
One2many → stock.move
copy=True
string='Stock Moves'
args: 'stock.move', 'picking_id'
move_type
Selection
default='direct'
help='It specifies goods to be deliver partially or all at once'
required=True
states={'done': [('readonly', True)], 'cancel': [('readonly', True)]}
args: [('direct', 'As soon as possible'), ('one', 'When all products are ready')], 'Shipping Policy'
name
Char
copy=False
default='/'
index=True
states={'done': [('readonly', True)], 'cancel': [('readonly', True)]}
args: 'Reference'
note
Text
origin
Char
help='Reference of the document'
index=True
states={'done': [('readonly', True)], 'cancel': [('readonly', True)]}
args: 'Source Document'
owner_id
Many2one → res.partner
help='Default Owner'
states={'done': [('readonly', True)], 'cancel': [('readonly', True)]}
args: 'res.partner', 'Owner'
partner_id
Many2one → res.partner
states={'done': [('readonly', True)], 'cancel': [('readonly', True)]}
args: 'res.partner', 'Partner'
picking_type_code
Selection
readonly=True
related='picking_type_id.code'
args: [('incoming', 'Vendors'), ('outgoing', 'Customers'), ('internal', 'Internal')]
picking_type_entire_packs
Boolean
readonly=True
related='picking_type_id.show_entire_packs'
picking_type_id
Many2one → stock.picking.type
readonly=True
required=True
states={'draft': [('readonly', False)]}
args: 'stock.picking.type', 'Operation Type'
printed
Boolean
priority
Selection
compute='_compute_priority'
help='Priority for this picking. Setting manually a value here would set it as priority for all the moves'
index=True
inverse='_set_priority'
states={'done': [('readonly', True)], 'cancel': [('readonly', True)]}
store=True
string='Priority'
track_visibility='onchange'
args: PROCUREMENT_PRIORITIES
product_id
Many2one → product.product
readonly=True
related='move_lines.product_id'
args: 'product.product', 'Product'
scheduled_date
Datetime
compute='_compute_scheduled_date'
help='Scheduled time for the first part of the shipment to be processed. Setting manually a value here would set it as expected date for all the stock moves.'
index=True
inverse='_set_scheduled_date'
states={'done': [('readonly', True)], 'cancel': [('readonly', True)]}
store=True
track_visibility='onchange'
args: 'Scheduled Date'
show_check_availability
Boolean
compute='_compute_show_check_availability'
help='Technical field used to compute whether the check availability button should be shown.'
show_lots_text
Boolean
compute='_compute_show_lots_text'
show_mark_as_todo
Boolean
compute='_compute_show_mark_as_todo'
help='Technical field used to compute whether the mark as todo button should be shown.'
show_operations
Boolean
compute='_compute_show_operations'
show_validate
Boolean
compute='_compute_show_validate'
help='Technical field used to compute whether the validate should be shown.'
state
Selection
compute='_compute_state'
copy=False
help=" * Draft: not confirmed yet and will not be scheduled until confirmed.\n * Waiting Another Operation: waiting for another move to proceed before it becomes automatically available (e.g. in Make-To-Order flows).\n * Waiting: if it is not ready to be sent because the required products could not be reserved.\n * Ready: products are reserved and ready to be sent. If the shipping policy is 'As soon as possible' this happens as soon as anything is reserved.\n * Done: has been processed, can't be modified or cancelled anymore.\n * Cancelled: has been cancelled, can't be confirmed anymore."
index=True
readonly=True
store=True
string='Status'
track_visibility='onchange'
args: [('draft', 'Draft'), ('waiting', 'Waiting Another Operation'), ('confirmed', 'Waiting'), ('assigned', 'Ready'), ('done', 'Done'), ('cancel', 'Cancelled')]
action_assign(self)
action_assign_owner(self)
action_assign_partner(self)
action_cancel(self)
action_confirm(self)
action_done(self)
action_generate_backorder_wizard(self)
action_picking_move_tree(self)
action_see_move_scrap(self)
action_see_packages(self)
action_toggle_is_locked(self)
button_scrap(self)
button_validate(self)
create(self, vals)
do_print_picking(self)
do_transfer(self)
do_unreserve(self)
force_assign(self)
onchange_picking_type(self)
put_in_pack(self)
unlink(self)
write(self, vals)
active
Boolean
default=True
args: 'Active'
barcode_nomenclature_id
Many2one → barcode.nomenclature
code
Selection
required=True
args: [('incoming', 'Vendors'), ('outgoing', 'Customers'), ('internal', 'Internal')], 'Type of Operation'
color
Integer
count_picking
Integer
compute='_compute_picking_count'
count_picking_backorders
Integer
compute='_compute_picking_count'
count_picking_draft
Integer
compute='_compute_picking_count'
count_picking_late
Integer
compute='_compute_picking_count'
count_picking_ready
Integer
compute='_compute_picking_count'
count_picking_waiting
Integer
compute='_compute_picking_count'
default_location_dest_id
Many2one → stock.location
help='This is the default destination location when you create a picking manually with this operation type. It is possible however to change it or that the routes put another location. If it is empty, it will check for the customer location on the partner. '
args: 'stock.location', 'Default Destination Location'
default_location_src_id
Many2one → stock.location
help='This is the default source location when you create a picking manually with this operation type. It is possible however to change it or that the routes put another location. If it is empty, it will check for the supplier location on the partner. '
args: 'stock.location', 'Default Source Location'
last_done_picking
Char
compute='_compute_last_done_picking'
args: 'Last 10 Done Pickings'
name
Char
required=True
translate=True
args: 'Operation Types Name'
rate_picking_backorders
Integer
compute='_compute_picking_count'
rate_picking_late
Integer
compute='_compute_picking_count'
return_picking_type_id
Many2one → stock.picking.type
sequence
Integer
help="Used to order the 'All Operations' kanban view"
args: 'Sequence'
sequence_id
Many2one → ir.sequence
required=True
args: 'ir.sequence', 'Reference Sequence'
show_entire_packs
Boolean
help='If checked, this shows the packs to be moved as a whole in the Operations tab all the time, even if there was no entire pack reserved.'
args: 'Allow moving packs'
show_operations
Boolean
default=False
help='If this checkbox is ticked, the pickings lines will represent detailed stock operations. If not, the picking lines will represent an aggregate of detailed stock operations.'
args: 'Show Detailed Operations'
show_reserved
Boolean
default=True
help='If this checkbox is ticked, Odoo will show which products are reserved (lot/serial number, source location, source package).'
args: 'Show Reserved'
use_create_lots
Boolean
default=True
help='If this is checked only, it will suppose you want to create new Lots/Serial Numbers, so you can provide them in a text field. '
args: 'Create New Lots/Serial Numbers'
use_existing_lots
Boolean
default=True
help='If this is checked, you will be able to choose the Lots/Serial Numbers. You can also decide to not put lots in this operation type. This means it will create stock with no lot or not put a restriction on the lot taken. '
args: 'Use Existing Lots/Serial Numbers'
warehouse_id
Many2one → stock.warehouse
default=<expr>
ondelete='cascade'
args: 'stock.warehouse', 'Warehouse'
get_action_picking_tree_backorder(self)
get_action_picking_tree_late(self)
get_action_picking_tree_ready(self)
get_action_picking_tree_waiting(self)
get_stock_picking_action_picking_type(self)
name_get(self)
name_search(self, name, args=None, operator='ilike', limit=100)
onchange_picking_code(self)
onchange_show_operations(self)
create_date
Datetime
name
Char
default=<expr>
help='Unique Lot/Serial Number'
required=True
args: 'Lot/Serial Number'
product_id
Many2one → product.product
domain=[('type', 'in', ['product', 'consu'])]
required=True
args: 'product.product', 'Product'
product_qty
Float
compute='_product_qty'
args: 'Quantity'
product_uom_id
Many2one → product.uom
related='product_id.uom_id'
store=True
args: 'product.uom', 'Unit of Measure'
quant_ids
One2many → stock.quant
readonly=True
args: 'stock.quant', 'lot_id', 'Quants'
ref
Char
help="Internal reference number in case it differs from the manufacturer's lot/serial number"
args: 'Internal Reference'
create(self, vals)
write(self, vals)
company_id
Many2one
readonly=True
related='location_id.company_id'
store=True
string='Company'
in_date
Datetime
readonly=True
args: 'Incoming Date'
location_id
Many2one → stock.location
auto_join=True
ondelete='restrict'
readonly=True
required=True
args: 'stock.location', 'Location'
lot_id
Many2one → stock.production.lot
ondelete='restrict'
readonly=True
args: 'stock.production.lot', 'Lot/Serial Number'
owner_id
Many2one → res.partner
help='This is the owner of the quant'
readonly=True
args: 'res.partner', 'Owner'
package_id
Many2one → stock.quant.package
help='The package containing this quant'
ondelete='restrict'
readonly=True
args: 'stock.quant.package', 'Package'
product_id
Many2one → product.product
ondelete='restrict'
readonly=True
required=True
args: 'product.product', 'Product'
product_tmpl_id
Many2one → product.template
related='product_id.product_tmpl_id'
string='Product Template'
args: 'product.template'
product_uom_id
Many2one → product.uom
readonly=True
related='product_id.uom_id'
args: 'product.uom', 'Unit of Measure'
quantity
Float
help='Quantity of products in this quant, in the default unit of measure of the product'
oldname='qty'
readonly=True
required=True
args: 'Quantity'
reserved_quantity
Float
default=0.0
help='Quantity of reserved products in this quant, in the default unit of measure of the product'
readonly=True
required=True
args: 'Reserved Quantity'
action_view_stock_moves(self)
check_location_id(self)
check_product_id(self)
check_quantity(self)
company_id
Many2one → res.company
compute='_compute_package_info'
index=True
readonly=True
search='_search_company'
args: 'res.company', 'Company'
current_destination_location_id
Many2one → stock.location
compute='_compute_current_picking_info'
args: 'stock.location'
current_picking_id
Boolean
compute='_compute_current_picking_info'
current_picking_move_line_ids
One2many → stock.move.line
compute='_compute_current_picking_info'
args: 'stock.move.line'
current_source_location_id
Many2one → stock.location
compute='_compute_current_picking_info'
args: 'stock.location'
is_processed
Boolean
compute='_compute_current_picking_info'
location_id
Many2one → stock.location
compute='_compute_package_info'
index=True
readonly=True
search='_search_location'
args: 'stock.location', 'Location'
move_line_ids
One2many → stock.move.line
name
Char
copy=False
default=<expr>
index=True
args: 'Package Reference'
owner_id
Many2one → res.partner
compute='_compute_package_info'
index=True
readonly=True
search='_search_owner'
args: 'res.partner', 'Owner'
packaging_id
Many2one → product.packaging
help="This field should be completed only if everything inside the package share the same product, otherwise it doesn't really makes sense."
index=True
args: 'product.packaging', 'Package Type'
quant_ids
One2many → stock.quant
readonly=True
args: 'stock.quant', 'package_id', 'Bulk Content'
action_toggle_processed(self)
action_view_picking(self)
name_get(self)
unpack(self)
view_content_package(self)
compute_at_date
Selection
help='Choose to analyze the current inventory or from a specific date in the past.'
string='Compute'
args: [(0, 'Current Inventory'), (1, 'At a Specific Date')]
date
Datetime
default=fields.Datetime.now
help='Choose a date to get the inventory at that date'
args: 'Inventory at Date'
open_table(self)
location_id
Many2one → stock.location
domain="['|', ('id', '=', original_location_id), ('return_location', '=', True)]"
args: 'stock.location', 'Return Location'
move_dest_exists
Boolean
readonly=True
args: 'Chained Move Exists'
original_location_id
Many2one → stock.location
parent_location_id
Many2one → stock.location
picking_id
Many2one → stock.picking
product_return_moves
One2many → stock.return.picking.line
create_returns(self)
default_get(self, fields)
move_id
Many2one → stock.move
product_id
Many2one → product.product
domain="[('id', '=', product_id)]"
required=True
string='Product'
args: 'product.product'
quantity
Float
digits=dp.get_precision('Product Unit of Measure')
required=True
args: 'Quantity'
uom_id
Many2one → product.uom
related='move_id.product_uom'
string='Unit of Measure'
args: 'product.uom'
wizard_id
Many2one → stock.return.picking
string='Wizard'
args: 'stock.return.picking'
No public methods.
No new fields.
Public methods (1)procure_calculation(self)
date_expected
Datetime
default=fields.Datetime.now
args: 'Expected Date'
location_id
Many2one → stock.location
default=_get_default_location_id
domain="[('usage', '=', 'internal')]"
required=True
states={'done': [('readonly', True)]}
args: 'stock.location', 'Location'
lot_id
Many2one → stock.production.lot
domain="[('product_id', '=', product_id)]"
states={'done': [('readonly', True)]}
args: 'stock.production.lot', 'Lot'
move_id
Many2one → stock.move
readonly=True
args: 'stock.move', 'Scrap Move'
name
Char
copy=False
default=<expr>
readonly=True
required=True
states={'done': [('readonly', True)]}
args: 'Reference'
origin
Char
string='Source Document'
owner_id
Many2one → res.partner
states={'done': [('readonly', True)]}
args: 'res.partner', 'Owner'
package_id
Many2one → stock.quant.package
states={'done': [('readonly', True)]}
args: 'stock.quant.package', 'Package'
picking_id
Many2one → stock.picking
states={'done': [('readonly', True)]}
args: 'stock.picking', 'Picking'
product_id
Many2one → product.product
required=True
states={'done': [('readonly', True)]}
args: 'product.product', 'Product'
product_uom_id
Many2one → product.uom
required=True
states={'done': [('readonly', True)]}
args: 'product.uom', 'Unit of Measure'
scrap_location_id
Many2one → stock.location
default=_get_default_scrap_location_id
domain="[('scrap_location', '=', True)]"
required=True
states={'done': [('readonly', True)]}
args: 'stock.location', 'Scrap Location'
scrap_qty
Float
default=1.0
required=True
states={'done': [('readonly', True)]}
args: 'Quantity'
state
Selection
default='draft'
string='Status'
args: [('draft', 'Draft'), ('done', 'Done')]
tracking
Selection
readonly=True
related='product_id.tracking'
args: 'Product Tracking'
action_get_stock_move_lines(self)
action_get_stock_picking(self)
action_validate(self)
create(self, vals)
do_scrap(self)
onchange_product_id(self)
unlink(self)
No new fields.
Public methods (13)downstream_traceability(self, level, stream=False, line_id=False, model=False, model_obj=False, parent_quant=False)
final_vals_to_lines(self, final_vals, level)
get_html(self, given_context=None)
get_lines(self, line_id=None, **kw)
get_links(self, move_line)
get_move_lines_downstream(self, move_lines)
get_move_lines_upstream(self, move_lines)
get_pdf(self, line_data=[])
get_pdf_lines(self, line_data=[])
get_produced_or_consumed_vals(self, move_lines, level, model, stream, parent_id)
make_dict_head(self, level, parent_id, model=False, stream=False, move_line=False)
make_dict_move(self, level, parent_id, move_line, stream=False, unfoldable=False)
upstream_traceability(self, level, stream=False, line_id=False, model=False, model_obj=False, parent_quant=False)
active
Boolean
default=True
args: 'Active'
code
Char
help='Short name used to identify your warehouse'
required=True
size=5
args: 'Short Name'
company_id
Many2one → res.company
default=<expr>
help='The company is automatically set from your user preferences.'
index=True
readonly=True
required=True
args: 'res.company', 'Company'
crossdock_route_id
Many2one → stock.location.route
ondelete='restrict'
args: 'stock.location.route', 'Crossdock Route'
default_resupply_wh_id
Many2one → stock.warehouse
help='Goods will always be resupplied from this warehouse'
args: 'stock.warehouse', 'Default Resupply Warehouse'
delivery_route_id
Many2one → stock.location.route
ondelete='restrict'
args: 'stock.location.route', 'Delivery Route'
delivery_steps
Selection
default='ship_only'
help='Default outgoing route to follow'
required=True
args: [('ship_only', 'Ship directly from stock (Ship only)'), ('pick_ship', 'Bring goods to output location before shipping (Pick + Ship)'), ('pick_pack_ship', 'Make packages into a dedicated location, then bring them to the output location for shipping (Pick + Pack + Ship)')], 'Outgoing Shippings'
in_type_id
Many2one → stock.picking.type
int_type_id
Many2one → stock.picking.type
lot_stock_id
Many2one → stock.location
domain=[('usage', '=', 'internal')]
required=True
args: 'stock.location', 'Location Stock'
mto_pull_id
Many2one → procurement.rule
name
Char
default=<expr>
index=True
required=True
args: 'Warehouse Name'
out_type_id
Many2one → stock.picking.type
pack_type_id
Many2one → stock.picking.type
partner_id
Many2one → res.partner
pick_type_id
Many2one → stock.picking.type
reception_route_id
Many2one → stock.location.route
ondelete='restrict'
args: 'stock.location.route', 'Receipt Route'
reception_steps
Selection
default='one_step'
help='Default incoming route to follow'
required=True
args: [('one_step', 'Receive goods directly in stock (1 step)'), ('two_steps', 'Unload in input location then go to stock (2 steps)'), ('three_steps', 'Unload in input location, go through a quality control before being admitted in stock (3 steps)')], 'Incoming Shipments'
resupply_route_ids
One2many → stock.location.route
help='Routes will be created for these resupply warehouses and you can select them on products and product categories'
args: 'stock.location.route', 'supplied_wh_id', 'Resupply Routes'
resupply_wh_ids
Many2many → stock.warehouse
route_ids
Many2many → stock.location.route
domain="[('warehouse_selectable', '=', True)]"
help='Defaults routes through the warehouse'
args: 'stock.location.route', 'stock_route_warehouse', 'warehouse_id', 'route_id', 'Routes'
view_location_id
Many2one → stock.location
domain=[('usage', '=', 'view')]
required=True
args: 'stock.location', 'View Location'
wh_input_stock_loc_id
Many2one → stock.location
wh_output_stock_loc_id
Many2one → stock.location
wh_pack_stock_loc_id
Many2one → stock.location
wh_qc_stock_loc_id
Many2one → stock.location
action_view_all_routes(self)
create(self, vals)
create_resupply_routes(self, supplier_warehouses, default_resupply_wh)
create_routes(self)
create_sequences_and_picking_types(self)
get_routes_dict(self)
onchange_resupply_warehouses(self)
write(self, vals)
active
Boolean
default=True
help='If the active field is set to False, it will allow you to hide the orderpoint without removing it.'
args: 'Active'
company_id
Many2one → res.company
default=<expr>
required=True
args: 'res.company', 'Company'
group_id
Many2one → procurement.group
copy=False
help='Moves created through this orderpoint will be put in this procurement group. If none is given, the moves generated by procurement rules will be grouped into one big picking.'
args: 'procurement.group', 'Procurement Group'
lead_days
Integer
default=1
help='Number of days after the orderpoint is triggered to receive the products or to order to the vendor'
args: 'Lead Time'
lead_type
Selection
default='supplier'
required=True
args: [('net', 'Day(s) to get the products'), ('supplier', 'Day(s) to purchase')], 'Lead Type'
location_id
Many2one → stock.location
ondelete='cascade'
required=True
args: 'stock.location', 'Location'
name
Char
copy=False
default=<expr>
required=True
args: 'Name'
product_id
Many2one → product.product
domain=[('type', '=', 'product')]
ondelete='cascade'
required=True
args: 'product.product', 'Product'
product_max_qty
Float
digits=dp.get_precision('Product Unit of Measure')
help='When the virtual stock goes below the Min Quantity, Odoo generates a procurement to bring the forecasted quantity to the Quantity specified as Max Quantity.'
required=True
args: 'Maximum Quantity'
product_min_qty
Float
digits=dp.get_precision('Product Unit of Measure')
help='When the virtual stock goes below the Min Quantity specified for this field, Odoo generates a procurement to bring the forecasted quantity to the Max Quantity.'
required=True
args: 'Minimum Quantity'
product_uom
Many2one → product.uom
default=<expr>
readonly=True
related='product_id.uom_id'
required=True
args: 'product.uom', 'Product Unit of Measure'
qty_multiple
Float
default=1
digits=dp.get_precision('Product Unit of Measure')
help='The procurement quantity will be rounded up to this multiple. If it is 0, the exact quantity will be used.'
required=True
args: 'Qty Multiple'
warehouse_id
Many2one → stock.warehouse
ondelete='cascade'
required=True
args: 'stock.warehouse', 'Warehouse'
default_get(self, fields)
onchange_product_id(self)
onchange_warehouse_id(self)
location_id
Many2one → stock.location
domain="[('usage', '=', 'internal')]"
required=True
args: 'stock.location', 'Location'
product_id
Many2one → product.product
required=True
args: 'product.product', 'Product'
quant_ids
Many2many → stock.quant
compute='_compute_quant_ids'
args: 'stock.quant'
action_done(self)
scrap_id
Many2one → stock.scrap
action_done(self)
No new fields.
Public methods (0)No public methods.
| REPOSITORY | |
|---|---|
| REPOSITORY | odoo/odoo |
| GIT | |
| GIT | https://github.com/odoo/odoo.git |
| GIT FOLDER | |
| GIT FOLDER | https://github.com/odoo/odoo/tree/10.0/stock |
| VERSION | |
| VERSION | 1.1 |
| CATEGORY | |
| CATEGORY | Warehouse |
| LICENSE | |
| LICENSE | LGPL-3 |
| APPLICATION | |
| APPLICATION | Yes |
| AUTO-INSTALLABLE | |
| AUTO-INSTALLABLE | No |
| AUTHORS | |
| AUTHORS | |
| MAINTAINERS | |
| MAINTAINERS | |
| COMMITTERS | |
| COMMITTERS | Raphael Collet, Odoo Translation Bot, Christophe Matthieu, Martin Trigaux, Fabien Pinckaers, Olivier Dony, Thibault Delavallée, Josse Colpaert, Denis Ledoux, Christophe Simonis, David Monjoie, Xavier Morel, Joren Van Onder, Goffin Simon, Simon Lejeune, Nicolas Martinelli, Nicolas Lempereur, Julien Legros, xmo-odoo, Richard Mathot, qdp-odoo, Aaron Bohy, Jeremy Kersten, GitHub, Lucas Perais (lpe), Yannick Tivisse, qsm-odoo, Martin Geubelle, Pierre Masereel, Denis Vermylen (dve), Tanguy Charlier, len-odoo, amoyaux, Nicolas Vannieuwerburgh, Arnold Moyaux, tdi-odoo, Laurent Mignon (ACSONE) |
| WEBSITE | |
| WEBSITE | https://www.odoo.com/page/warehouse |
| LAST TRACKING UPDATE | |
| LAST TRACKING UPDATE | 2026-07-05 23:50:47 |
| ODOO DEPENDENCIES | |
| ODOO DEPENDENCIES |
odoo/odoo: - product - base - decimal_precision - base_setup - web_kanban - web - bus - web_tour - report - procurement - barcodes - web_planner |
| PYTHON DEPENDENCIES | |
| PYTHON DEPENDENCIES | Not have |
| SYSTEM DEPENDENCIES | |
| SYSTEM DEPENDENCIES | Not have |
| DESCRIPTION | |
| DESCRIPTION |
Manage multi-warehouses, multi- and structured stock locations
==============================================================
The warehouse and inventory management is based on a hierarchical location structure, from warehouses to storage bins.
The double entry inventory system allows you to manage customers, vendors as well as manufacturing inventories.
Odoo has the capacity to manage lots and serial numbers ensuring compliance with the traceability requirements imposed by the majority of industries.
Key Features
------------
* Moves history and planning,
* Minimum stock rules
* Support for barcodes
* Rapid detection of mistakes through double entry system
* Traceability (Serial Numbers, Packages, ...)
Dashboard / Reports for Inventory Management will include:
----------------------------------------------------------
* Incoming Products (Graph)
* Outgoing Products (Graph)
* Procurement in Exception
* Inventory Analysis
* Last Product Inventories
* Moves Analysis
|
| XML ID | Name | Model | Type | Status |
|---|---|---|---|---|
assets_common |
stock_location_barcodes pdf assets | ir.ui.view | qweb | Inherits report.assets_common |
external_layout_barcode_right |
external_layout_barcode_right | ir.ui.view | qweb | Inherits report.external_layout |
external_layout_header_barcode_right |
external_layout_header_barcode_right | ir.ui.view | qweb | Inherits report.external_layout_header |
inventory_planner |
inventory_planner | ir.ui.view | qweb | New |
procurement_group_form_view_herited |
procurement.group.view.form.inherit.picking | procurement.group | div | Inherits procurement.procurement_group_form_view |
product_category_form_view_inherit |
product.category.form | product.category | group | Inherits product.product_category_form_view |
product_form_view_procurement_button |
product.product.procurement | product.product | data | Inherits product.product_normal_form_view |
product_kanban_stock_view |
Product Kanban Stock | product.product | field | Inherits product.product_kanban_view |
product_product_view_form_easy_inherit_stock |
product.product.view.form.easy.inherit.stock | product.product | sheet | Inherits product.product_variant_easy_edit_view |
product_product_view_form_procurement_button |
product.product.stock.stat.button.group | product.product | xpath | Inherits procurement.product_product_view_form_procurement_button |
product_search_form_view_stock |
product.search.stock.form | product.product | field | Inherits product.product_search_form_view |
product_template_form_view_procurement_button |
product.template_procurement | product.template | data | Inherits product.product_template_only_form_view |
product_template_kanban_stock_view |
Product Template Kanban Stock | product.template | field | Inherits product.product_template_kanban_view |
product_template_search_form_view_stock |
product.template.search.stock.form | product.template | field | Inherits product.product_template_search_view |
product_template_view_form_procurement_button |
product.template.stock.stat.button.group | product.template | xpath | Inherits procurement.product_template_view_form_procurement_button |
quant_package_search_view |
stock.quant.package.search | stock.quant.package | search | New |
quant_search_view |
stock.quant.search | stock.quant | search | New |
report_delivery_document |
report_delivery_document | ir.ui.view | qweb | New |
report_deliveryslip |
report_deliveryslip | ir.ui.view | qweb | New |
report_inventory |
report_inventory | ir.ui.view | qweb | New |
report_location_barcode |
report_location_barcode | ir.ui.view | qweb | New |
report_lot_barcode |
report_lot_barcode | ir.ui.view | qweb | New |
report_package_barcode |
report_package_barcode | ir.ui.view | qweb | New |
report_package_barcode_small |
report_package_barcode_small | ir.ui.view | qweb | New |
report_picking |
report_picking | ir.ui.view | qweb | New |
report_stock_lines_date_form |
report.stock.lines.date.form | report.stock.lines.date | form | New |
report_stock_lines_date_search |
report.stock.lines.date.search | report.stock.lines.date | search | New |
report_stock_lines_date_tree |
report.stock.lines.date.tree | report.stock.lines.date | tree | New |
search_product_lot_filter |
Production Lots Filter | stock.production.lot | search | New |
stock_incoterms_form |
stock.incoterms.form | stock.incoterms | form | New |
stock_incoterms_view_search |
stock.incoterms.search | stock.incoterms | search | New |
stock_inventory_line_search |
stock.inventory.line.search | stock.inventory.line | search | New |
stock_inventory_line_tree |
stock.inventory.line.tree | stock.inventory.line | tree | New |
stock_inventory_line_tree2 |
stock.inventory.line.tree2 | stock.inventory.line | tree | New |
stock_location_path_filter |
stock.location.path.select | stock.location.path | search | New |
stock_location_path_form |
stock.location.path.form | stock.location.path | form | New |
stock_location_path_tree |
stock.location.path.tree | stock.location.path | tree | New |
stock_location_route_form_view |
stock.location.route.form | stock.location.route | form | New |
stock_location_route_tree |
stock.location.route.tree | stock.location.route | tree | New |
stock_location_route_view_search |
stock.location.route.search | stock.location.route | search | New |
stock_move_tree |
Stock Moves | stock.move | tree | New |
stock_picking_calendar |
stock.picking.calendar | stock.picking | calendar | New |
stock_picking_kanban |
stock.picking.kanban | stock.picking | kanban | New |
stock_picking_type_kanban |
stock.picking.type.kanban | stock.picking.type | kanban | New |
stock_scrap_form_view |
stock.scrap.form | stock.scrap | form | New |
stock_scrap_form_view2 |
stock.scrap.form2 | stock.scrap | form | New |
stock_scrap_search_view |
stock.scrap.search | stock.scrap | search | New |
stock_scrap_tree_view |
stock.scrap.tree | stock.scrap | tree | New |
stock_warehouse_view_search |
stock.warehouse.search | stock.warehouse | search | New |
view_backorder_confirmation |
stock_backorder_confirmation | stock.backorder.confirmation | form | New |
view_change_product_quantity |
Change Product Quantity | stock.change.product.qty | form | New |
view_immediate_transfer |
stock.immediate.transfer.view.form | stock.immediate.transfer | form | New |
view_incoterms_tree |
stock.incoterms.tree | stock.incoterms | tree | New |
view_inventory_filter |
stock.inventory.filter | stock.inventory | search | New |
view_inventory_form |
stock.inventory.form | stock.inventory | form | New |
view_inventory_tree |
stock.inventory.tree | stock.inventory | tree | New |
view_location_form |
stock.location.form | stock.location | form | New |
view_location_search |
stock.location.search | stock.location | search | New |
view_location_tree2 |
stock.location.tree | stock.location | tree | New |
view_make_procurment_wizard |
Procurement Request | make.procurement | form | New |
view_move_form |
stock.move.form | stock.move | form | New |
view_move_graph |
stock.move.graph | stock.move | graph | New |
view_move_picking_form |
stock.move.form | stock.move | form | New |
view_move_picking_tree |
stock.move.tree | stock.move | tree | New |
view_move_pivot |
stock.move.pivot | stock.move | pivot | New |
view_move_search |
stock.move.search | stock.move | search | New |
view_move_tree |
stock.move.tree | stock.move | tree | New |
view_move_tree_receipt_picking |
stock.move.tree2 | stock.move | tree | New |
view_move_tree_receipt_picking_board |
stock.move.tree3 | stock.move | tree | New |
view_pack_operation_details_form |
stock.pack.operation.details.form | stock.pack.operation | form | New |
view_pack_operation_details_form_save |
stock.pack.operation.details.form.save | stock.pack.operation | group | Inherits stock.view_pack_operation_details_form |
view_pack_operation_lot_form |
stock.pack.operation.lots.form | stock.pack.operation | form | New |
view_pack_operation_lot_lot_form |
stock.pack.operation.lots.form | stock.pack.operation.lot | form | New |
view_partner_stock_form |
res.partner.stock.property.form.inherit | res.partner | xpath | Inherits mail.view_emails_partner_info_form |
view_partner_stock_warnings_form |
res.partner.stock.warning | res.partner | page | Inherits base.view_partner_form |
view_picking_form |
stock.picking.form | stock.picking | form | New |
view_picking_internal_search |
stock.picking.internal.search | stock.picking | search | New |
view_picking_type_form |
Operation Types | stock.picking.type | form | New |
view_picking_type_list |
stock.picking.type.list | stock.picking.type | tree | New |
view_picking_type_tree |
Picking types | stock.picking.type | tree | New |
view_pickingtype_filter |
stock.picking.type.filter | stock.picking.type | search | New |
view_procurement_compute_wizard |
Run Reordering Rules | procurement.orderpoint.compute | form | New |
view_procurement_form_stock_inherit |
procurement.order.form.stock.inherit | procurement.order | xpath | Inherits procurement.procurement_form_view |
view_procurement_rule_form_stock_inherit |
procurement.rule.form.stock.inherit | procurement.rule | xpath | Inherits procurement.view_procurement_rule_form |
view_procurement_rule_tree_stock_inherit |
procurement.rule.tree.stock.inherit | procurement.rule | xpath | Inherits procurement.view_procurement_rule_tree |
view_procurement_tree_stock_inherit |
procurement.order.tree.stock.inherit | procurement.order | xpath | Inherits procurement.procurement_tree_view |
view_production_lot_form |
stock.production.lot.form | stock.production.lot | form | New |
view_production_lot_tree |
stock.production.lot.tree | stock.production.lot | tree | New |
view_putaway |
product.putaway.form | product.putaway | form | New |
view_quant_package_form |
stock.quant.package.form | stock.quant.package | form | New |
view_quant_package_tree |
stock.quant.package.tree | stock.quant.package | tree | New |
view_removal |
product.removal.form | product.removal | form | New |
view_stock_config_settings |
stock settings | stock.config.settings | form | New |
view_stock_level_forecast_filter |
view.stock.level.forecast.filter | report.stock.forecast | search | New |
view_stock_level_forecast_graph |
Stock.forecast.graph | report.stock.forecast | graph | New |
view_stock_level_forecast_pivot |
Stock.forecast.pivot | report.stock.forecast | pivot | New |
view_stock_product_template_tree |
product.template.stock.tree.inherit | product.template | tree | Inherits product.product_template_tree_view |
view_stock_product_tree |
product.stock.tree.inherit | product.product | tree | Inherits product.product_product_tree_view |
view_stock_quant_form |
stock.quant.form | stock.quant | form | New |
view_stock_quant_graph_value |
stock.quant.graph | stock.quant | graph | New |
view_stock_quant_pivot |
stock.quant.pivot | stock.quant | pivot | New |
view_stock_quant_tree |
stock.quant.tree | stock.quant | tree | New |
view_stock_return_picking_form |
Return lines | stock.return.picking | form | New |
view_template_property_form |
product.template.stock.property.form.inherit | product.template | page | Inherits product.product_template_form_view |
view_warehouse |
stock.warehouse | stock.warehouse | form | New |
view_warehouse_orderpoint_form |
stock.warehouse.orderpoint.form | stock.warehouse.orderpoint | form | New |
view_warehouse_orderpoint_tree |
stock.warehouse.orderpoint.tree | stock.warehouse.orderpoint | tree | New |
view_warehouse_tree |
stock.warehouse.tree | stock.warehouse | tree | New |
vpicktree |
stock.picking.tree | stock.picking | tree | New |
warehouse_orderpoint_search |
stock.warehouse.orderpoint.search | stock.warehouse.orderpoint | search | New |
type
Selection
selection_add=[('weight', _('Weighted Product')), ('location', _('Location')), ('lot', _('Lot')), ('package', _('Package'))]
No public methods.
date_planned
Date
default=fields.Date.context_today
required=True
args: 'Planned Date'
product_id
Many2one → product.product
required=True
args: 'product.product', 'Product'
product_tmpl_id
Many2one → product.template
required=True
args: 'product.template', 'Template'
product_variant_count
Integer
related='product_tmpl_id.product_variant_count'
string='Variant Number'
qty
Float
default=1.0
digits=(16, 2)
required=True
args: 'Quantity'
res_model
Char
route_ids
Many2many → stock.location.route
string='Preferred Routes'
args: 'stock.location.route'
uom_id
Many2one → product.uom
required=True
args: 'product.uom', 'Unit of Measure'
warehouse_id
Many2one → stock.warehouse
required=True
args: 'stock.warehouse', 'Warehouse'
create(self, values)
default_get(self, fields)
make_procurement(self)
onchange_product_id(self)
onchange_product_id_dict(self, product_id)
partner_id
Many2one → res.partner
No public methods.
location_id
Many2one → stock.location
move_dest_id
Many2one → stock.move
help='Move which caused (created) the procurement'
args: 'stock.move', 'Destination Move'
move_ids
One2many → stock.move
help='Moves created by the procurement'
args: 'stock.move', 'procurement_id', 'Moves'
orderpoint_id
Many2one → stock.warehouse.orderpoint
partner_dest_id
Many2one → res.partner
help='In case of dropshipping, we need to know the destination address more precisely'
args: 'res.partner', 'Customer Address'
route_ids
Many2many → stock.location.route
help='Preferred route to be followed by the procurement order. Usually copied from the generating document (SO) but could be set up manually.'
args: 'stock.location.route', 'stock_location_route_procurement', 'procurement_id', 'route_id', 'Preferred Routes'
warehouse_id
Many2one → stock.warehouse
help='Warehouse to consider for the route selection'
args: 'stock.warehouse', 'Warehouse'
cancel(self)
do_view_pickings(self)
onchange_warehouse_id(self)
propagate_cancels(self)
run(self, autocommit=False)
run_scheduler(self, use_new_cursor=False, company_id=False)
No new fields.
Public methods (1)procure_calculation(self)
delay
Integer
default=0
args: 'Number of Days'
location_id
Many2one → stock.location
location_src_id
Many2one → stock.location
help='Source location is action=move'
args: 'stock.location', 'Source Location'
partner_address_id
Many2one → res.partner
picking_type_id
Many2one → stock.picking.type
help='Picking Type determines the way the picking should be shown in the view, reports, ...'
required=True
args: 'stock.picking.type', 'Picking Type'
procure_method
Selection
default='make_to_stock'
help="Determines the procurement method of the stock move that will be generated: whether it will need to 'take from the available stock' in its source location or needs to ignore its stock and create a procurement over there."
required=True
string='Move Supply Method'
args: [('make_to_stock', 'Take From Stock'), ('make_to_order', 'Create Procurement')]
propagate
Boolean
default=True
help='If checked, when the previous move of the move (which was generated by a next procurement) is cancelled or split, the move generated by this move will too'
args: 'Propagate cancel and split'
propagate_warehouse_id
Many2one → stock.warehouse
help='The warehouse to propagate on the created move/procurement, which can be different of the warehouse this rule is for (e.g for resupplying rules from another warehouse)'
args: 'stock.warehouse', 'Warehouse to Propagate'
route_id
Many2one → stock.location.route
help='If route_id is False, the rule is global'
args: 'stock.location.route', 'Route'
route_sequence
Integer
related='route_id.sequence'
store=True
args: 'Route Sequence'
warehouse_id
Many2one → stock.warehouse
help='The warehouse this rule is for'
args: 'stock.warehouse', 'Served Warehouse'
No public methods.
removal_strategy_id
Many2one → product.removal
help='Set a specific removal strategy that will be used regardless of the source location for this product category'
args: 'product.removal', 'Force Removal Strategy'
route_ids
Many2many → stock.location.route
domain=[('product_categ_selectable', '=', True)]
args: 'stock.location.route', 'stock_location_route_categ', 'categ_id', 'route_id', 'Routes'
total_route_ids
Many2many → stock.location.route
compute='_compute_total_route_ids'
readonly=True
string='Total routes'
args: 'stock.location.route'
No public methods.
delivery_count
Integer
compute='_compute_delivery_count'
args: 'Delivery'
incoming_qty
Float
compute='_compute_quantities'
digits=dp.get_precision('Product Unit of Measure')
help="Quantity of products that are planned to arrive.\nIn a context with a single Stock Location, this includes goods arriving to this Location, or any of its children.\nIn a context with a single Warehouse, this includes goods arriving to the Stock Location of this Warehouse, or any of its children.\nOtherwise, this includes goods arriving to any Stock Location with 'internal' type."
search='_search_incoming_qty'
args: 'Incoming'
nbr_reordering_rules
Integer
compute='_compute_nbr_reordering_rules'
args: 'Reordering Rules'
orderpoint_ids
One2many → stock.warehouse.orderpoint
outgoing_qty
Float
compute='_compute_quantities'
digits=dp.get_precision('Product Unit of Measure')
help="Quantity of products that are planned to leave.\nIn a context with a single Stock Location, this includes goods leaving this Location, or any of its children.\nIn a context with a single Warehouse, this includes goods leaving the Stock Location of this Warehouse, or any of its children.\nOtherwise, this includes goods leaving any Stock Location with 'internal' type."
search='_search_outgoing_qty'
args: 'Outgoing'
qty_available
Float
compute='_compute_quantities'
digits=dp.get_precision('Product Unit of Measure')
help="Current quantity of products.\nIn a context with a single Stock Location, this includes goods stored at this Location, or any of its children.\nIn a context with a single Warehouse, this includes goods stored in the Stock Location of this Warehouse, or any of its children.\nstored in the Stock Location of the Warehouse of this Shop, or any of its children.\nOtherwise, this includes goods stored in any Stock Location with 'internal' type."
search='_search_qty_available'
args: 'Quantity On Hand'
reception_count
Integer
compute='_compute_reception_count'
args: 'Receipt'
reordering_max_qty
Float
compute='_compute_nbr_reordering_rules'
reordering_min_qty
Float
compute='_compute_nbr_reordering_rules'
stock_move_ids
One2many → stock.move
help='Technical: used to compute quantities.'
args: 'stock.move', 'product_id'
stock_quant_ids
One2many → stock.quant
help='Technical: used to compute quantities.'
args: 'stock.quant', 'product_id'
virtual_available
Float
compute='_compute_quantities'
digits=dp.get_precision('Product Unit of Measure')
help="Forecast quantity (computed as Quantity On Hand - Outgoing + Incoming)\nIn a context with a single Stock Location, this includes goods stored in this location, or any of its children.\nIn a context with a single Warehouse, this includes goods stored in the Stock Location of this Warehouse, or any of its children.\nOtherwise, this includes goods stored in any Stock Location with 'internal' type."
search='_search_virtual_available'
args: 'Forecast Quantity'
action_view_routes(self)
fields_view_get(self, view_id=None, view_type='form', toolbar=False, submenu=False)
onchange_tracking(self)
search(self, args, offset=0, limit=None, order=None, count=False)
view_header_get(self, view_id, view_type)
write(self, values)
fixed_location_ids
One2many → stock.fixed.putaway.strat
copy=True
help='When the method is fixed, this location will be used to store the products'
args: 'stock.fixed.putaway.strat', 'putaway_id', 'Fixed Locations Per Product Category'
method
Selection
default='fixed'
required=True
args: '_get_putaway_options', 'Method'
name
Char
required=True
args: 'Name'
putaway_apply(self, product)
method
Char
help='FIFO, LIFO...'
required=True
args: 'Method'
name
Char
required=True
args: 'Name'
No public methods.
description_picking
Text
translate=True
args: 'Description on Picking'
incoming_qty
Float
compute='_compute_quantities'
digits=dp.get_precision('Product Unit of Measure')
search='_search_incoming_qty'
args: 'Incoming'
location_id
Many2one → stock.location
nbr_reordering_rules
Integer
compute='_compute_nbr_reordering_rules'
args: 'Reordering Rules'
outgoing_qty
Float
compute='_compute_quantities'
digits=dp.get_precision('Product Unit of Measure')
search='_search_outgoing_qty'
args: 'Outgoing'
property_stock_inventory
Many2one → stock.location
company_dependent=True
domain=[('usage', 'like', 'inventory')]
help='This stock location will be used, instead of the default one, as the source location for stock moves generated when you do an inventory.'
args: 'stock.location', 'Inventory Location'
property_stock_procurement
Many2one → stock.location
company_dependent=True
domain=[('usage', 'like', 'procurement')]
help='This stock location will be used, instead of the default one, as the source location for stock moves generated by procurements.'
args: 'stock.location', 'Procurement Location'
property_stock_production
Many2one → stock.location
company_dependent=True
domain=[('usage', 'like', 'production')]
help='This stock location will be used, instead of the default one, as the source location for stock moves generated by manufacturing orders.'
args: 'stock.location', 'Production Location'
qty_available
Float
compute='_compute_quantities'
digits=dp.get_precision('Product Unit of Measure')
search='_search_qty_available'
args: 'Quantity On Hand'
reordering_max_qty
Float
compute='_compute_nbr_reordering_rules'
reordering_min_qty
Float
compute='_compute_nbr_reordering_rules'
route_from_categ_ids
Many2many
related='categ_id.total_route_ids'
relation='stock.location.route'
string='Category Routes'
route_ids
Many2many → stock.location.route
domain=[('product_selectable', '=', True)]
help='Depending on the modules installed, this will allow you to define the route of the product: whether it will be bought, manufactured, MTO/MTS,...'
args: 'stock.location.route', 'stock_route_product', 'product_id', 'route_id', 'Routes'
sale_delay
Float
default=0
help="The average delay in days between the confirmation of the customer order and the delivery of the finished products. It's the time you promise to your customers."
args: 'Customer Lead Time'
tracking
Selection
default='none'
required=True
string='Tracking'
args: [('serial', 'By Unique Serial Number'), ('lot', 'By Lots'), ('none', 'No Tracking')]
type
Selection
selection_add=[('product', 'Stockable Product')]
virtual_available
Float
compute='_compute_quantities'
digits=dp.get_precision('Product Unit of Measure')
search='_search_virtual_available'
args: 'Forecasted Quantity'
warehouse_id
Many2one → stock.warehouse
action_open_quants(self)
action_view_orderpoints(self)
action_view_routes(self)
action_view_stock_moves(self)
onchange_tracking(self)
search(self, args, offset=0, limit=None, order=None, count=False)
write(self, vals)
cumulative_quantity
Float
readonly=True
string='Cumulative Quantity'
date
Date
string='Date'
product_id
Many2one → product.product
readonly=True
string='Product'
args: 'product.product'
product_tmpl_id
Many2one → product.template
readonly=True
related='product_id.product_tmpl_id'
string='Product Template'
args: 'product.template'
quantity
Float
readonly=True
init(self)
active
Boolean
readonly=True
args: 'Active'
date
Datetime
readonly=True
args: 'Date of latest Inventory'
id
Integer
readonly=True
args: 'Product Id'
move_date
Datetime
readonly=True
args: 'Date of latest Stock Move'
product_id
Many2one → product.product
index=True
readonly=True
args: 'product.product', 'Product'
init(self)
internal_transit_location_id
Many2one → stock.location
help='Technical field used for resupply routes between warehouses that belong to this company'
on_delete='restrict'
args: 'stock.location', 'Internal Transit Location'
propagation_minimum_delta
Integer
default=1
args: 'Minimum Delta for Propagation of a Date Change on moves linked together'
create(self, vals)
create_transit_location(self)
picking_warn
Selection
default='no-message'
help=WARNING_HELP
required=True
args: WARNING_MESSAGE, 'Stock Picking'
picking_warn_msg
Text
property_stock_customer
Many2one → stock.location
company_dependent=True
help='This stock location will be used, instead of the default one, as the destination location for goods you send to this partner'
string='Customer Location'
args: 'stock.location'
property_stock_supplier
Many2one → stock.location
company_dependent=True
help='This stock location will be used, instead of the default one, as the source location for goods you receive from the current partner'
string='Vendor Location'
args: 'stock.location'
No public methods.
pick_id
Many2one → stock.picking
default_get(self, fields)
process(self)
process_cancel_backorder(self)
location_id
Many2one → stock.location
domain="[('usage', '=', 'internal')]"
required=True
args: 'stock.location', 'Location'
lot_id
Many2one → stock.production.lot
domain="[('product_id','=',product_id)]"
args: 'stock.production.lot', 'Lot/Serial Number'
new_quantity
Float
default=1
digits=dp.get_precision('Product Unit of Measure')
help='This quantity is expressed in the Default Unit of Measure of the product.'
required=True
args: 'New Quantity on Hand'
product_id
Many2one → product.product
required=True
args: 'product.product', 'Product'
product_tmpl_id
Many2one → product.template
required=True
args: 'product.template', 'Template'
product_variant_count
Integer
related='product_tmpl_id.product_variant_count'
args: 'Variant Count'
change_product_qty(self)
check_new_quantity(self)
create(self, values)
default_get(self, fields)
onchange_location_id(self)
onchange_product_id(self)
onchange_product_id_dict(self, product_id)
company_id
Many2one → res.company
default=<expr>
required=True
args: 'res.company', 'Company'
decimal_precision
Integer
help='As an example, a decimal precision of 2 will allow weights like: 9.99 kg, whereas a decimal precision of 4 will allow weights like: 0.0231 kg.'
args: 'Decimal precision on weight'
group_product_variant
Selection
help='Work with product variant allows you to define some variant of the same products, an ease the product management in the ecommerce for example'
implied_group='product.group_product_variant'
args: [(0, 'No variants on products'), (1, 'Products can have several attributes, defining variants (Example: size, color,...)')], 'Product Variants'
group_stock_adv_location
Selection
help='This option supplements the warehouse application by effectively implementing Push and Pull inventory flows through Routes.'
implied_group='stock.group_adv_location'
args: [(0, 'No automatic routing of products'), (1, 'Advanced routing of products using rules')], 'Routes'
group_stock_multi_locations
Boolean
implied_group='stock.group_stock_multi_locations'
args: 'Manage several stock locations'
group_stock_multi_warehouses
Boolean
implied_group='stock.group_stock_multi_warehouses'
args: 'Manage several warehouses'
group_stock_packaging
Selection
help='Allows you to create and manage your packaging dimensions and types you want to be maintained in your system.'
implied_group='product.group_stock_packaging'
args: [(0, 'Do not manage packaging'), (1, 'Manage available packaging options per products')], 'Packaging Methods'
group_stock_production_lot
Selection
help='This allows you to assign a lot (or serial number) to the pickings and moves. This can make it possible to know which production lot was sent to a certain client, ...'
implied_group='stock.group_production_lot'
args: [(0, 'Do not track individual product items'), (1, 'Track lots or serial numbers')], 'Lots and Serial Numbers'
group_stock_tracking_lot
Selection
help='This allows to manipulate packages. You can put something in, take something from a package, but also move entire packages and put them even in another package. '
implied_group='stock.group_tracking_lot'
args: [(0, 'Do not manage packaging'), (1, 'Record packages used on packing: pallets, boxes, ...')], 'Packages'
group_stock_tracking_owner
Selection
help='This way you can receive products attributed to a certain owner. '
implied_group='stock.group_tracking_owner'
args: [(0, 'All products in your warehouse belong to your company'), (1, 'Manage consignee stocks (advanced)')], 'Product Owners'
group_uom
Selection
help='Allows you to select and maintain different units of measure for products.'
implied_group='product.group_uom'
args: [(0, 'Products have only one unit of measure (easier)'), (1, 'Some products may be sold/purchased in different units of measure (advanced)')], 'Units of Measure'
group_warning_stock
Selection
implied_group='stock.group_warning_stock'
args: [(0, 'All the partners can be used in pickings'), (1, 'An informative or blocking warning can be set on a partner')], 'Warning'
module_delivery_dhl
Boolean
module_delivery_fedex
Boolean
module_delivery_temando
Boolean
module_delivery_ups
Boolean
module_delivery_usps
Boolean
module_procurement_jit
Selection
help='Allows you to automatically reserve the available\n products when confirming a sale order.\n This installs the module procurement_jit.'
args: [(1, 'Reserve products immediately after the sale order confirmation'), (0, 'Reserve products manually or based on automatic scheduler')], 'Procurements'
module_product_expiry
Selection
help='Track different dates on products and serial numbers.\n The following dates can be tracked:\n - end of life\n - best before date\n - removal date\n - alert date.\n This installs the module product_expiry.'
args: [(0, 'Do not use Expiration Date on serial numbers'), (1, 'Define Expiration Date on serial numbers')], 'Expiration Dates'
module_quality
Boolean
help='This module allows you to generate quality alerts and quality check'
string='Quality'
module_stock_barcode
Boolean
module_stock_calendar
Selection
help='This allows you to handle minimum stock rules differently by the possibility to take into account the purchase and delivery calendars \n-This installs the module stock_calendar.'
args: [(0, 'Set lead times in calendar days (easy)'), (1, "Adapt lead times using the suppliers' open days calendars (advanced)")], 'Minimum Stock Rules'
module_stock_dropshipping
Selection
help='\nCreates the dropship route and add more complex tests\n-This installs the module stock_dropshipping.'
args: [(0, 'Suppliers always deliver to your warehouse(s)'), (1, 'Allow suppliers to deliver directly to your customers')], 'Dropshipping'
module_stock_picking_wave
Selection
help='Install the picking wave module which will help you grouping your pickings and processing them in batch'
args: [(0, 'Manage pickings one at a time'), (1, 'Manage picking in batch per worker')], 'Picking Waves'
propagation_minimum_delta
Integer
related='company_id.propagation_minimum_delta'
args: 'Minimum days to trigger a propagation of date change in pushed/pull flows.'
warehouse_and_location_usage_level
Selection
default_get(self, fields)
get_default_decimal_precision(self, fields)
onchange_adv_location(self)
onchange_warehouse_and_location_usage_level(self)
set_decimal_precision(self)
set_group_stock_multi_locations(self)
category_id
Many2one → product.category
required=True
args: 'product.category', 'Product Category'
fixed_location_id
Many2one → stock.location
required=True
args: 'stock.location', 'Location'
putaway_id
Many2one → product.putaway
required=True
args: 'product.putaway', 'Put Away Method'
sequence
Integer
help='Give to the more specialized category, a higher priority to have them in top of the list.'
args: 'Priority'
No public methods.
pick_id
Many2one → stock.picking
default_get(self, fields)
process(self)
active
Boolean
default=True
help='By unchecking the active field, you may hide an INCOTERM you will not use.'
args: 'Active'
code
Char
help='Incoterm Standard Code'
required=True
size=3
args: 'Code'
name
Char
help='Incoterms are series of sales terms. They are used to divide transaction costs and responsibilities between buyer and seller and reflect state-of-the-art transportation practices.'
required=True
translate=True
args: 'Name'
No public methods.
category_id
Many2one → product.category
help='Specify Product Category to focus your inventory on a particular Category.'
readonly=True
states={'draft': [('readonly', False)]}
args: 'product.category', 'Inventoried Category'
company_id
Many2one → res.company
default=<expr>
index=True
readonly=True
required=True
states={'draft': [('readonly', False)]}
args: 'res.company', 'Company'
date
Datetime
default=fields.Datetime.now
help='The date that will be used for the stock level check of the products and the validation of the stock move related to this inventory.'
readonly=True
required=True
args: 'Inventory Date'
exhausted
Boolean
readonly=True
states={'draft': [('readonly', False)]}
args: 'Include Exhausted Products'
filter
Selection
default='none'
help="If you do an entire inventory, you can choose 'All Products' and it will prefill the inventory with the current stock. If you only do some products (e.g. Cycle Counting) you can choose 'Manual Selection of Products' and the system won't propose anything. You can also let the system propose for a single product / lot /... "
required=True
selection='_selection_filter'
string='Inventory of'
line_ids
One2many → stock.inventory.line
copy=True
readonly=False
states={'done': [('readonly', True)]}
string='Inventories'
args: 'stock.inventory.line', 'inventory_id'
location_id
Many2one → stock.location
default=_default_location_id
readonly=True
required=True
states={'draft': [('readonly', False)]}
args: 'stock.location', 'Inventoried Location'
lot_id
Many2one → stock.production.lot
copy=False
help='Specify Lot/Serial Number to focus your inventory on a particular Lot/Serial Number.'
readonly=True
states={'draft': [('readonly', False)]}
args: 'stock.production.lot', 'Inventoried Lot/Serial Number'
move_ids
One2many → stock.move
states={'done': [('readonly', True)]}
string='Created Moves'
args: 'stock.move', 'inventory_id'
name
Char
readonly=True
required=True
states={'draft': [('readonly', False)]}
args: 'Inventory Reference'
package_id
Many2one → stock.quant.package
help='Specify Pack to focus your inventory on a particular Pack.'
readonly=True
states={'draft': [('readonly', False)]}
args: 'stock.quant.package', 'Inventoried Pack'
partner_id
Many2one → res.partner
help='Specify Owner to focus your inventory on a particular Owner.'
readonly=True
states={'draft': [('readonly', False)]}
args: 'res.partner', 'Inventoried Owner'
product_id
Many2one → product.product
help='Specify Product to focus your inventory on a particular Product.'
readonly=True
states={'draft': [('readonly', False)]}
args: 'product.product', 'Inventoried Product'
state
Selection
copy=False
default='draft'
index=True
readonly=True
selection=[('draft', 'Draft'), ('cancel', 'Cancelled'), ('confirm', 'In Progress'), ('done', 'Validated')]
string='Status'
total_qty
Float
compute='_compute_total_qty'
args: 'Total Quantity'
action_cancel_draft(self)
action_check(self)
action_done(self)
action_inventory_line_tree(self)
action_reset_product_qty(self)
action_start(self)
onchange_filter(self)
onchange_location_id(self)
post_inventory(self)
unlink(self)
company_id
Many2one → res.company
index=True
readonly=True
related='inventory_id.company_id'
store=True
args: 'res.company', 'Company'
inventory_id
Many2one → stock.inventory
index=True
ondelete='cascade'
args: 'stock.inventory', 'Inventory'
inventory_location_id
Many2one → stock.location
related='inventory_id.location_id'
related_sudo=False
args: 'stock.location', 'Location'
location_id
Many2one → stock.location
index=True
required=True
args: 'stock.location', 'Location'
location_name
Char
related='location_id.complete_name'
store=True
args: 'Location Name'
package_id
Many2one → stock.quant.package
index=True
args: 'stock.quant.package', 'Pack'
partner_id
Many2one → res.partner
prod_lot_id
Many2one → stock.production.lot
domain="[('product_id','=',product_id)]"
args: 'stock.production.lot', 'Lot/Serial Number'
prodlot_name
Char
readonly=True
related='prod_lot_id.name'
store=True
args: 'Serial Number Name'
product_code
Char
related='product_id.default_code'
store=True
args: 'Product Code'
product_id
Many2one → product.product
index=True
required=True
args: 'product.product', 'Product'
product_name
Char
readonly=True
related='product_id.name'
store=True
args: 'Product Name'
product_qty
Float
default=0
digits=dp.get_precision('Product Unit of Measure')
args: 'Checked Quantity'
product_uom_id
Many2one → product.uom
default=<expr>
required=True
args: 'product.uom', 'Product Unit of Measure'
state
Selection
readonly=True
related='inventory_id.state'
args: 'Status'
theoretical_qty
Float
compute='_compute_theoretical_qty'
digits=dp.get_precision('Product Unit of Measure')
readonly=True
store=True
args: 'Theoretical Quantity'
create(self, values)
onchange_product(self)
onchange_quantity_context(self)
write(self, values)
active
Boolean
default=True
help='By unchecking the active field, you may hide a location without deleting it.'
args: 'Active'
barcode
Char
copy=False
oldname='loc_barcode'
args: 'Barcode'
child_ids
One2many → stock.location
comment
Text
company_id
Many2one → res.company
default=<expr>
help='Let this field empty if this location is shared between companies'
index=True
args: 'res.company', 'Company'
complete_name
Char
compute='_compute_complete_name'
store=True
args: 'Full Location Name'
location_id
Many2one → stock.location
help="The parent location that includes this location. Example : The 'Dispatch Zone' is the 'Gate 1' parent location."
index=True
ondelete='cascade'
args: 'stock.location', 'Parent Location'
name
Char
required=True
translate=True
args: 'Location Name'
parent_left
Integer
index=True
args: 'Left Parent'
parent_right
Integer
index=True
args: 'Right Parent'
partner_id
Many2one → res.partner
help='Owner of the location if not internal'
args: 'res.partner', 'Owner'
posx
Integer
default=0
help='Optional localization details, for information purpose only'
args: 'Corridor (X)'
posy
Integer
default=0
help='Optional localization details, for information purpose only'
args: 'Shelves (Y)'
posz
Integer
default=0
help='Optional localization details, for information purpose only'
args: 'Height (Z)'
putaway_strategy_id
Many2one → product.putaway
help='Defines the default method used for suggesting the exact location (shelf) where to store the products. This method can be enforced at the product category level, and a fallback is made on the parent locations if none is set here.'
args: 'product.putaway', 'Put Away Strategy'
removal_strategy_id
Many2one → product.removal
help='Defines the default method used for suggesting the exact location (shelf) where to take the products from, which lot etc. for this location. This method can be enforced at the product category level, and a fallback is made on the parent locations if none is set here.'
args: 'product.removal', 'Removal Strategy'
return_location
Boolean
help='Check this box to allow using this location as a return location.'
args: 'Is a Return Location?'
scrap_location
Boolean
default=False
help='Check this box to allow using this location to put scrapped/damaged goods.'
args: 'Is a Scrap Location?'
usage
Selection
default='internal'
help="* Vendor Location: Virtual location representing the source location for products coming from your vendors\n* View: Virtual location used to create a hierarchical structures for your warehouse, aggregating its child locations ; can't directly contain products\n* Internal Location: Physical locations inside your own warehouses,\n* Customer Location: Virtual location representing the destination location for products sent to your customers\n* Inventory Loss: Virtual location serving as counterpart for inventory operations used to correct stock levels (Physical inventories)\n* Procurement: Virtual location serving as temporary counterpart for procurement operations when the source (vendor or production) is not known yet. This location should be empty when the procurement scheduler has finished running.\n* Production: Virtual counterpart location for production operations: this location consumes the raw material and produces finished products\n* Transit Location: Counterpart location that should be used in inter-companies or inter-warehouses operations"
index=True
required=True
string='Location Type'
args: [('supplier', 'Vendor Location'), ('view', 'View'), ('internal', 'Internal Location'), ('customer', 'Customer Location'), ('inventory', 'Inventory Loss'), ('procurement', 'Procurement'), ('production', 'Production'), ('transit', 'Transit Location')]
default_get(self, fields)
get_putaway_strategy(self, product)
get_warehouse(self)
name_get(self)
active
Boolean
default=True
args: 'Active'
auto
Selection
default='manual'
help="The 'Manual Operation' value will create a stock move after the current one.With 'Automatic No Step Added', the location is replaced in the original move."
index=True
required=True
string='Automatic Move'
args: [('manual', 'Manual Operation'), ('transparent', 'Automatic No Step Added')]
company_id
Many2one → res.company
default=<expr>
index=True
args: 'res.company', 'Company'
delay
Integer
default=0
help='Number of days needed to transfer the goods'
args: 'Delay (days)'
location_dest_id
Many2one → stock.location
help='The new location where the goods need to go'
index=True
ondelete='cascade'
required=True
args: 'stock.location', 'Destination Location'
location_from_id
Many2one → stock.location
help='This rule can be applied when a move is confirmed that has this location as destination location'
index=True
ondelete='cascade'
required=True
args: 'stock.location', 'Source Location'
name
Char
required=True
args: 'Operation Name'
picking_type_id
Many2one → stock.picking.type
help='This is the picking type that will be put on the stock moves'
required=True
args: 'stock.picking.type', 'Picking Type'
propagate
Boolean
default=True
help='If checked, when the previous move is cancelled or split, the move generated by this move will too'
args: 'Propagate cancel and split'
route_id
Many2one → stock.location.route
route_sequence
Integer
related='route_id.sequence'
store=True
args: 'Route Sequence'
sequence
Integer
warehouse_id
Many2one → stock.warehouse
No public methods.
active
Boolean
default=True
help='If the active field is set to False, it will allow you to hide the route without removing it.'
args: 'Active'
categ_ids
Many2many → product.category
company_id
Many2one → res.company
default=<expr>
help='Leave this field empty if this route is shared between all companies'
index=True
args: 'res.company', 'Company'
name
Char
required=True
translate=True
args: 'Route Name'
product_categ_selectable
Boolean
help='When checked, the route will be selectable on the Product Category. It will take priority over the Warehouse route. '
args: 'Applicable on Product Category'
product_ids
Many2many → product.template
product_selectable
Boolean
default=True
help='When checked, the route will be selectable in the Inventory tab of the Product form. It will take priority over the Warehouse route. '
args: 'Applicable on Product'
pull_ids
One2many → procurement.rule
copy=True
args: 'procurement.rule', 'route_id', 'Procurement Rules'
push_ids
One2many → stock.location.path
copy=True
args: 'stock.location.path', 'route_id', 'Push Rules'
sequence
Integer
default=0
args: 'Sequence'
supplied_wh_id
Many2one → stock.warehouse
supplier_wh_id
Many2one → stock.warehouse
warehouse_ids
Many2many → stock.warehouse
warehouse_selectable
Boolean
help='When a warehouse is selected for this route, this route should be seen as the default route when products pass through this warehouse. This behaviour can be overridden by the routes on the Product/Product Categories or by the Preferred Routes on the Procurement'
args: 'Applicable on Warehouse'
view_categ_ids(self)
view_product_ids(self)
write(self, values)
availability
Float
compute='_compute_product_availability'
help='Quantity in stock that can still be reserved for this move'
readonly=True
args: 'Forecasted Quantity'
backorder_id
Many2one → stock.picking
index=True
related='picking_id.backorder_id'
args: 'stock.picking', 'Back Order of'
company_id
Many2one → res.company
default=<expr>
index=True
required=True
args: 'res.company', 'Company'
create_date
Datetime
index=True
readonly=True
args: 'Creation Date'
date
Datetime
default=fields.Datetime.now
help='Move date: scheduled date until move is done, then date of actual move processing'
index=True
required=True
states={'done': [('readonly', True)]}
args: 'Date'
date_expected
Datetime
default=fields.Datetime.now
help='Scheduled date for the processing of this move'
index=True
required=True
states={'done': [('readonly', True)]}
args: 'Expected Date'
group_id
Many2one → procurement.group
default=_default_group_id
args: 'procurement.group', 'Procurement Group'
inventory_id
Many2one → stock.inventory
linked_move_operation_ids
One2many → stock.move.operation.link
help='Operations that impact this move for the computation of the remaining quantities'
readonly=True
args: 'stock.move.operation.link', 'move_id', 'Linked Operations'
location_dest_id
Many2one → stock.location
auto_join=True
help='Location where the system will stock the finished products.'
index=True
required=True
states={'done': [('readonly', True)]}
args: 'stock.location', 'Destination Location'
location_id
Many2one → stock.location
auto_join=True
help='Sets a location if you produce at a fixed location. This can be a partner location if you subcontract the manufacturing operations.'
index=True
required=True
states={'done': [('readonly', True)]}
args: 'stock.location', 'Source Location'
lot_ids
Many2many → stock.production.lot
compute='_compute_lot_ids'
string='Lots/Serial Numbers'
args: 'stock.production.lot'
move_dest_id
Many2one → stock.move
copy=False
help='Optional: next stock move when chaining them'
index=True
args: 'stock.move', 'Destination Move'
move_orig_ids
One2many → stock.move
help='Optional: previous stock move when chaining them'
args: 'stock.move', 'move_dest_id', 'Original Move'
name
Char
index=True
required=True
args: 'Description'
note
Text
ordered_qty
Float
digits=dp.get_precision('Product Unit of Measure')
args: 'Ordered Quantity'
origin
Char
origin_returned_move_id
Many2one → stock.move
copy=False
help='Move that created the return move'
args: 'stock.move', 'Origin return move'
partially_available
Boolean
copy=False
help='Checks if the move has some stock reserved'
readonly=True
args: 'Partially Available'
partner_id
Many2one → res.partner
help='Optional address where goods are to be delivered, specifically used for allotment'
states={'done': [('readonly', True)]}
args: 'res.partner', 'Destination Address '
picking_id
Many2one → stock.picking
index=True
states={'done': [('readonly', True)]}
args: 'stock.picking', 'Transfer Reference'
picking_partner_id
Many2one → res.partner
related='picking_id.partner_id'
args: 'res.partner', 'Transfer Destination Address'
picking_type_id
Many2one → stock.picking.type
price_unit
Float
help="Technical field used to record the product cost set by the user during a picking confirmation (when costing method used is 'average price' or 'real'). Value given in company currency and in product uom."
args: 'Unit Price'
priority
Selection
default='1'
args: procurement.PROCUREMENT_PRIORITIES, 'Priority'
procure_method
Selection
default='make_to_stock'
help='By default, the system will take from the stock in the source location and passively wait for availability.The other possibility allows you to directly create a procurement on the source location (and thus ignore its current stock) to gather products. If we want to chain moves and have this one to wait for the previous,this second option should be chosen.'
required=True
string='Supply Method'
args: [('make_to_stock', 'Default: Take From Stock'), ('make_to_order', 'Advanced: Apply Procurement Rules')]
procurement_id
Many2one → procurement.order
product_id
Many2one → product.product
domain=[('type', 'in', ['product', 'consu'])]
index=True
required=True
states={'done': [('readonly', True)]}
args: 'product.product', 'Product'
product_packaging
Many2one → product.packaging
help='It specifies attributes of packaging like type, quantity of packaging,etc.'
args: 'product.packaging', 'Preferred Packaging'
product_qty
Float
compute='_compute_product_qty'
digits=0
help='Quantity in the default UoM of the product'
inverse='_set_product_qty'
store=True
args: 'Real Quantity'
product_tmpl_id
Many2one → product.template
help='Technical: used in views'
related='product_id.product_tmpl_id'
args: 'product.template', 'Product Template'
product_uom
Many2one → product.uom
required=True
states={'done': [('readonly', True)]}
args: 'product.uom', 'Unit of Measure'
product_uom_qty
Float
default=1.0
digits=dp.get_precision('Product Unit of Measure')
help="This is the quantity of products from an inventory point of view. For moves in the state 'done', this is the quantity of products that were actually moved. For other moves, this is the quantity of product that is planned to be moved. Lowering this quantity does not generate a backorder. Changing this quantity on assigned moves affects the product reservation, and should be done with care."
required=True
states={'done': [('readonly', True)]}
args: 'Quantity'
propagate
Boolean
default=True
help='If checked, when this move is cancelled, cancel the linked move too'
args: 'Propagate cancel and split'
push_rule_id
Many2one → stock.location.path
help='The push rule that created this stock move'
args: 'stock.location.path', 'Push Rule'
quant_ids
Many2many → stock.quant
copy=False
args: 'stock.quant', 'stock_quant_move_rel', 'move_id', 'quant_id', 'Moved Quants'
remaining_qty
Float
compute='_get_remaining_qty'
digits=0
help='Remaining Quantity in default UoM according to operations matched with this move'
states={'done': [('readonly', True)]}
args: 'Remaining Quantity'
reserved_availability
Float
compute='_compute_reserved_availability'
help='Quantity that has already been reserved for this move'
readonly=True
args: 'Quantity Reserved'
reserved_quant_ids
One2many → stock.quant
restrict_lot_id
Many2one → stock.production.lot
help="Technical field used to depict a restriction on the lot/serial number of quants to consider when marking this move as 'done'"
args: 'stock.production.lot', 'Lot/Serial Number'
restrict_partner_id
Many2one → res.partner
help="Technical field used to depict a restriction on the ownership of quants to consider when marking this move as 'done'"
args: 'res.partner', 'Owner '
returned_move_ids
One2many → stock.move
help='Optional: all returned moves created from this move'
args: 'stock.move', 'origin_returned_move_id', 'All returned moves'
route_ids
Many2many → stock.location.route
help='Preferred route to be followed by the procurement order'
args: 'stock.location.route', 'stock_location_route_move', 'move_id', 'route_id', 'Destination route'
rule_id
Many2one → procurement.rule
help='The procurement rule that created this stock move'
args: 'procurement.rule', 'Procurement Rule'
scrapped
Boolean
readonly=True
related='location_dest_id.scrap_location'
store=True
args: 'Scrapped'
sequence
Integer
default=10
args: 'Sequence'
split_from
Many2one → stock.move
copy=False
help='Technical field used to track the origin of a split move, which can be useful in case of debug'
args: 'stock.move', 'Move Split From'
state
Selection
copy=False
default='draft'
help="* New: When the stock move is created and not yet confirmed.\n* Waiting Another Move: This state can be seen when a move is waiting for another one, for example in a chained flow.\n* Waiting Availability: This state is reached when the procurement resolution is not straight forward. It may need the scheduler to run, a component to be manufactured...\n* Available: When products are reserved, it is set to 'Available'.\n* Done: When the shipment is processed, the state is 'Done'."
index=True
readonly=True
string='Status'
args: [('draft', 'New'), ('cancel', 'Cancelled'), ('waiting', 'Waiting Another Move'), ('confirmed', 'Waiting Availability'), ('assigned', 'Available'), ('done', 'Done')]
string_availability_info
Text
compute='_compute_string_qty_information'
help='Show various information on stock availability for this move'
readonly=True
args: 'Availability'
warehouse_id
Many2one → stock.warehouse
help='Technical field depicting the warehouse to consider for the route selection on the next procurement (if any).'
args: 'stock.warehouse', 'Warehouse'
action_assign(self, no_prepare=False)
action_cancel(self)
action_confirm(self)
action_done(self)
action_show_picking(self)
assign_picking(self)
check_recompute_pack_op(self)
check_tracking(self, pack_operation)
create(self, vals)
do_unreserve(self)
force_assign(self)
get_ancestors(self)
get_price_unit(self)
get_removal_strategy(self)
init(self)
name_get(self)
onchange_date(self)
onchange_product_id(self)
onchange_quantity(self)
quants_unreserve(self)
recalculate_move_state(self)
set_default_price_unit_from_product(self)
split(self, qty, restrict_lot_id=False, restrict_partner_id=False)
unlink(self)
write(self, vals)
move_id
Many2one → stock.move
ondelete='cascade'
required=True
args: 'stock.move', 'Move'
operation_id
Many2one → stock.pack.operation
ondelete='cascade'
required=True
args: 'stock.pack.operation', 'Operation'
qty
Float
help='Quantity of products to consider when talking about the contribution of this pack operation towards the remaining quantity of the move (and inverse). Given in the product main uom.'
args: 'Quantity'
reserved_quant_id
Many2one → stock.quant
help='Technical field containing the quant that created this link between an operation and a stock move. Used at the stock_move_obj.action_done() time to avoid seeking a matching quant again'
args: 'stock.quant', 'Reserved Quant'
No public methods.
location_id
Many2one → stock.location
required=True
args: 'stock.location', 'Location'
product_id
Many2one → product.product
required=True
args: 'product.product', 'Product'
product_qty
Float
digits=dp.get_precision('Product Unit of Measure')
required=True
args: 'Quantity'
product_uom
Many2one → product.uom
required=True
args: 'product.uom', 'Product Unit of Measure'
restrict_lot_id
Many2one → stock.production.lot
default_get(self, fields)
move_scrap(self)
date
Datetime
default=fields.Date.context_today
required=True
args: 'Date'
fresh_record
Boolean
default=True
args: 'Newly created pack operation'
from_loc
Char
compute='_compute_location_description'
default=_get_default_from_loc
string='From'
is_done
Boolean
compute='_compute_is_done'
oldname='processed_boolean'
readonly=False
string='Done'
linked_move_operation_ids
One2many → stock.move.operation.link
help='Moves impacted by this operation for the computation of the remaining quantities'
readonly=True
string='Linked Moves'
args: 'stock.move.operation.link', 'operation_id'
location_dest_id
Many2one → stock.location
required=True
args: 'stock.location', 'Destination Location'
location_id
Many2one → stock.location
required=True
args: 'stock.location', 'Source Location'
lots_visible
Boolean
compute='_compute_lots_visible'
ordered_qty
Float
digits=dp.get_precision('Product Unit of Measure')
args: 'Ordered Quantity'
owner_id
Many2one → res.partner
help='Owner of the quants'
args: 'res.partner', 'Owner'
pack_lot_ids
One2many → stock.pack.operation.lot
package_id
Many2one → stock.quant.package
picking_destination_location_id
Many2one → stock.location
related='picking_id.location_dest_id'
args: 'stock.location'
picking_id
Many2one → stock.picking
help='The stock operation where the packing has been made'
required=True
args: 'stock.picking', 'Stock Picking'
picking_source_location_id
Many2one → stock.location
related='picking_id.location_id'
args: 'stock.location'
product_id
Many2one → product.product
ondelete='cascade'
args: 'product.product', 'Product'
product_qty
Float
default=0.0
digits=dp.get_precision('Product Unit of Measure')
required=True
args: 'To Do'
product_uom_id
Many2one → product.uom
qty_done
Float
default=0.0
digits=dp.get_precision('Product Unit of Measure')
args: 'Done'
qty_done_uom_ordered
Float
compute='_compute_qty_done_uom_ordered'
digits=dp.get_precision('Product Unit of Measure')
help='Quantity done in UOM ordered'
args: 'Quantity Done'
remaining_qty
Float
compute='_get_remaining_qty'
digits=0
help='Remaining quantity in default UoM according to moves matched with this operation.'
string='Remaining Qty'
result_package_id
Many2one → stock.quant.package
help='If set, the operations are packed into this package'
ondelete='cascade'
required=False
args: 'stock.quant.package', 'Destination Package'
state
Selection
related='picking_id.state'
selection=[('draft', 'Draft'), ('cancel', 'Cancelled'), ('waiting', 'Waiting Another Operation'), ('confirmed', 'Waiting Availability'), ('partially_available', 'Partially Available'), ('assigned', 'Available'), ('done', 'Done')]
to_loc
Char
compute='_compute_location_description'
default=_get_default_to_loc
string='To'
action_split_lots(self)
create(self, vals)
on_change_is_done(self)
onchange_product_id(self)
save(self)
show_details(self)
split_quantities(self)
unlink(self)
write(self, values)
lot_id
Many2one → stock.production.lot
lot_name
Char
operation_id
Many2one → stock.pack.operation
plus_visible
Boolean
compute='_compute_plus_visible'
default=True
qty
Float
default=1.0
digits=dp.get_precision('Product Unit of Measure')
args: 'Done'
qty_todo
Float
default=0.0
digits=dp.get_precision('Product Unit of Measure')
args: 'To Do'
action_add_quantity(self, quantity)
do_minus(self)
do_plus(self)
backorder_id
Many2one → stock.picking
copy=False
help='If this shipment was split, then this field links to the shipment which contains the already processed part.'
index=True
states={'done': [('readonly', True)], 'cancel': [('readonly', True)]}
args: 'stock.picking', 'Back Order of'
company_id
Many2one → res.company
default=<expr>
index=True
required=True
states={'done': [('readonly', True)], 'cancel': [('readonly', True)]}
args: 'res.company', 'Company'
date
Datetime
default=fields.Datetime.now
help='Creation Date, usually the time of the order'
index=True
states={'done': [('readonly', True)], 'cancel': [('readonly', True)]}
track_visibility='onchange'
args: 'Creation Date'
date_done
Datetime
copy=False
help='Completion Date of Transfer'
readonly=True
args: 'Date of Transfer'
group_id
Many2one → procurement.group
readonly=True
related='move_lines.group_id'
store=True
args: 'procurement.group', 'Procurement Group'
has_scrap_move
Boolean
compute='_has_scrap_move'
args: 'Has Scrap Moves'
launch_pack_operations
Boolean
copy=False
args: 'Launch Pack Operations'
location_dest_id
Many2one → stock.location
default=<expr>
readonly=True
required=True
states={'draft': [('readonly', False)]}
args: 'stock.location', 'Destination Location Zone'
location_id
Many2one → stock.location
default=<expr>
readonly=True
required=True
states={'draft': [('readonly', False)]}
args: 'stock.location', 'Source Location Zone'
max_date
Datetime
compute='_compute_dates'
help='Scheduled time for the last part of the shipment to be processed'
index=True
store=True
args: 'Max. Expected Date'
min_date
Datetime
compute='_compute_dates'
help='Scheduled time for the first part of the shipment to be processed. Setting manually a value here would set it as expected date for all the stock moves.'
index=True
inverse='_set_min_date'
states={'done': [('readonly', True)], 'cancel': [('readonly', True)]}
store=True
track_visibility='onchange'
args: 'Scheduled Date'
move_lines
One2many → stock.move
copy=True
string='Stock Moves'
args: 'stock.move', 'picking_id'
move_type
Selection
default='direct'
help='It specifies goods to be deliver partially or all at once'
required=True
states={'done': [('readonly', True)], 'cancel': [('readonly', True)]}
args: [('direct', 'Partial'), ('one', 'All at once')], 'Delivery Type'
name
Char
copy=False
default='/'
index=True
states={'done': [('readonly', True)], 'cancel': [('readonly', True)]}
args: 'Reference'
note
Text
origin
Char
help='Reference of the document'
index=True
states={'done': [('readonly', True)], 'cancel': [('readonly', True)]}
args: 'Source Document'
owner_id
Many2one → res.partner
help='Default Owner'
states={'done': [('readonly', True)], 'cancel': [('readonly', True)]}
args: 'res.partner', 'Owner'
pack_operation_exist
Boolean
compute='_compute_pack_operation_exist'
help='Check the existence of pack operation on the picking'
args: 'Has Pack Operations'
pack_operation_ids
One2many → stock.pack.operation
states={'done': [('readonly', True)], 'cancel': [('readonly', True)]}
args: 'stock.pack.operation', 'picking_id', 'Related Packing Operations'
pack_operation_pack_ids
One2many → stock.pack.operation
domain=[('product_id', '=', False)]
states={'done': [('readonly', True)], 'cancel': [('readonly', True)]}
args: 'stock.pack.operation', 'picking_id', 'Pack'
pack_operation_product_ids
One2many → stock.pack.operation
domain=[('product_id', '!=', False)]
states={'done': [('readonly', True)], 'cancel': [('readonly', True)]}
args: 'stock.pack.operation', 'picking_id', 'Non pack'
partner_id
Many2one → res.partner
states={'done': [('readonly', True)], 'cancel': [('readonly', True)]}
args: 'res.partner', 'Partner'
picking_type_code
Selection
readonly=True
related='picking_type_id.code'
args: [('incoming', 'Vendors'), ('outgoing', 'Customers'), ('internal', 'Internal')]
picking_type_entire_packs
Boolean
readonly=True
related='picking_type_id.show_entire_packs'
picking_type_id
Many2one → stock.picking.type
readonly=True
required=True
states={'draft': [('readonly', False)]}
args: 'stock.picking.type', 'Picking Type'
printed
Boolean
priority
Selection
compute='_compute_priority'
help='Priority for this picking. Setting manually a value here would set it as priority for all the moves'
index=True
inverse='_set_priority'
states={'done': [('readonly', True)], 'cancel': [('readonly', True)]}
store=True
string='Priority'
track_visibility='onchange'
args: procurement.PROCUREMENT_PRIORITIES
product_id
Many2one → product.product
related='move_lines.product_id'
args: 'product.product', 'Product'
quant_reserved_exist
Boolean
compute='_compute_quant_reserved_exist'
help='Check the existance of quants linked to this picking'
args: 'Has quants already reserved'
recompute_pack_op
Boolean
copy=False
help='True if reserved quants changed, which mean we might need to recompute the package operations'
args: 'Recompute pack operation?'
state
Selection
compute='_compute_state'
copy=False
help=" * Draft: not confirmed yet and will not be scheduled until confirmed\n * Waiting Another Operation: waiting for another move to proceed before it becomes automatically available (e.g. in Make-To-Order flows)\n * Waiting Availability: still waiting for the availability of products\n * Partially Available: some products are available and reserved\n * Ready to Transfer: products reserved, simply waiting for confirmation.\n * Transferred: has been processed, can't be modified or cancelled anymore\n * Cancelled: has been cancelled, can't be confirmed anymore"
index=True
readonly=True
store=True
string='Status'
track_visibility='onchange'
args: [('draft', 'Draft'), ('cancel', 'Cancelled'), ('waiting', 'Waiting Another Operation'), ('confirmed', 'Waiting Availability'), ('partially_available', 'Partially Available'), ('assigned', 'Available'), ('done', 'Done')]
action_assign(self)
action_assign_owner(self)
action_cancel(self)
action_confirm(self)
action_done(self)
action_see_move_scrap(self)
button_scrap(self)
check_backorder(self)
create(self, vals)
do_new_transfer(self)
do_prepare_partial(self)
do_print_picking(self)
do_recompute_remaining_quantities(self, done_qtys=False)
do_transfer(self)
do_unreserve(self)
force_assign(self)
onchange_picking_type(self)
picking_recompute_remaining_quantities(self, done_qtys=False)
put_in_pack(self)
recheck_availability(self)
recompute_remaining_qty(self, done_qtys=False)
rereserve_quants(self, move_ids=[])
unlink(self)
write(self, vals)
active
Boolean
default=True
args: 'Active'
barcode_nomenclature_id
Many2one → barcode.nomenclature
code
Selection
required=True
args: [('incoming', 'Vendors'), ('outgoing', 'Customers'), ('internal', 'Internal')], 'Type of Operation'
color
Integer
count_picking
Integer
compute='_compute_picking_count'
count_picking_backorders
Integer
compute='_compute_picking_count'
count_picking_draft
Integer
compute='_compute_picking_count'
count_picking_late
Integer
compute='_compute_picking_count'
count_picking_ready
Integer
compute='_compute_picking_count'
count_picking_waiting
Integer
compute='_compute_picking_count'
default_location_dest_id
Many2one → stock.location
help='This is the default destination location when you create a picking manually with this picking type. It is possible however to change it or that the routes put another location. If it is empty, it will check for the customer location on the partner. '
args: 'stock.location', 'Default Destination Location'
default_location_src_id
Many2one → stock.location
help='This is the default source location when you create a picking manually with this picking type. It is possible however to change it or that the routes put another location. If it is empty, it will check for the supplier location on the partner. '
args: 'stock.location', 'Default Source Location'
last_done_picking
Char
compute='_compute_last_done_picking'
args: 'Last 10 Done Pickings'
name
Char
required=True
translate=True
args: 'Picking Type Name'
rate_picking_backorders
Integer
compute='_compute_picking_count'
rate_picking_late
Integer
compute='_compute_picking_count'
return_picking_type_id
Many2one → stock.picking.type
sequence
Integer
help="Used to order the 'All Operations' kanban view"
args: 'Sequence'
sequence_id
Many2one → ir.sequence
required=True
args: 'ir.sequence', 'Reference Sequence'
show_entire_packs
Boolean
help='If checked, this shows the packs to be moved as a whole in the Operations tab all the time, even if there was no entire pack reserved.'
args: 'Allow moving packs'
use_create_lots
Boolean
default=True
help='If this is checked only, it will suppose you want to create new Lots/Serial Numbers, so you can provide them in a text field. '
args: 'Create New Lots/Serial Numbers'
use_existing_lots
Boolean
default=True
help='If this is checked, you will be able to choose the Lots/Serial Numbers. You can also decide to not put lots in this picking type. This means it will create stock with no lot or not put a restriction on the lot taken. '
args: 'Use Existing Lots/Serial Numbers'
warehouse_id
Many2one → stock.warehouse
default=<expr>
ondelete='cascade'
args: 'stock.warehouse', 'Warehouse'
get_action_picking_tree_backorder(self)
get_action_picking_tree_late(self)
get_action_picking_tree_ready(self)
get_action_picking_tree_waiting(self)
get_stock_picking_action_picking_type(self)
name_get(self)
name_search(self, name, args=None, operator='ilike', limit=100)
onchange_picking_code(self)
create_date
Datetime
name
Char
default=<expr>
help='Unique Lot/Serial Number'
required=True
args: 'Lot/Serial Number'
product_id
Many2one → product.product
domain=[('type', 'in', ['product', 'consu'])]
required=True
args: 'product.product', 'Product'
product_qty
Float
compute='_product_qty'
args: 'Quantity'
product_uom_id
Many2one → product.uom
related='product_id.uom_id'
store=True
args: 'product.uom', 'Unit of Measure'
quant_ids
One2many → stock.quant
readonly=True
args: 'stock.quant', 'lot_id', 'Quants'
ref
Char
help="Internal reference number in case it differs from the manufacturer's lot/serial number"
args: 'Internal Reference'
action_traceability(self)
create(self, vals)
company_id
Many2one → res.company
default=<expr>
help='The company to which the quants belong'
index=True
readonly=True
required=True
args: 'res.company', 'Company'
cost
Float
group_operator='avg'
args: 'Unit Cost'
create_date
Datetime
readonly=True
args: 'Creation Date'
history_ids
Many2many → stock.move
copy=False
help='Moves that operate(d) on this quant'
string='Moves'
args: 'stock.move', 'stock_quant_move_rel', 'quant_id', 'move_id'
in_date
Datetime
index=True
readonly=True
args: 'Incoming Date'
inventory_value
Float
compute='_compute_inventory_value'
readonly=True
args: 'Inventory Value'
location_id
Many2one → stock.location
auto_join=True
index=True
ondelete='restrict'
readonly=True
required=True
args: 'stock.location', 'Location'
lot_id
Many2one → stock.production.lot
index=True
ondelete='restrict'
readonly=True
args: 'stock.production.lot', 'Lot/Serial Number'
name
Char
compute='_compute_name'
string='Identifier'
negative_dest_location_id
Many2one → stock.location
help='Technical field used to record the destination location of a move that created a negative quant'
readonly=True
related='negative_move_id.location_dest_id'
args: 'stock.location', 'Negative Destination Location'
negative_move_id
Many2one → stock.move
help='If this is a negative quant, this will be the move that caused this negative quant.'
readonly=True
args: 'stock.move', 'Move Negative Quant'
owner_id
Many2one → res.partner
help='This is the owner of the quant'
index=True
readonly=True
args: 'res.partner', 'Owner'
package_id
Many2one → stock.quant.package
help='The package containing this quant'
index=True
readonly=True
string='Package'
args: 'stock.quant.package'
packaging_type_id
Many2one → product.packaging
readonly=True
related='package_id.packaging_id'
store=True
string='Type of packaging'
args: 'product.packaging'
product_id
Many2one → product.product
index=True
ondelete='restrict'
readonly=True
required=True
args: 'product.product', 'Product'
product_uom_id
Many2one → product.uom
readonly=True
related='product_id.uom_id'
string='Unit of Measure'
args: 'product.uom'
propagated_from_id
Many2one → stock.quant
help='The negative quant this is coming from'
index=True
readonly=True
args: 'stock.quant', 'Linked Quant'
qty
Float
help='Quantity of products in this quant, in the default unit of measure of the product'
index=True
readonly=True
required=True
args: 'Quantity'
reservation_id
Many2one → stock.move
help='The move the quant is reserved for'
index=True
readonly=True
args: 'stock.move', 'Reserved for Move'
action_view_quant_history(self)
init(self)
move_quants_write(self, move, location_dest_id, dest_package_id, lot_id=False, entire_pack=False)
quants_get_preferred_domain(self, qty, move, ops=False, lot_id=False, domain=None, preferred_domain_list=[])
quants_get_reservation(self, qty, move, pack_operation_id=False, lot_id=False, company_id=False, domain=None, preferred_domain_list=None)
quants_move(self, quants, move, location_to, location_from=False, lot_id=False, owner_id=False, src_package_id=False, dest_package_id=False, entire_pack=False)
quants_reserve(self, quants, move, link=False)
read_group(self, domain, fields, groupby, offset=0, limit=None, orderby=False, lazy=True)
unlink(self)
ancestor_ids
One2many → stock.quant.package
compute='_compute_ancestor_ids'
string='Ancestors'
args: 'stock.quant.package'
children_ids
One2many → stock.quant.package
readonly=True
args: 'stock.quant.package', 'parent_id', 'Contained Packages'
children_quant_ids
One2many → stock.quant
compute='_compute_children_quant_ids'
string='All Bulk Content'
args: 'stock.quant'
company_id
Many2one → res.company
compute='_compute_package_info'
index=True
readonly=True
search='_search_company'
args: 'res.company', 'Company'
location_id
Many2one → stock.location
compute='_compute_package_info'
index=True
readonly=True
search='_search_location'
args: 'stock.location', 'Location'
name
Char
copy=False
default=<expr>
index=True
args: 'Package Reference'
owner_id
Many2one → res.partner
compute='_compute_package_info'
index=True
readonly=True
search='_search_owner'
args: 'res.partner', 'Owner'
packaging_id
Many2one → product.packaging
help="This field should be completed only if everything inside the package share the same product, otherwise it doesn't really makes sense."
index=True
args: 'product.packaging', 'Package Type'
parent_id
Many2one → stock.quant.package
help='The package containing this item'
ondelete='restrict'
readonly=True
args: 'stock.quant.package', 'Parent Package'
parent_left
Integer
index=True
args: 'Left Parent'
parent_right
Integer
index=True
args: 'Right Parent'
quant_ids
One2many → stock.quant
readonly=True
args: 'stock.quant', 'package_id', 'Bulk Content'
action_view_related_picking(self)
name_get(self)
unpack(self)
view_content_package(self)
location_id
Many2one → stock.location
domain="['|', ('id', '=', original_location_id), '&', ('return_location', '=', True), ('id', 'child_of', parent_location_id)]"
args: 'stock.location', 'Return Location'
move_dest_exists
Boolean
readonly=True
args: 'Chained Move Exists'
original_location_id
Many2one → stock.location
parent_location_id
Many2one → stock.location
product_return_moves
One2many → stock.return.picking.line
create_returns(self)
default_get(self, fields)
move_id
Many2one → stock.move
product_id
Many2one → product.product
required=True
string='Product'
args: 'product.product'
quantity
Float
digits=dp.get_precision('Product Unit of Measure')
required=True
args: 'Quantity'
wizard_id
Many2one → stock.return.picking
string='Wizard'
args: 'stock.return.picking'
No public methods.
date_expected
Datetime
default=fields.Datetime.now
args: 'Expected Date'
location_id
Many2one → stock.location
default=_get_default_location_id
domain="[('usage', '=', 'internal')]"
required=True
states={'done': [('readonly', True)]}
args: 'stock.location', 'Location'
lot_id
Many2one → stock.production.lot
domain="[('product_id', '=', product_id)]"
states={'done': [('readonly', True)]}
args: 'stock.production.lot', 'Lot'
move_id
Many2one → stock.move
readonly=True
args: 'stock.move', 'Scrap Move'
name
Char
copy=False
default=<expr>
readonly=True
required=True
states={'done': [('readonly', True)]}
args: 'Reference'
origin
Char
string='Source Document'
owner_id
Many2one → res.partner
states={'done': [('readonly', True)]}
args: 'res.partner', 'Owner'
package_id
Many2one → stock.quant.package
states={'done': [('readonly', True)]}
args: 'stock.quant.package', 'Package'
picking_id
Many2one → stock.picking
states={'done': [('readonly', True)]}
args: 'stock.picking', 'Picking'
product_id
Many2one → product.product
required=True
states={'done': [('readonly', True)]}
args: 'product.product', 'Product'
product_uom_id
Many2one → product.uom
required=True
states={'done': [('readonly', True)]}
args: 'product.uom', 'Unit of Measure'
scrap_location_id
Many2one → stock.location
default=_get_default_scrap_location_id
domain="[('scrap_location', '=', True)]"
states={'done': [('readonly', True)]}
args: 'stock.location', 'Scrap Location'
scrap_qty
Float
default=1.0
required=True
states={'done': [('readonly', True)]}
args: 'Quantity'
state
Selection
default='draft'
string='Status'
args: [('draft', 'Draft'), ('done', 'Done')]
tracking
Selection
readonly=True
related='product_id.tracking'
args: 'Product Tracking'
action_done(self)
action_get_stock_move(self)
action_get_stock_picking(self)
create(self, vals)
do_scrap(self)
onchange_product_id(self)
unlink(self)
active
Boolean
default=True
args: 'Active'
code
Char
help='Short name used to identify your warehouse'
required=True
size=5
args: 'Short Name'
company_id
Many2one → res.company
default=<expr>
help='The company is automatically set from your user preferences.'
index=True
readonly=True
required=True
args: 'res.company', 'Company'
crossdock_route_id
Many2one → stock.location.route
default_resupply_wh_id
Many2one → stock.warehouse
help='Goods will always be resupplied from this warehouse'
args: 'stock.warehouse', 'Default Resupply Warehouse'
delivery_route_id
Many2one → stock.location.route
delivery_steps
Selection
default='ship_only'
help='Default outgoing route to follow'
required=True
args: [('ship_only', 'Ship directly from stock (Ship only)'), ('pick_ship', 'Bring goods to output location before shipping (Pick + Ship)'), ('pick_pack_ship', 'Make packages into a dedicated location, then bring them to the output location for shipping (Pick + Pack + Ship)')], 'Outgoing Shippings'
in_type_id
Many2one → stock.picking.type
int_type_id
Many2one → stock.picking.type
lot_stock_id
Many2one → stock.location
domain=[('usage', '=', 'internal')]
required=True
args: 'stock.location', 'Location Stock'
mto_pull_id
Many2one → procurement.rule
name
Char
default=<expr>
index=True
required=True
args: 'Warehouse Name'
out_type_id
Many2one → stock.picking.type
pack_type_id
Many2one → stock.picking.type
partner_id
Many2one → res.partner
pick_type_id
Many2one → stock.picking.type
reception_route_id
Many2one → stock.location.route
reception_steps
Selection
default='one_step'
help='Default incoming route to follow'
required=True
args: [('one_step', 'Receive goods directly in stock (1 step)'), ('two_steps', 'Unload in input location then go to stock (2 steps)'), ('three_steps', 'Unload in input location, go through a quality control before being admitted in stock (3 steps)')], 'Incoming Shipments'
resupply_route_ids
One2many → stock.location.route
help='Routes will be created for these resupply warehouses and you can select them on products and product categories'
args: 'stock.location.route', 'supplied_wh_id', 'Resupply Routes'
resupply_wh_ids
Many2many → stock.warehouse
route_ids
Many2many → stock.location.route
domain="[('warehouse_selectable', '=', True)]"
help='Defaults routes through the warehouse'
args: 'stock.location.route', 'stock_route_warehouse', 'warehouse_id', 'route_id', 'Routes'
view_location_id
Many2one → stock.location
domain=[('usage', '=', 'view')]
required=True
args: 'stock.location', 'View Location'
wh_input_stock_loc_id
Many2one → stock.location
wh_output_stock_loc_id
Many2one → stock.location
wh_pack_stock_loc_id
Many2one → stock.location
wh_qc_stock_loc_id
Many2one → stock.location
action_view_all_routes(self)
change_route(self)
create(self, vals)
create_resupply_routes(self, supplier_warehouses, default_resupply_wh)
create_routes(self)
create_sequences_and_picking_types(self)
get_routes_dict(self)
onchange_resupply_warehouses(self)
write(self, vals)
active
Boolean
default=True
help='If the active field is set to False, it will allow you to hide the orderpoint without removing it.'
args: 'Active'
company_id
Many2one → res.company
default=<expr>
required=True
args: 'res.company', 'Company'
group_id
Many2one → procurement.group
copy=False
help='Moves created through this orderpoint will be put in this procurement group. If none is given, the moves generated by procurement rules will be grouped into one big picking.'
args: 'procurement.group', 'Procurement Group'
lead_days
Integer
default=1
help='Number of days after the orderpoint is triggered to receive the products or to order to the vendor'
args: 'Lead Time'
lead_type
Selection
default='supplier'
required=True
args: [('net', 'Day(s) to get the products'), ('supplier', 'Day(s) to purchase')], 'Lead Type'
location_id
Many2one → stock.location
ondelete='cascade'
required=True
args: 'stock.location', 'Location'
name
Char
copy=False
default=<expr>
required=True
args: 'Name'
procurement_ids
One2many → procurement.order
product_id
Many2one → product.product
domain=[('type', '=', 'product')]
ondelete='cascade'
required=True
args: 'product.product', 'Product'
product_max_qty
Float
digits=dp.get_precision('Product Unit of Measure')
help='When the virtual stock goes below the Min Quantity, Odoo generates a procurement to bring the forecasted quantity to the Quantity specified as Max Quantity.'
required=True
args: 'Maximum Quantity'
product_min_qty
Float
digits=dp.get_precision('Product Unit of Measure')
help='When the virtual stock goes below the Min Quantity specified for this field, Odoo generates a procurement to bring the forecasted quantity to the Max Quantity.'
required=True
args: 'Minimum Quantity'
product_uom
Many2one → product.uom
default=<expr>
readonly=True
related='product_id.uom_id'
required=True
args: 'product.uom', 'Product Unit of Measure'
qty_multiple
Float
default=1
digits=dp.get_precision('Product Unit of Measure')
help='The procurement quantity will be rounded up to this multiple. If it is 0, the exact quantity will be used.'
required=True
args: 'Qty Multiple'
warehouse_id
Many2one → stock.warehouse
ondelete='cascade'
required=True
args: 'stock.warehouse', 'Warehouse'
default_get(self, fields)
onchange_product_id(self)
onchange_warehouse_id(self)
subtract_procurements_from_orderpoints(self)
No new fields.
Public methods (0)No public methods.
| REPOSITORY | |
|---|---|
| REPOSITORY | odoo/odoo |
| GIT | |
| GIT | https://github.com/odoo/odoo.git |
| GIT FOLDER | |
| GIT FOLDER | https://github.com/odoo/odoo/tree/9.0/stock |
| VERSION | |
| VERSION | 1.1 |
| CATEGORY | |
| CATEGORY | Warehouse |
| LICENSE | |
| LICENSE | LGPL-3 |
| APPLICATION | |
| APPLICATION | Yes |
| AUTO-INSTALLABLE | |
| AUTO-INSTALLABLE | No |
| AUTHORS | |
| AUTHORS | |
| MAINTAINERS | |
| MAINTAINERS | |
| COMMITTERS | |
| COMMITTERS | Raphael Collet, Odoo Translation Bot, Christophe Matthieu, Martin Trigaux, Fabien Pinckaers, Antony Lesuisse, Olivier Dony, Thibault Delavallée, Josse Colpaert, Denis Ledoux, Fabien Meghazi, Christophe Simonis, David Monjoie, Joren Van Onder, Goffin Simon, Cedric Snauwaert, Simon Lejeune, Frédéric van der Essen, Nicolas Martinelli, Nicolas Lempereur, Richard Mathot, qdp-odoo, Géry Debongnie, Aaron Bohy, Damien Bouvy, Arthur Maniet, Yannick Tivisse, qsm-odoo, Martin Geubelle, Pierre Masereel, pimodoo, gde-odoo, Ludovic Laffineur lla |
| WEBSITE | |
| WEBSITE | https://www.odoo.com/page/warehouse |
| LAST TRACKING UPDATE | |
| LAST TRACKING UPDATE | 2026-07-05 23:48:29 |
| ODOO DEPENDENCIES | |
| ODOO DEPENDENCIES |
odoo/odoo: - product - base - decimal_precision - base_setup - web_kanban - web - bus - report - procurement - barcodes - web_planner |
| PYTHON DEPENDENCIES | |
| PYTHON DEPENDENCIES | Not have |
| SYSTEM DEPENDENCIES | |
| SYSTEM DEPENDENCIES | Not have |
| DESCRIPTION | |
| DESCRIPTION |
Manage multi-warehouses, multi- and structured stock locations
==============================================================
The warehouse and inventory management is based on a hierarchical location structure, from warehouses to storage bins.
The double entry inventory system allows you to manage customers, vendors as well as manufacturing inventories.
OpenERP has the capacity to manage lots and serial numbers ensuring compliance with the traceability requirements imposed by the majority of industries.
Key Features
------------
* Moves history and planning,
* Minimum stock rules
* Support for barcodes
* Rapid detection of mistakes through double entry system
* Traceability (Serial Numbers, Packages, ...)
Dashboard / Reports for Inventory Management will include:
----------------------------------------------------------
* Incoming Products (Graph)
* Outgoing Products (Graph)
* Procurement in Exception
* Inventory Analysis
* Last Product Inventories
* Moves Analysis
|
| XML ID | Name | Model | Type | Status |
|---|---|---|---|---|
assets_common |
stock_location_barcodes pdf assets | ir.ui.view | qweb | Inherits report.assets_common |
external_layout_barcode_right |
external_layout_barcode_right | ir.ui.view | qweb | Inherits report.external_layout |
external_layout_header_barcode_right |
external_layout_header_barcode_right | ir.ui.view | qweb | Inherits report.external_layout_header |
inventory_planner |
inventory_planner | ir.ui.view | qweb | New |
procurement_group_form_view_herited |
procurement.group.form.herited | procurement.group | div | Inherits procurement.procurement_group_form_view |
product_category_form_view_inherit |
product.category.form | product.category | group | Inherits product.product_category_form_view |
product_form_view_procurement_button |
product.product.procurement | product.product | data | Inherits product.product_normal_form_view |
product_kanban_stock_view |
Product Kanban Stock | product.product | field | Inherits product.product_kanban_view |
product_product_view_form_easy_inherit_stock |
product.product.view.form.easy.inherit.stock | product.product | sheet | Inherits product.product_variant_easy_edit_view |
product_search_form_view_stock |
product.search.stock.form | product.product | field | Inherits product.product_search_form_view |
product_template_form_view_procurement_button |
product.template_procurement | product.template | data | Inherits product.product_template_only_form_view |
product_template_kanban_stock_view |
Product Template Kanban Stock | product.template | field | Inherits product.product_template_kanban_view |
product_template_search_form_view_stock |
product.template.search.stock.form | product.template | field | Inherits product.product_template_search_view |
quant_package_search_view |
stock.quant.package.search | stock.quant.package | search | New |
quant_search_view |
stock.quant.search | stock.quant | search | New |
report_delivery_document |
report_delivery_document | ir.ui.view | qweb | New |
report_deliveryslip |
report_deliveryslip | ir.ui.view | qweb | New |
report_inventory |
report_inventory | ir.ui.view | qweb | New |
report_location_barcode |
report_location_barcode | ir.ui.view | qweb | New |
report_lot_barcode |
report_lot_barcode | ir.ui.view | qweb | New |
report_package_barcode |
report_package_barcode | ir.ui.view | qweb | New |
report_package_barcode_small |
report_package_barcode_small | ir.ui.view | qweb | New |
report_picking |
report_picking | ir.ui.view | qweb | New |
report_stock_lines_date_form |
report.stock.lines.date.form | report.stock.lines.date | form | New |
report_stock_lines_date_search |
report.stock.lines.date.search | report.stock.lines.date | search | New |
report_stock_lines_date_tree |
report.stock.lines.date.tree | report.stock.lines.date | tree | New |
search_product_lot_filter |
Production Lots Filter | stock.production.lot | search | New |
stock_incoterms_form |
stock.incoterms.form | stock.incoterms | form | New |
stock_inventory_line_search |
stock.inventory.line.search | stock.inventory.line | search | New |
stock_inventory_line_tree |
stock.inventory.line.tree | stock.inventory.line | tree | New |
stock_inventory_line_tree2 |
stock.inventory.line.tree2 | stock.inventory.line | tree | New |
stock_location_path_filter |
stock.location.path.select | stock.location.path | search | New |
stock_location_path_form |
stock.location.path.form | stock.location.path | form | New |
stock_location_path_tree |
stock.location.path.tree | stock.location.path | tree | New |
stock_location_route_form_view |
stock.location.route.form | stock.location.route | form | New |
stock_location_route_tree |
stock.location.route.tree | stock.location.route | tree | New |
stock_move_tree |
Stock Moves | stock.move | tree | New |
stock_picking_calendar |
stock.picking.calendar | stock.picking | calendar | New |
stock_picking_kanban |
stock.picking.kanban | stock.picking | kanban | New |
stock_picking_type_kanban |
stock.picking.type.kanban | stock.picking.type | kanban | New |
view_backorder_confirmation |
stock_backorder_confirmation | stock.backorder.confirmation | form | New |
view_change_product_quantity |
Change Product Quantity | stock.change.product.qty | form | New |
view_immediate_transfer |
view_immediate_transfer | stock.immediate.transfer | form | New |
view_incoterms_tree |
stock.incoterms.tree | stock.incoterms | tree | New |
view_inventory_filter |
stock.inventory.filter | stock.inventory | search | New |
view_inventory_form |
stock.inventory.form | stock.inventory | form | New |
view_inventory_tree |
stock.inventory.tree | stock.inventory | tree | New |
view_location_form |
stock.location.form | stock.location | form | New |
view_location_search |
stock.location.search | stock.location | search | New |
view_location_tree2 |
stock.location.tree | stock.location | tree | New |
view_make_procurment_wizard |
Procurement Request | make.procurement | form | New |
view_move_form |
stock.move.form | stock.move | form | New |
view_move_graph |
stock.move.graph | stock.move | graph | New |
view_move_picking_form |
stock.move.form | stock.move | form | New |
view_move_picking_tree |
stock.move.tree | stock.move | tree | New |
view_move_pivot |
stock.move.pivot | stock.move | pivot | New |
view_move_search |
stock.move.search | stock.move | search | New |
view_move_tree |
stock.move.tree | stock.move | tree | New |
view_move_tree_receipt_picking |
stock.move.tree2 | stock.move | tree | New |
view_move_tree_receipt_picking_board |
stock.move.tree3 | stock.move | tree | New |
view_pack_operation_details_form |
stock.pack.operation.details.form | stock.pack.operation | form | New |
view_pack_operation_details_form_save |
stock.pack.operation.details.form.save | stock.pack.operation | group | Inherits stock.view_pack_operation_details_form |
view_pack_operation_lot_form |
stock.pack.operation.lots.form | stock.pack.operation | form | New |
view_pack_operation_lot_lot_form |
stock.pack.operation.lots.form | stock.pack.operation.lot | form | New |
view_partner_stock_form |
res.partner.stock.property.form.inherit | res.partner | xpath | Inherits mail.view_emails_partner_info_form |
view_picking_form |
stock.picking.form | stock.picking | form | New |
view_picking_internal_search |
stock.picking.internal.search | stock.picking | search | New |
view_picking_type_form |
Picking Types | stock.picking.type | form | New |
view_picking_type_list |
stock.picking.type.list | stock.picking.type | tree | New |
view_picking_type_tree |
Picking types | stock.picking.type | tree | New |
view_pickingtype_filter |
stock.picking.type.filter | stock.picking.type | search | New |
view_procurement_compute_wizard |
Run Reordering Rules | procurement.orderpoint.compute | form | New |
view_procurement_form_stock_inherit |
procurement.order.form.stock.inherit | procurement.order | xpath | Inherits procurement.procurement_form_view |
view_procurement_rule_form_stock_inherit |
procurement.rule.form.stock.inherit | procurement.rule | xpath | Inherits procurement.view_procurement_rule_form |
view_procurement_rule_tree_stock_inherit |
procurement.rule.tree.stock.inherit | procurement.rule | xpath | Inherits procurement.view_procurement_rule_tree |
view_procurement_tree_stock_inherit |
procurement.order.tree.stock.inherit | procurement.order | xpath | Inherits procurement.procurement_tree_view |
view_production_lot_form |
stock.production.lot.form | stock.production.lot | form | New |
view_production_lot_tree |
stock.production.lot.tree | stock.production.lot | tree | New |
view_putaway |
product.putaway.form | product.putaway | form | New |
view_quant_package_form |
stock.quant.package.form | stock.quant.package | form | New |
view_quant_package_tree |
stock.quant.package.tree | stock.quant.package | tree | New |
view_removal |
product.removal.form | product.removal | form | New |
view_stock_config_settings |
stock settings | stock.config.settings | form | New |
view_stock_level_forecast_filter |
view.stock.level.forecast.filter | report.stock.forecast | search | New |
view_stock_level_forecast_graph |
Stock.forecast.graph | report.stock.forecast | graph | New |
view_stock_level_forecast_pivot |
Stock.forecast.pivot | report.stock.forecast | pivot | New |
view_stock_move_scrap_wizard |
Scrap Move | stock.move.scrap | form | New |
view_stock_product_template_tree |
product.template.stock.tree.inherit | product.template | tree | Inherits product.product_template_tree_view |
view_stock_product_tree |
product.stock.tree.inherit | product.product | tree | Inherits product.product_product_tree_view |
view_stock_quant_form |
stock.quant.form | stock.quant | form | New |
view_stock_quant_graph_value |
stock.quant.graph | stock.quant | graph | New |
view_stock_quant_pivot |
stock.quant.pivot | stock.quant | pivot | New |
view_stock_quant_tree |
stock.quant.tree | stock.quant | tree | New |
view_stock_return_picking_form |
Return lines | stock.return.picking | form | New |
view_template_property_form |
product.template.stock.property.form.inherit | product.template | div | Inherits product.product_template_form_view |
view_warehouse |
stock.warehouse | stock.warehouse | form | New |
view_warehouse_orderpoint_form |
stock.warehouse.orderpoint.form | stock.warehouse.orderpoint | form | New |
view_warehouse_orderpoint_tree |
stock.warehouse.orderpoint.tree | stock.warehouse.orderpoint | tree | New |
view_warehouse_tree |
stock.warehouse.tree | stock.warehouse | tree | New |
vpicktree |
stock.picking.tree | stock.picking | tree | New |
warehouse_orderpoint_search |
stock.warehouse.orderpoint.search | stock.warehouse.orderpoint | search | New |
No new fields.
Public methods (0)No public methods.
cumulative_quantity
Float
readonly=True
string='Cumulative Quantity'
date
Date
string='Date'
product_id
Many2one → product.product
readonly=True
string='Product'
args: 'product.product'
product_tmpl_id
Many2one → product.template
readonly=True
related='product_id.product_tmpl_id'
string='Product'
args: 'product.template'
quantity
Float
readonly=True
init(self, cr)
pick_id
Many2one → stock.picking
default_get(self, fields)
process(self)
process_cancel_backorder(self)
pick_id
Many2one → stock.picking
default_get(self, fields)
process(self)
No new fields.
Public methods (0)No public methods.
No new fields.
Public methods (28)action_assign(self, cr, uid, ids, context=None)
action_assign_owner(self, cr, uid, ids, context=None)
action_cancel(self, cr, uid, ids, context=None)
action_confirm(self, cr, uid, ids, context=None)
action_done(self, cr, uid, ids, context=None)
check_backorder(self, cr, uid, picking, context=None)
create(self, cr, user, vals, context=None)
create_lots_for_picking(self, cr, uid, ids, context=None)
default_get(self, fields)
do_new_transfer(self, cr, uid, ids, context=None)
do_prepare_partial(self, cr, uid, picking_ids, context=None)
do_print_picking(self, cr, uid, ids, context=None)
do_recompute_remaining_quantities(self, cr, uid, picking_ids, done_qtys=False, context=None)
do_split(self, cr, uid, picking_ids, context=None)
do_transfer(self, cr, uid, ids, context=None)
do_unreserve(self, cr, uid, picking_ids, context=None)
force_assign(self, cr, uid, ids, context=None)
get_min_max_date(self, cr, uid, ids, field_name, arg, context=None)
launch_packops(self, cr, uid, ids, context=None)
onchange_picking_type(self, cr, uid, ids, picking_type_id, partner_id, context=None)
picking_recompute_remaining_quantities(self, cr, uid, picking, done_qtys=False, context=None)
put_in_pack(self, cr, uid, ids, context=None)
recheck_availability(self, cr, uid, picking_ids, context=None)
recompute_remaining_qty(self, cr, uid, picking, done_qtys=False, context=None)
rereserve_pick(self, cr, uid, ids, context=None)
rereserve_quants(self, cr, uid, picking, move_ids=[], context=None)
unlink(self, cr, uid, ids, context=None)
write(self, cr, uid, ids, vals, context=None)
No new fields.
Public methods (0)No public methods.
| REPOSITORY | |
|---|---|
| REPOSITORY | odoo/odoo |
| GIT | |
| GIT | https://github.com/odoo/odoo.git |
| GIT FOLDER | |
| GIT FOLDER | https://github.com/odoo/odoo/tree/8.0/stock |
| VERSION | |
| VERSION | 1.1 |
| CATEGORY | |
| CATEGORY | Warehouse Management |
| LICENSE | |
| LICENSE | LGPL-3 |
| APPLICATION | |
| APPLICATION | Yes |
| AUTO-INSTALLABLE | |
| AUTO-INSTALLABLE | No |
| AUTHORS | |
| AUTHORS | OpenERP SA |
| MAINTAINERS | |
| MAINTAINERS | OpenERP SA |
| COMMITTERS | |
| COMMITTERS | Raphael Collet, Rucha (Open ERP), Randhir Mayatra (OpenERP), Odoo Translation Bot, Turkesh Patel (Open ERP), Christophe Matthieu, Martin Trigaux, Foram Katharotiya (OpenERP), Purnendu Singh (OpenERP), Fabien Pinckaers, Antony Lesuisse, Olivier Dony, Thibault Delavallée, Vo Minh Thu, Josse Colpaert, Launchpad Translations on behalf of openerp, Quentin (OpenERP), Denis Ledoux, Fabien Meghazi, niv-openerp, ggh-openerp, Christophe Simonis, David Monjoie, Xavier Morel, Goffin Simon, Anael Closson, Cedric Snauwaert, Simon Lejeune, Frédéric van der Essen, Vishmita, Nicolas Martinelli, Chirag Dodiya (OpenERP Trainee), Amit Bhavsar (Open ERP), Lionel Sausin, Paramjit Singh Sahota, Hiral Patel (OpenERP), Richard Mathot, qdp-odoo, Géry Debongnie, jke-openerp, Aaron Bohy, bth-openerp, Bharat R. Devnani (OpenERP), Richard Mathot (OpenERP), ged-odoo, Jeremy Kersten, Gery Debongnie, Randhir Mayatra rma-openerp, sgo@tinyerp.com, Lucas Perais (lpe), Darshan Kalola (OpenERP), Darshan Kalola, Jitendra Prajapati (OpenERP), Sunil Sharma (OpenERP Trainee), Damien Bouvy, Yogesh Parekh (OpenERP), Sunil Sharma (OpenERP), Rakesh Sindhav (OpenERP), Jaydeep Barot, Pooja Zankhariya (OpenERP), Mantavya Gajjar, Sanjay Gohel (OpenERP) |
| WEBSITE | |
| WEBSITE | https://www.odoo.com/page/warehouse |
| LAST TRACKING UPDATE | |
| LAST TRACKING UPDATE | 2026-07-05 23:45:38 |
| ODOO DEPENDENCIES | |
| ODOO DEPENDENCIES |
odoo/odoo: - product - base - decimal_precision - base_setup - web_kanban - web - report - procurement - board - web_kanban_gauge - web_kanban_sparkline |
| PYTHON DEPENDENCIES | |
| PYTHON DEPENDENCIES | Not have |
| SYSTEM DEPENDENCIES | |
| SYSTEM DEPENDENCIES | Not have |
| DESCRIPTION | |
| DESCRIPTION |
Manage multi-warehouses, multi- and structured stock locations
==============================================================
The warehouse and inventory management is based on a hierarchical location structure, from warehouses to storage bins.
The double entry inventory system allows you to manage customers, suppliers as well as manufacturing inventories.
OpenERP has the capacity to manage lots and serial numbers ensuring compliance with the traceability requirements imposed by the majority of industries.
Key Features
------------
* Moves history and planning,
* Minimum stock rules
* Support for barcodes
* Rapid detection of mistakes through double entry system
* Traceability (Serial Numbers, Packages, ...)
Dashboard / Reports for Warehouse Management will include:
----------------------------------------------------------
* Incoming Products (Graph)
* Outgoing Products (Graph)
* Procurement in Exception
* Inventory Analysis
* Last Product Inventories
* Moves Analysis
|
| XML ID | Name | Model | Type | Status |
|---|---|---|---|---|
assets_backend |
stock assets | ir.ui.view | qweb | Inherits web.assets_backend |
barcode_index |
Barcode Scanner | ir.ui.view | qweb | New |
procurement_group_form_view_herited |
procurement.group.form.herited | procurement.group | xpath | Inherits procurement.procurement_group_form_view |
product_category_form_view_inherit |
product.category.form | product.category | xpath | Inherits product.product_category_form_view |
product_form_view_procurement_button |
product.product.procurement | product.product | xpath | Inherits product.product_normal_form_view |
product_kanban_stock_view |
Product Kanban Stock | product.product | field | Inherits product.product_kanban_view |
product_search_form_view_stock |
product.search.stock.form | product.product | field | Inherits product.product_search_form_view |
product_template_form_view_procurement_button |
product.template_procurement | product.template | xpath | Inherits product.product_template_only_form_view |
product_template_kanban_stock_view |
Product Template Kanban Stock | product.template | field | Inherits product.product_template_kanban_view |
product_template_search_form_view_stock |
product.template.search.stock.form | product.template | field | Inherits product.product_template_search_view |
quant_package_search_view |
stock.quant.package.search | stock.quant.package | search | New |
quant_search_view |
stock.quant.search | stock.quant | search | New |
report_inventory |
report_inventory | ir.ui.view | qweb | New |
report_location_barcode |
report_location_barcode | ir.ui.view | qweb | New |
report_lot_barcode |
report_lot_barcode | ir.ui.view | qweb | New |
report_package_barcode |
report_package_barcode | ir.ui.view | qweb | New |
report_package_barcode_small |
report_package_barcode_small | ir.ui.view | qweb | New |
report_picking |
report_picking | ir.ui.view | qweb | New |
report_stock_lines_date_form |
report.stock.lines.date.form | report.stock.lines.date | form | New |
report_stock_lines_date_search |
report.stock.lines.date.search | report.stock.lines.date | search | New |
report_stock_lines_date_tree |
report.stock.lines.date.tree | report.stock.lines.date | tree | New |
search_product_lot_filter |
Production Lots Filter | stock.production.lot | search | New |
stock_incoterms_form |
stock.incoterms.form | stock.incoterms | form | New |
stock_inventory_line_tree |
stock.inventory.line.tree | stock.inventory.line | tree | New |
stock_location_path_form |
stock.location.path.form | stock.location.path | form | New |
stock_location_path_tree |
stock.location.path.tree | stock.location.path | tree | New |
stock_location_route_form_view |
stock.location.route.form | stock.location.route | form | New |
stock_location_route_tree |
stock.location.route.tree | stock.location.route | tree | New |
stock_move_tree |
Stock Moves | stock.move | tree | New |
stock_picking_calendar |
stock.picking.calendar | stock.picking | calendar | New |
stock_picking_type_kanban |
stock.picking.type.kanban | stock.picking.type | kanban | New |
stock_return_line_form_in |
stock.return.picking.line.from | stock.return.picking.line | form | New |
stock_return_line_tree_in |
stock.return.picking.line.tree | stock.return.picking.line | tree | New |
view_change_product_quantity |
Change Product Quantity | stock.change.product.qty | form | New |
view_incoterms_tree |
stock.incoterms.tree | stock.incoterms | tree | New |
view_inventory_filter |
stock.inventory.filter | stock.inventory | search | New |
view_inventory_form |
stock.inventory.form | stock.inventory | form | New |
view_inventory_tree |
stock.inventory.tree | stock.inventory | tree | New |
view_location_form |
stock.location.form | stock.location | form | New |
view_location_search |
stock.location.search | stock.location | search | New |
view_location_tree2 |
stock.location.tree | stock.location | tree | New |
view_make_procurment_wizard |
Procurement Request | make.procurement | form | New |
view_move_form |
stock.move.form | stock.move | form | New |
view_move_graph |
stock.move.graph | stock.move | graph | New |
view_move_picking_form |
stock.move.form | stock.move | form | New |
view_move_picking_tree |
stock.move.tree | stock.move | tree | New |
view_move_search |
stock.move.search | stock.move | search | New |
view_move_tree |
stock.move.tree | stock.move | tree | New |
view_move_tree_receipt_picking |
stock.move.tree2 | stock.move | tree | New |
view_move_tree_receipt_picking_board |
stock.move.tree3 | stock.move | tree | New |
view_partner_property_form |
res.partner.stock.property.form.inherit | res.partner | group | Inherits product.view_partner_property_form |
view_picking_form |
stock.picking.form | stock.picking | form | New |
view_picking_internal_search |
stock.picking.internal.search | stock.picking | search | New |
view_picking_type_form |
Picking Types | stock.picking.type | form | New |
view_picking_type_tree |
Picking types | stock.picking.type | tree | New |
view_pickingtype_filter |
stock.picking.type.filter | stock.picking.type | search | New |
view_procurement_compute_wizard |
Compute Stock Minimum Rules Only | procurement.orderpoint.compute | form | New |
view_procurement_form_stock_inherit |
procurement.order.form.stock.inherit | procurement.order | xpath | Inherits procurement.procurement_form_view |
view_procurement_rule_form_stock_inherit |
procurement.rule.form.stock.inherit | procurement.rule | xpath | Inherits procurement.view_procurement_rule_form |
view_procurement_rule_tree_stock_inherit |
procurement.rule.tree.stock.inherit | procurement.rule | xpath | Inherits procurement.view_procurement_rule_tree |
view_procurement_tree_stock_inherit |
procurement.order.tree.stock.inherit | procurement.order | xpath | Inherits procurement.procurement_tree_view |
view_production_lot_form |
stock.production.lot.form | stock.production.lot | form | New |
view_production_lot_tree |
stock.production.lot.tree | stock.production.lot | tree | New |
view_putaway |
product.putaway.form | product.putaway | form | New |
view_quant_package_form |
stock.quant.package.form | stock.quant.package | form | New |
view_quant_package_tree |
stock.quant.package.tree | stock.quant.package | tree | New |
view_removal |
product.removal.form | product.removal | form | New |
view_stock_config_settings |
stock settings | stock.config.settings | form | New |
view_stock_enter_transfer_details |
Enter transfer details | stock.transfer_details | form | New |
view_stock_move_scrap_wizard |
Scrap Move | stock.move.scrap | form | New |
view_stock_product_template_tree |
product.template.stock.tree.inherit | product.template | tree | Inherits product.product_template_tree_view |
view_stock_product_tree |
product.stock.tree.inherit | product.product | tree | Inherits product.product_product_tree_view |
view_stock_quant_form |
stock.quant.form | stock.quant | form | New |
view_stock_quant_graph_value |
stock.quant.graph | stock.quant | graph | New |
view_stock_quant_tree |
stock.quant.tree | stock.quant | tree | New |
view_stock_return_picking_form |
Return lines | stock.return.picking | form | New |
view_template_property_form |
product.template.stock.property.form.inherit | product.template | group | Inherits product.product_template_form_view |
view_warehouse |
stock.warehouse | stock.warehouse | form | New |
view_warehouse_orderpoint_form |
stock.warehouse.orderpoint.form | stock.warehouse.orderpoint | form | New |
view_warehouse_orderpoint_tree |
stock.warehouse.orderpoint.tree | stock.warehouse.orderpoint | tree | New |
view_warehouse_tree |
stock.warehouse.tree | stock.warehouse | tree | New |
vpicktree |
stock.picking.tree | stock.picking | tree | New |
warehouse_orderpoint_search |
stock.warehouse.orderpoint.search | stock.warehouse.orderpoint | search | New |
item_ids
One2many → stock.transfer_details_items
domain=[('product_id', '!=', False)]
args: 'stock.transfer_details_items', 'transfer_id', 'Items'
packop_ids
One2many → stock.transfer_details_items
domain=[('product_id', '=', False)]
args: 'stock.transfer_details_items', 'transfer_id', 'Packs'
picking_destination_location_id
Many2one → stock.location
readonly=True
related='picking_id.location_dest_id'
store=False
string='Head destination location'
args: 'stock.location'
picking_id
Many2one → stock.picking
picking_source_location_id
Many2one → stock.location
readonly=True
related='picking_id.location_id'
store=False
string='Head source location'
args: 'stock.location'
default_get(self, cr, uid, fields, context=None)
do_detailed_transfer(self)
wizard_view(self)
date
Datetime
destinationloc_id
Many2one → stock.location
required=True
args: 'stock.location', 'Destination Location'
lot_id
Many2one → stock.production.lot
owner_id
Many2one → res.partner
help='Owner of the quants'
args: 'res.partner', 'Owner'
package_id
Many2one → stock.quant.package
domain="['|', ('location_id', 'child_of', sourceloc_id), ('location_id','=',False)]"
args: 'stock.quant.package', 'Source package'
packop_id
Many2one → stock.pack.operation
product_id
Many2one → product.product
product_uom_id
Many2one → product.uom
quantity
Float
default=1.0
digits=dp.get_precision('Product Unit of Measure')
args: 'Quantity'
result_package_id
Many2one → stock.quant.package
domain="['|', ('location_id', 'child_of', destinationloc_id), ('location_id','=',False)]"
args: 'stock.quant.package', 'Destination package'
sourceloc_id
Many2one → stock.location
required=True
args: 'stock.location', 'Source Location'
transfer_id
Many2one → stock.transfer_details
product_id_change(self, product, uom=False)
put_in_pack(self)
source_package_change(self, sourcepackage)
split_quantities(self)
| REPOSITORY | |
|---|---|
| REPOSITORY | odoo/odoo |
| GIT | |
| GIT | https://github.com/odoo/odoo.git |
| GIT FOLDER | |
| GIT FOLDER | https://github.com/odoo/odoo/tree/7.0/stock |
| VERSION | |
| VERSION | 1.1 |
| CATEGORY | |
| CATEGORY | Warehouse Management |
| LICENSE | |
| LICENSE | LGPL-3 |
| APPLICATION | |
| APPLICATION | Yes |
| AUTO-INSTALLABLE | |
| AUTO-INSTALLABLE | No |
| AUTHORS | |
| AUTHORS | OpenERP SA |
| MAINTAINERS | |
| MAINTAINERS | OpenERP SA |
| COMMITTERS | |
| COMMITTERS | Raphael Collet, Jagdish Panchal (Open ERP), Twinkle Christian (OpenERP), Cecile Tonglet, Rucha (Open ERP), Atul Patel (OpenERP), Jalpesh Patel (OpenERP), Randhir Mayatra (OpenERP), Stephane Wirtel, Odoo Translation Bot, Turkesh Patel (Open ERP), Numerigraphe - Lionel Sausin, Christophe Matthieu, Pinakin Nayi (OpenERP), Benoit Guillot, DBR (OpenERP), Harry (OpenERP), Antonin Bourguignon, pankita shah (Open ERP), ajay javiya (OpenERP), Martin Trigaux, Ajay Chauhan (OpenERP), Foram Katharotiya (OpenERP), Bhumika (OpenERP), Purnendu Singh (OpenERP), Saurang Suthar (OpenERP), Fabien Pinckaers, Antony Lesuisse, Bharat Devnani (OpenERP), Meera Trambadia (OpenERP), Saurang Suthar, Olivier Dony, Rajesh Prajapati (OpenERP), Twinkle (OpenERP), Divyesh Makwana (Open ERP), Tejas Tank, Thibault Delavallée, Vo Minh Thu, Hardik, Josse Colpaert, Arnaud Pineux, pso (OpenERP), Sbh (Openerp), Amit Patel (OpenERP), Launchpad Translations on behalf of openerp, vta vta@openerp.com, Quentin (OpenERP), Kuldeep Joshi (OpenERP), Nimesh (Open ERP), Denis Ledoux, Mayur Maheshwari (OpenERP), Jigar Amin - OpenERP, Sanjay Gohel (Open ERP), Alexis de Lattre, help, Fabien Meghazi, niv-openerp, Xavier ALT, Christophe Simonis, David Monjoie, Denis Ledoux dle@openerp.com, Dharti Ratani (OpenERP), Anael Closson, Khushboo Bhatt (Open ERP), Mohammed Shekha, dle@openerp.com, Bhumi Thakkar (Open ERP), Cedric Snauwaert, Ravish Murari (OpenERP), Amit Patel, Frédéric van der Essen, Gilles Major, Chris Biersbach, Vijaykumar Baladaniya, Hardik Ansodariya, Dhruti Shastri (OpenERP), Nicolas Martinelli, Jigar Amin, Sebastien LANGE, Yannick Vaucher, Somesh Khare (OpenERP), Amit (OpenERP), Minh Tran, Anaël Closson, Ankita Patel (OpenERP), Amit Rasmiya, Romain Deheele, RGA(OpenERP), Kersten Jeremy, Guewen Baconnier, Amit Dodiya, Lorenzo Battistini, Chandni Gandhi, Dharti Ratani (Open ERP), Alexandre Fayolle, Dhruti Shastri, Mohammad Alhashash, Amit Bhavsar (Open ERP), Lionel Sausin, alexandre.fayolle@camptocamp.com, Paramjit Singh Sahota, Rifakat, Nicolas Lempereur |
| WEBSITE | |
| WEBSITE | http://www.openerp.com |
| LAST TRACKING UPDATE | |
| LAST TRACKING UPDATE | 2026-07-05 23:43:09 |
| ODOO DEPENDENCIES | |
| ODOO DEPENDENCIES |
odoo/odoo: - product - base - process - web - decimal_precision - base_setup - web_kanban - account - analytic - board - edi - email_template |
| PYTHON DEPENDENCIES | |
| PYTHON DEPENDENCIES | Not have |
| SYSTEM DEPENDENCIES | |
| SYSTEM DEPENDENCIES | Not have |
| DESCRIPTION | |
| DESCRIPTION |
Manage multi-warehouses, multi- and structured stock locations
==============================================================
The warehouse and inventory management is based on a hierarchical location structure, from warehouses to storage bins.
The double entry inventory system allows you to manage customers, suppliers as well as manufacturing inventories.
OpenERP has the capacity to manage lots and serial numbers ensuring compliance with the traceability requirements imposed by the majority of industries.
Key Features
------------
* Moves history and planning,
* Stock valuation (standard or average price, ...)
* Robustness faced with Inventory differences
* Automatic reordering rules
* Support for barcodes
* Rapid detection of mistakes through double entry system
* Traceability (Upstream / Downstream, Serial numbers, ...)
Dashboard / Reports for Warehouse Management will include:
----------------------------------------------------------
* Incoming Products (Graph)
* Outgoing Products (Graph)
* Procurement in Exception
* Inventory Analysis
* Last Product Inventories
* Moves Analysis
|
| XML ID | Name | Model | Type | Status |
|---|---|---|---|---|
board_warehouse_form |
board.warehouse.form | board.board | form | New |
lot_line_tree |
stock.tracking.tree | stock.tracking | tree | New |
name_form |
stock.inventory.merge.form | stock.inventory.merge | form | New |
product_kanban_stock_view |
Product Kanban Stock | product.product | field | Inherits product.product_kanban_view |
product_search_form_view_stock |
product.search.stock.form | product.product | field | Inherits product.product_search_form_view |
report_stock_lines_date_form |
report.stock.lines.date.form | report.stock.lines.date | form | New |
report_stock_lines_date_search |
report.stock.lines.date.search | report.stock.lines.date | search | New |
report_stock_lines_date_tree |
report.stock.lines.date.tree | report.stock.lines.date | tree | New |
search_product_lot_filter |
Production Lots Filter | stock.production.lot | search | New |
search_stock_packs |
Pack Search | stock.tracking | search | New |
stock_incoterms_form |
stock.incoterms.form | stock.incoterms | form | New |
stock_inventory_line_tree |
stock.inventory.line.tree | stock.inventory.line | tree | New |
stock_move_tree |
Stock Moves | stock.move | tree | New |
stock_move_tree2 |
Stock Moves | stock.move | tree | New |
stock_partial_move_form |
stock.partial.move.form | stock.partial.move | form | New |
stock_partial_move_line_form |
stock.partial.move.line.form | stock.partial.move.line | form | New |
stock_partial_move_line_list |
stock.partial.move.line.list | stock.partial.move.line | tree | New |
stock_partial_picking_form |
stock.partial.picking.form | stock.partial.picking | form | New |
stock_partial_picking_line_form |
stock.partial.picking.line.form | stock.partial.picking.line | form | New |
stock_partial_picking_line_list |
stock.partial.picking.line.list | stock.partial.picking.line | tree | New |
stock_picking_calendar |
stock.picking.calendar | stock.picking | calendar | New |
stock_picking_in_calendar |
stock.picking.in.calendar | stock.picking.in | calendar | New |
stock_picking_out_calendar |
stock.picking.out.calendar | stock.picking.out | calendar | New |
stock_return_memory_form_in |
stock.return.picking.memory.from | stock.return.picking.memory | form | New |
stock_return_memory_tree_in |
stock.return.picking.memory.tree | stock.return.picking.memory | tree | New |
view_category_property_form |
product.category.stock.property.form.inherit | product.category | data | Inherits account.view_category_property_form |
view_change_product_quantity |
Change Product Quantity | stock.change.product.qty | form | New |
view_change_standard_price |
Change Standard Price | stock.change.standard.price | form | New |
view_incoterms_tree |
stock.incoterms.tree | stock.incoterms | tree | New |
view_inventory_filter |
stock.inventory.filter | stock.inventory | search | New |
view_inventory_form |
stock.inventory.form | stock.inventory | form | New |
view_inventory_line_form |
stock.inventory.line.form | stock.inventory.line | form | New |
view_inventory_tree |
stock.inventory.tree | stock.inventory | tree | New |
view_location_form |
stock.location.form | stock.location | form | New |
view_location_graph |
stock.location.graph | stock.location | graph | New |
view_location_search |
stock.location.search | stock.location | search | New |
view_location_tree |
stock.location.tree | stock.location | tree | New |
view_location_tree2 |
stock.location.tree | stock.location | tree | New |
view_move_form |
stock.move.form | stock.move | form | New |
view_move_picking_form |
stock.move.form | stock.move | form | New |
view_move_picking_tree |
stock.move.tree | stock.move | tree | New |
view_move_search |
stock.move.search | stock.move | search | New |
view_move_tree |
stock.move.tree | stock.move | tree | New |
view_move_tree_reception_picking |
stock.move.tree2 | stock.move | tree | New |
view_move_tree_reception_picking_board |
stock.move.tree3 | stock.move | tree | New |
view_normal_procurement_locations_form |
product.normal.procurement.locations.inherit | product.product | group | Inherits product.product_normal_form_view |
view_normal_property_acc_form |
product.normal.stock.acc.property.form.inherit | product.product | xpath | Inherits product.product_normal_form_view |
view_partner_property_form |
res.partner.stock.property.form.inherit | res.partner | group | Inherits product.view_partner_property_form |
view_picking_form |
stock.picking.form | stock.picking | form | New |
view_picking_in_form |
stock.picking.in.form | stock.picking.in | field | Inherits view_picking_form |
view_picking_in_search |
stock.picking.in.search | stock.picking.in | search | New |
view_picking_in_tree |
stock.picking.in.tree | stock.picking.in | tree | New |
view_picking_internal_search |
stock.picking.internal.search | stock.picking | search | New |
view_picking_out_form |
stock.picking.out.form | stock.picking.out | field | Inherits view_picking_form |
view_picking_out_search |
stock.picking.out.search | stock.picking | search | New |
view_picking_out_tree |
stock.picking.out.tree | stock.picking.out | tree | New |
view_product_standard_price_form |
product.product.standard.price.form.inherit | product.product | field | Inherits product.product_normal_form_view |
view_production_lot_form |
stock.production.lot.form | stock.production.lot | form | New |
view_production_lot_revision_form |
stock.production.lot.revision.form | stock.production.lot.revision | form | New |
view_production_lot_revision_tree |
stock.production.lot.revision.tree | stock.production.lot.revision | tree | New |
view_production_lot_tree |
stock.production.lot.tree | stock.production.lot | tree | New |
view_split_in_lots |
Split in Serial Numbers | stock.move.split | form | New |
view_split_in_lots_inherit |
Split Inventory Line | stock.inventory.line.split | form | New |
view_stock_config_settings |
stock settings | stock.config.settings | form | New |
view_stock_fill_inventory |
Import Inventory | stock.fill.inventory | form | New |
view_stock_graph |
report.stock.move.graph | report.stock.move | graph | New |
view_stock_graph_board |
report.stock.move.graph | report.stock.move | graph | New |
view_stock_inventory_graph |
report.stock.inventory.graph | report.stock.inventory | graph | New |
view_stock_inventory_search |
report.stock.inventory.search | report.stock.inventory | search | New |
view_stock_inventory_tree |
report.stock.inventory.tree | report.stock.inventory | tree | New |
view_stock_invoice_onshipping |
Stock Invoice Onshipping | stock.invoice.onshipping | form | New |
view_stock_journal_filter |
stock.journal.filter | stock.journal | search | New |
view_stock_journal_form |
Stock Journals | stock.journal | form | New |
view_stock_journal_tree |
Stock Journals | stock.journal | tree | New |
view_stock_location_product |
Products by Location | stock.location.product | form | New |
view_stock_move_consume_wizard |
Consume Move | stock.move.consume | form | New |
view_stock_move_scrap_wizard |
Scrap Move | stock.move.scrap | form | New |
view_stock_move_split_wizard |
Split move | stock.split.into | form | New |
view_stock_return_picking_form |
Return lines | stock.return.picking | form | New |
view_stock_search |
report.stock.move.search | report.stock.move | search | New |
view_stock_tree |
report.stock.move.tree | report.stock.move | tree | New |
view_template_property_form |
product.template.stock.property.form.inherit | product.template | group | Inherits product.product_template_form_view |
view_tracking_form |
stock.tracking.form | stock.tracking | form | New |
view_tracking_tree |
stock.tracking.tree | stock.tracking | tree | New |
view_warehouse |
stock.warehouse | stock.warehouse | form | New |
view_warehouse_tree |
stock.warehouse.tree | stock.warehouse | tree | New |
vpicktree |
stock.picking.tree | stock.picking | tree | New |
No models found for this module.
| REPOSITORY | |
|---|---|
| REPOSITORY | odoo/odoo |
| GIT | |
| GIT | https://github.com/odoo/odoo.git |
| GIT FOLDER | |
| GIT FOLDER | https://github.com/odoo/odoo/tree/6.1/stock |
| VERSION | |
| VERSION | 1.1 |
| CATEGORY | |
| CATEGORY | Warehouse Management |
| LICENSE | |
| LICENSE | LGPL-3 |
| APPLICATION | |
| APPLICATION | Yes |
| AUTO-INSTALLABLE | |
| AUTO-INSTALLABLE | No |
| AUTHORS | |
| AUTHORS | OpenERP SA |
| MAINTAINERS | |
| MAINTAINERS | OpenERP SA |
| COMMITTERS | |
| COMMITTERS | Raphael Collet, Jagdish Panchal (Open ERP), Rucha (Open ERP), Stephane Wirtel, Turkesh Patel (Open ERP), Numerigraphe - Lionel Sausin, Pinakin Nayi (OpenERP), DBR (OpenERP), Harry (OpenERP), Martin Trigaux, Fabien Pinckaers, Antony Lesuisse, Olivier Dony, Divyesh Makwana (Open ERP), Thibault Delavallée, Vo Minh Thu, pso (OpenERP), Launchpad Translations on behalf of openerp, Quentin (OpenERP), Kuldeep Joshi (OpenERP), Mayur Maheshwari (OpenERP), Alexis de Lattre, vro, olt@tinyerp.com, Fabien Meghazi, niv-openerp, Xavier ALT, Christophe Simonis, Ujjvala Collins (OpenERP), Xavier Morel, Chris Biersbach, Serpent Consulting Services, Amit (OpenERP), Minh Tran, Rifakat, Najlaâ, Thibault Francois, Raphaël Valyi, sebastien beau, Niels Huylebroeck, Quentin THEURET, Carlos Vásquez, Bogdan Stanciu, ksa (Open ERP), Cristian Salamea, Els Van Vossel, Israel Fermin Montilla, Rifakat Haradwala (Open ERP), mayur maheshwari (Open ERP), Hardik Ansodariy (OpenERP), ssu, rch-openerp, aag (OpenERP), Yogesh (OpenERP), Sbh (OpenERP), ron@tinyerp.com, fp, qdp-launchpad@tinyerp.com, AMP (OpenERP), psi (Open ERP), Tejas (OpenERP), Amit Parmar (OpenERP), RavishchanraMurari (Open ERP), Kirti Savalia (OpenERP), Hemendra Paregi (Open ERP), Dhara (OpenERP), Atik Agewan (OpenERP), renatonlima@gmail.com, Viktor Nagy, Ravi Gohil (Open ERP), avp, philubert@gmail.com, rpa (Open ERP), Ariel Figueroa, msh-openerp, Somesh Khare, rha@tinyerp.com, nel@tinyerp.com |
| WEBSITE | |
| WEBSITE | http://www.openerp.com |
| LAST TRACKING UPDATE | |
| LAST TRACKING UPDATE | 2026-07-05 23:41:35 |
| ODOO DEPENDENCIES | |
| ODOO DEPENDENCIES |
odoo/odoo: - product - base - process - decimal_precision - account - base_setup - analytic - board - edi - email_template - base_tools |
| PYTHON DEPENDENCIES | |
| PYTHON DEPENDENCIES | Not have |
| SYSTEM DEPENDENCIES | |
| SYSTEM DEPENDENCIES | Not have |
| DESCRIPTION | |
| DESCRIPTION |
OpenERP Inventory Management module can manage multi-warehouses, multi and structured stock locations.
======================================================================================================
Thanks to the double entry management, the inventory controlling is powerful and flexible:
* Moves history and planning,
* Different inventory methods (FIFO, LIFO, ...)
* Stock valuation (standard or average price, ...)
* Robustness faced with Inventory differences
* Automatic reordering rules (stock level, JIT, ...)
* Bar code supported
* Rapid detection of mistakes through double entry system
* Traceability (upstream/downstream, production lots, serial number, ...)
* Dashboard for warehouse that includes:
* Procurement in exception
* List of Incoming Products
* List of Outgoing Products
* Graph : Products to receive in delay (date < = today)
* Graph : Products to send in delay (date < = today)
|
| XML ID | Name | Model | Type | Status |
|---|---|---|---|---|
board_warehouse_form |
board.warehouse.form | board.board | form | New |
lot_line_tree |
stock.tracking.tree | stock.tracking | tree | New |
name_form |
stock.inventory.merge.form | stock.inventory.merge | form | New |
product.product_kanban_view |
Product Kanban | product.product | kanban | New |
product_search_form_view_stock |
product.search.stock.form | product.product | field | Inherits product.product_search_form_view |
report_stock_lines_date_form |
report.stock.lines.date.form | report.stock.lines.date | form | New |
report_stock_lines_date_search |
report.stock.lines.date.search | report.stock.lines.date | search | New |
report_stock_lines_date_tree |
report.stock.lines.date.tree | report.stock.lines.date | tree | New |
search_product_lot_filter |
Production Lots Filter | stock.production.lot | search | New |
search_stock_packs |
Pack Search | stock.tracking | search | New |
stock_incoterms_form |
stock.incoterms.form | stock.incoterms | form | New |
stock_inventory_line_tree |
stock.inventory.line.tree | stock.inventory.line | tree | New |
stock_move_tree |
Stock Moves | stock.move | tree | New |
stock_move_tree2 |
Stock Moves | stock.move | tree | New |
stock_partial_move_form |
stock.partial.move.form | stock.partial.move | form | New |
stock_partial_move_line_form |
stock.partial.move.line.form | stock.partial.move.line | form | New |
stock_partial_move_line_list |
stock.partial.move.line.list | stock.partial.move.line | tree | New |
stock_partial_picking_form |
stock.partial.picking.form | stock.partial.picking | form | New |
stock_partial_picking_line_form |
stock.partial.picking.line.form | stock.partial.picking.line | form | New |
stock_partial_picking_line_list |
stock.partial.picking.line.list | stock.partial.picking.line | tree | New |
stock_picking_calendar |
stock.picking.calendar | stock.picking | calendar | New |
stock_return_memory_form_in |
stock.return.picking.memory.from | stock.return.picking.memory | form | New |
stock_return_memory_tree_in |
stock.return.picking.memory.tree | stock.return.picking.memory | tree | New |
view_category_property_form |
product.category.stock.property.form.inherit | product.category | form | Inherits product.product_category_form_view |
view_change_product_quantity |
Change Product Quantity | stock.change.product.qty | form | New |
view_change_standard_price |
Change Standard Price | stock.change.standard.price | form | New |
view_incoterms_tree |
stock.incoterms.tree | stock.incoterms | tree | New |
view_inventory_filter |
stock.inventory.filter | stock.inventory | search | New |
view_inventory_form |
stock.inventory.form | stock.inventory | form | New |
view_inventory_line_form |
stock.inventory.line.form | stock.inventory.line | form | New |
view_inventory_tree |
stock.inventory.tree | stock.inventory | tree | New |
view_location_form |
stock.location.form | stock.location | form | New |
view_location_graph |
stock.location.graph | stock.location | graph | New |
view_location_search |
stock.location.search | stock.location | search | New |
view_location_tree |
stock.location.tree | stock.location | tree | New |
view_location_tree2 |
stock.location.tree | stock.location | tree | New |
view_move_form |
stock.move.form | stock.move | form | New |
view_move_form_reception_picking |
stock.move.form2 | stock.move | form | New |
view_move_search |
stock.move.search | stock.move | search | New |
view_move_search_reception_incoming_picking |
stock.move.incoming.search2 | stock.move | search | New |
view_move_search_reception_outcoming_picking |
stock.move.outgoing.search2 | stock.move | search | New |
view_move_tree |
stock.move.tree | stock.move | tree | New |
view_move_tree_reception_picking |
stock.move.tree2 | stock.move | tree | New |
view_move_tree_reception_picking_board |
stock.move.tree3 | stock.move | tree | New |
view_normal_property_acc_form |
product.normal.stock.acc.property.form.inherit | product.product | xpath | Inherits product.product_normal_form_view |
view_normal_property_form |
product.normal.stock.property.form.inherit | product.product | group | Inherits product.product_normal_form_view |
view_normal_stock_property_form |
product.normal.stock.form.inherit | product.product | group | Inherits product.product_normal_form_view |
view_partner_property_form |
res.partner.stock.property.form.inherit | res.partner | page | Inherits base.view_partner_form |
view_picking_form |
stock.picking.form | stock.picking | form | New |
view_picking_in_form |
stock.picking.in.form | stock.picking | form | New |
view_picking_in_search |
stock.picking.in.search | stock.picking | search | New |
view_picking_in_tree |
stock.picking.in.tree | stock.picking | tree | New |
view_picking_internal_search |
stock.picking.internal.search | stock.picking | search | New |
view_picking_out_form |
stock.picking.out.form | stock.picking | form | New |
view_picking_out_search |
stock.picking.out.search | stock.picking | search | New |
view_picking_out_tree |
stock.picking.out.tree | stock.picking | tree | New |
view_product_standard_price_form |
product.product.standard.price.form.inherit | product.product | field | Inherits product.product_normal_form_view |
view_production_lot_form |
stock.production.lot.form | stock.production.lot | form | New |
view_production_lot_revision_form |
stock.production.lot.revision.form | stock.production.lot.revision | form | New |
view_production_lot_revision_tree |
stock.production.lot.revision.tree | stock.production.lot.revision | tree | New |
view_production_lot_tree |
stock.production.lot.tree | stock.production.lot | tree | New |
view_split_in_lots |
Split in lots | stock.move.split | form | New |
view_split_in_lots_inherit |
Split Inventory Line | stock.inventory.line.split | form | New |
view_stock_fill_inventory |
Import Inventory | stock.fill.inventory | form | New |
view_stock_graph |
report.stock.move.graph | report.stock.move | graph | New |
view_stock_graph_board |
report.stock.move.graph | report.stock.move | graph | New |
view_stock_inventory_graph |
report.stock.inventory.graph | report.stock.inventory | graph | New |
view_stock_inventory_search |
report.stock.inventory.search | report.stock.inventory | search | New |
view_stock_inventory_tree |
report.stock.inventory.tree | report.stock.inventory | tree | New |
view_stock_invoice_onshipping |
Stock Invoice Onshipping | stock.invoice.onshipping | form | New |
view_stock_journal_filter |
stock.journal.filter | stock.journal | search | New |
view_stock_journal_form |
Stock Journals | stock.journal | form | New |
view_stock_journal_tree |
Stock Journals | stock.journal | tree | New |
view_stock_location_product |
Products by Location | stock.location.product | form | New |
view_stock_move_consume_wizard |
Consume Move | stock.move.consume | form | New |
view_stock_move_scrap_wizard |
Scrap Move | stock.move.scrap | form | New |
view_stock_move_split_wizard |
Split move | stock.split.into | form | New |
view_stock_picking_filter |
stock.picking.list.select | stock.picking | search | New |
view_stock_return_picking_form |
Return lines | stock.return.picking | form | New |
view_stock_search |
report.stock.move.search | report.stock.move | search | New |
view_stock_tree |
report.stock.move.tree | report.stock.move | tree | New |
view_template_property_form |
product.template.stock.property.form.inherit | product.template | page | Inherits product.product_template_form_view |
view_tracking_form |
stock.tracking.form | stock.tracking | form | New |
view_tracking_tree |
stock.tracking.tree | stock.tracking | tree | New |
view_warehouse |
stock.warehouse | stock.warehouse | form | New |
view_warehouse_tree |
stock.warehouse.tree | stock.warehouse | tree | New |
vpicktree |
stock.picking.tree | stock.picking | tree | New |
No models found for this module.