| REPOSITORY | |
|---|---|
| REPOSITORY | odoo/odoo |
| GIT | |
| GIT | https://github.com/odoo/odoo.git |
| GIT FOLDER | |
| GIT FOLDER | https://github.com/odoo/odoo/tree/19.0/stock_landed_costs |
| VERSION | |
| VERSION | 1.1 |
| CATEGORY | |
| CATEGORY | Supply Chain/Inventory |
| LICENSE | |
| LICENSE | LGPL-3 |
| APPLICATION | |
| APPLICATION | No |
| AUTO-INSTALLABLE | |
| AUTO-INSTALLABLE | No |
| AUTHORS | |
| AUTHORS | Odoo S.A. |
| MAINTAINERS | |
| MAINTAINERS | Odoo S.A. |
| COMMITTERS | |
| COMMITTERS | Raphael Collet, Odoo Translation Bot, Thibault Delavallée, Arnold Moyaux, Julien Castiaux, Victor Feyens, William Henrotin, svs-odoo, Tiffany Chang (tic), Gorash, william-andre, David (dafr), John Laterre (jol), Ruben Gomes, Mathieu Walravens, Renaud Thiry, Louis Wicket (wil), Victor Piryns (pivi), clesgow, Djamel Touati, Pieter Claeys (clpi), Dylan Kiss (dyki), Arnaud Sibille, Ethan Vincent, lase@odoo.com, kcv-odoo, Louis Gobert, nihp-odoo, Harsh Shah, Arthur Nanson, Mohammad Abdulmoneim (abdu), djameltouati, Michaël Mattiello, chha-odoo, MaximeNoirhomme, plha-odoo, Krzysztof Magusiak (krma), rare-odoo, Ayush Modi, MohsinAli Masi, saurabh |
| WEBSITE | |
| WEBSITE | |
| LAST TRACKING UPDATE | |
| LAST TRACKING UPDATE | 2026-07-06 01:51:42 |
| ODOO DEPENDENCIES | |
| ODOO DEPENDENCIES |
odoo/odoo: - stock_account - stock - product - base - base_setup - web - bus - web_tour - html_editor - uom - barcodes_gs1_nomenclature - barcodes - digest - portal - http_routing - auth_signup - resource - account - onboarding - analytic - purchase_stock - purchase |
| PYTHON DEPENDENCIES | |
| PYTHON DEPENDENCIES | Not have |
| SYSTEM DEPENDENCIES | |
| SYSTEM DEPENDENCIES | Not have |
| DESCRIPTION | |
| DESCRIPTION |
Landed Costs Management
=======================
This module allows you to easily add extra costs on pickings and decide the split of these costs among their stock moves in order to take them into account in your stock valuation.
|
| XML ID | Name | Model | Type | Status |
|---|---|---|---|---|
account_view_move_form_inherited |
account.view.move.form.inherited | account.move | xpath | Inherits account.view_move_form |
res_config_settings_view_form |
res.config.settings.view.form.inherit.stock.landed.costs | res.config.settings | div | Inherits stock.res_config_settings_view_form |
stock_landed_cost_view_kanban |
stock.landed.cost.kanban | stock.landed.cost | kanban | New |
view_product_landed_cost_form |
product.template.landed.cost.form | product.template | group | Inherits account.product_template_form_view |
view_stock_landed_cost_form |
stock.landed.cost.form | stock.landed.cost | form | New |
view_stock_landed_cost_search |
stock.landed.cost.search | stock.landed.cost | search | New |
view_stock_landed_cost_tree |
stock.landed.cost.list | stock.landed.cost | list | New |
view_stock_landed_cost_tree2 |
stock.landed.cost.list | stock.landed.cost | list | New |
landed_costs_ids
One2many → stock.landed.cost
string='Landed Costs'
args: 'stock.landed.cost', 'vendor_bill_id'
landed_costs_visible
Boolean
compute='_compute_landed_costs_visible'
action_view_landed_costs(self)
button_create_landed_costs(self)
is_landed_costs_line
Boolean
product_type
Selection
readonly=True
related='product_id.type'
No public methods.
landed_cost_ok
Boolean
help='Indicates whether the product is a landed cost: when receiving a vendor bill, you can allocate this cost on preceding receipts.'
args: 'Is a Landed Cost'
split_method_landed_cost
Selection
help='Default Split Method when used for Landed Cost'
string='Default Split Method'
args: SPLIT_METHOD
write(self, vals)
No new fields.
Public methods (0)No public methods.
lc_journal_id
Many2one → account.journal
No public methods.
lc_journal_id
Many2one → account.journal
readonly=False
related='company_id.lc_journal_id'
string='Default Journal'
args: 'account.journal'
No public methods.
account_journal_id
Many2one → account.journal
default=<expr>
required=True
args: 'account.journal', 'Account Journal'
account_move_id
Many2one → account.move
copy=False
index='btree_not_null'
readonly=True
args: 'account.move', 'Journal Entry'
amount_total
Monetary
compute='_compute_total_amount'
store=True
tracking=True
args: 'Total'
company_id
Many2one → res.company
default=<expr>
required=True
string='Company'
args: 'res.company'
cost_lines
One2many → stock.landed.cost.lines
copy=True
args: 'stock.landed.cost.lines', 'cost_id', 'Cost Lines'
currency_id
Many2one → res.currency
related='company_id.currency_id'
args: 'res.currency'
date
Date
copy=False
default=fields.Date.context_today
required=True
tracking=True
args: 'Date'
description
Text
name
Char
copy=False
default=<expr>
readonly=True
tracking=True
args: 'Name'
picking_ids
Many2many → stock.picking
copy=False
string='Transfers'
args: 'stock.picking'
state
Selection
copy=False
default='draft'
readonly=True
tracking=True
args: [('draft', 'Draft'), ('done', 'Posted'), ('cancel', 'Cancelled')], 'State'
target_model
Selection
copy=False
default='picking'
required=True
string='Apply On'
args: [('picking', 'Transfers')]
valuation_adjustment_lines
One2many → stock.valuation.adjustment.lines
vendor_bill_id
Many2one → account.move
copy=False
domain=[('move_type', '=', 'in_invoice')]
index='btree_not_null'
args: 'account.move', 'Vendor Bill'
button_cancel(self)
button_validate(self)
compute_landed_cost(self)
create(self, vals_list)
get_valuation_lines(self)
unlink(self)
account_id
Many2one → account.account
cost_id
Many2one → stock.landed.cost
index=True
ondelete='cascade'
required=True
args: 'stock.landed.cost', 'Landed Cost'
currency_id
Many2one → res.currency
related='cost_id.currency_id'
args: 'res.currency'
name
Char
price_unit
Monetary
required=True
args: 'Cost'
product_id
Many2one → product.product
required=True
args: 'product.product', 'Product'
split_method
Selection
help="Equal: Cost will be equally divided.\nBy Quantity: Cost will be divided according to product's quantity.\nBy Current cost: Cost will be divided according to product's current cost.\nBy Weight: Cost will be divided depending on its weight.\nBy Volume: Cost will be divided depending on its volume."
required=True
string='Split Method'
args: SPLIT_METHOD
onchange_product_id(self)
No new fields.
Public methods (0)No public methods.
additional_landed_cost
Monetary
cost_id
Many2one → stock.landed.cost
index=True
ondelete='cascade'
required=True
args: 'stock.landed.cost', 'Landed Cost'
cost_line_id
Many2one → stock.landed.cost.lines
readonly=True
args: 'stock.landed.cost.lines', 'Cost Line'
currency_id
Many2one → res.currency
related='cost_id.company_id.currency_id'
args: 'res.currency'
final_cost
Monetary
compute='_compute_final_cost'
store=True
args: 'New Value'
former_cost
Monetary
move_id
Many2one → stock.move
readonly=True
args: 'stock.move', 'Stock Move'
name
Char
compute='_compute_name'
store=True
args: 'Description'
product_id
Many2one → product.product
required=True
args: 'product.product', 'Product'
quantity
Float
default=1.0
digits=0
required=True
args: 'Quantity'
volume
Float
default=1.0
digits='Volume'
args: 'Volume'
weight
Float
default=1.0
digits='Stock Weight'
args: 'Weight'
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/18.0/stock_landed_costs |
| VERSION | |
| VERSION | 1.1 |
| CATEGORY | |
| CATEGORY | Inventory/Inventory |
| LICENSE | |
| LICENSE | LGPL-3 |
| APPLICATION | |
| APPLICATION | No |
| AUTO-INSTALLABLE | |
| AUTO-INSTALLABLE | No |
| AUTHORS | |
| AUTHORS | |
| MAINTAINERS | |
| MAINTAINERS | |
| COMMITTERS | |
| COMMITTERS | Odoo Translation Bot, Christophe Simonis, Xavier Morel, Odoo Online, Arnold Moyaux, William Henrotin, svs-odoo, Tiffany Chang (tic), Gorash, Miquel Raïch, David (dafr), Mathieu Walravens, Vincent Larcin, Habib (ayh), Louis Wicket (wil), Walid, Adrien Widart (awt), Maximilien (malb), Gauthier Wala (gawa), clesgow, Djamel Touati, Pieter Claeys (clpi), Dylan Kiss (dyki), Chong Wang (cwg), Arnaud Sibille, omra-odoo, Ethan Vincent, Maryam Kia, Maxime de Neuville, suth-odoo, kcv-odoo, Louis Gobert, Louis (wil), Quang Nguyen, Arthur Nanson, djameltouati, Corentin Heinix (cohe), plha-odoo, rare-odoo |
| WEBSITE | |
| WEBSITE | |
| LAST TRACKING UPDATE | |
| LAST TRACKING UPDATE | 2026-07-06 01:25:55 |
| ODOO DEPENDENCIES | |
| ODOO DEPENDENCIES |
odoo/odoo: - stock_account - stock - product - base - base_setup - web - bus - web_tour - html_editor - uom - barcodes_gs1_nomenclature - barcodes - digest - portal - web_editor - http_routing - auth_signup - resource - account - onboarding - analytic - purchase_stock - purchase |
| PYTHON DEPENDENCIES | |
| PYTHON DEPENDENCIES | Not have |
| SYSTEM DEPENDENCIES | |
| SYSTEM DEPENDENCIES | Not have |
| DESCRIPTION | |
| DESCRIPTION |
Landed Costs Management
=======================
This module allows you to easily add extra costs on pickings and decide the split of these costs among their stock moves in order to take them into account in your stock valuation.
|
| XML ID | Name | Model | Type | Status |
|---|---|---|---|---|
account_view_move_form_inherited |
account.view.move.form.inherited | account.move | xpath | Inherits account.view_move_form |
res_config_settings_view_form |
res.config.settings.view.form.inherit.stock.landed.costs | res.config.settings | div | Inherits stock.res_config_settings_view_form |
stock_landed_cost_view_kanban |
stock.landed.cost.kanban | stock.landed.cost | kanban | New |
stock_valuation_layer_form_inherited |
stock.valuation.layer.form.inherited | stock.valuation.layer | xpath | Inherits stock_account.stock_valuation_layer_form |
view_product_landed_cost_form |
product.template.landed.cost.form | product.template | group | Inherits account.product_template_form_view |
view_stock_landed_cost_form |
stock.landed.cost.form | stock.landed.cost | form | New |
view_stock_landed_cost_search |
stock.landed.cost.search | stock.landed.cost | search | New |
view_stock_landed_cost_tree |
stock.landed.cost.list | stock.landed.cost | list | New |
view_stock_landed_cost_tree2 |
stock.landed.cost.list | stock.landed.cost | list | New |
landed_costs_ids
One2many → stock.landed.cost
string='Landed Costs'
args: 'stock.landed.cost', 'vendor_bill_id'
landed_costs_visible
Boolean
compute='_compute_landed_costs_visible'
action_view_landed_costs(self)
button_create_landed_costs(self)
is_landed_costs_line
Boolean
product_type
Selection
readonly=True
related='product_id.type'
No public methods.
landed_cost_ok
Boolean
help='Indicates whether the product is a landed cost: when receiving a vendor bill, you can allocate this cost on preceding receipts.'
args: 'Is a Landed Cost'
split_method_landed_cost
Selection
help='Default Split Method when used for Landed Cost'
string='Default Split Method'
args: SPLIT_METHOD
write(self, vals)
No new fields.
Public methods (0)No public methods.
lc_journal_id
Many2one → account.journal
No public methods.
lc_journal_id
Many2one → account.journal
readonly=False
related='company_id.lc_journal_id'
string='Default Journal'
args: 'account.journal'
No public methods.
account_journal_id
Many2one → account.journal
default=<expr>
required=True
args: 'account.journal', 'Account Journal'
account_move_id
Many2one → account.move
copy=False
index='btree_not_null'
readonly=True
args: 'account.move', 'Journal Entry'
amount_total
Monetary
compute='_compute_total_amount'
store=True
tracking=True
args: 'Total'
company_id
Many2one → res.company
default=<expr>
required=True
string='Company'
args: 'res.company'
cost_lines
One2many → stock.landed.cost.lines
copy=True
args: 'stock.landed.cost.lines', 'cost_id', 'Cost Lines'
currency_id
Many2one → res.currency
related='company_id.currency_id'
args: 'res.currency'
date
Date
copy=False
default=fields.Date.context_today
required=True
tracking=True
args: 'Date'
description
Text
name
Char
copy=False
default=<expr>
readonly=True
tracking=True
args: 'Name'
picking_ids
Many2many → stock.picking
copy=False
string='Transfers'
args: 'stock.picking'
state
Selection
copy=False
default='draft'
readonly=True
tracking=True
args: [('draft', 'Draft'), ('done', 'Posted'), ('cancel', 'Cancelled')], 'State'
stock_valuation_layer_ids
One2many → stock.valuation.layer
target_model
Selection
copy=False
default='picking'
required=True
string='Apply On'
args: [('picking', 'Transfers')]
valuation_adjustment_lines
One2many → stock.valuation.adjustment.lines
vendor_bill_id
Many2one → account.move
copy=False
domain=[('move_type', '=', 'in_invoice')]
args: 'account.move', 'Vendor Bill'
action_view_stock_valuation_layers(self)
button_cancel(self)
button_validate(self)
compute_landed_cost(self)
create(self, vals_list)
get_valuation_lines(self)
reconcile_landed_cost(self)
unlink(self)
account_id
Many2one → account.account
domain=[('deprecated', '=', False)]
args: 'account.account', 'Account'
cost_id
Many2one → stock.landed.cost
ondelete='cascade'
required=True
args: 'stock.landed.cost', 'Landed Cost'
currency_id
Many2one → res.currency
related='cost_id.currency_id'
args: 'res.currency'
name
Char
price_unit
Monetary
required=True
args: 'Cost'
product_id
Many2one → product.product
required=True
args: 'product.product', 'Product'
split_method
Selection
help="Equal: Cost will be equally divided.\nBy Quantity: Cost will be divided according to product's quantity.\nBy Current cost: Cost will be divided according to product's current cost.\nBy Weight: Cost will be divided depending on its weight.\nBy Volume: Cost will be divided depending on its volume."
required=True
string='Split Method'
args: SPLIT_METHOD
onchange_product_id(self)
No new fields.
Public methods (0)No public methods.
additional_landed_cost
Monetary
cost_id
Many2one → stock.landed.cost
ondelete='cascade'
required=True
args: 'stock.landed.cost', 'Landed Cost'
cost_line_id
Many2one → stock.landed.cost.lines
readonly=True
args: 'stock.landed.cost.lines', 'Cost Line'
currency_id
Many2one → res.currency
related='cost_id.company_id.currency_id'
args: 'res.currency'
final_cost
Monetary
compute='_compute_final_cost'
store=True
args: 'New Value'
former_cost
Monetary
move_id
Many2one → stock.move
readonly=True
args: 'stock.move', 'Stock Move'
name
Char
compute='_compute_name'
store=True
args: 'Description'
product_id
Many2one → product.product
required=True
args: 'product.product', 'Product'
quantity
Float
default=1.0
digits=0
required=True
args: 'Quantity'
volume
Float
default=1.0
digits='Volume'
args: 'Volume'
weight
Float
default=1.0
digits='Stock Weight'
args: 'Weight'
No public methods.
stock_landed_cost_id
Many2one → stock.landed.cost
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/17.0/stock_landed_costs |
| VERSION | |
| VERSION | 1.1 |
| CATEGORY | |
| CATEGORY | Inventory/Inventory |
| LICENSE | |
| LICENSE | LGPL-3 |
| APPLICATION | |
| APPLICATION | No |
| AUTO-INSTALLABLE | |
| AUTO-INSTALLABLE | No |
| AUTHORS | |
| AUTHORS | |
| MAINTAINERS | |
| MAINTAINERS | |
| COMMITTERS | |
| COMMITTERS | Odoo Translation Bot, Martin Trigaux, Christophe Simonis, Xavier Morel, Odoo Online, Arnold Moyaux, Adrien Dieudonné, William Henrotin, svs-odoo, Ivan Yelizariev, Tiffany Chang (tic), Rémy Voet (ryv), Gorash, Pierre Paridans, william-andre, David (dafr), Mathieu Walravens, Roy Le, niyasraphy, Habib (ayh), Louis Wicket (wil), Walid, Adrien Widart (awt), Djamel Touati, Michael Tietz, Dylan Kiss (dyki), Ethan Vincent, lase@odoo.com, suth-odoo, Louis Gobert, Louis (wil), Quang Nguyen |
| WEBSITE | |
| WEBSITE | |
| LAST TRACKING UPDATE | |
| LAST TRACKING UPDATE | 2026-07-06 01:02:06 |
| ODOO DEPENDENCIES | |
| ODOO DEPENDENCIES |
odoo/odoo: - stock_account - stock - product - base - base_setup - web - bus - web_tour - uom - barcodes_gs1_nomenclature - barcodes - digest - portal - web_editor - http_routing - auth_signup - resource - account - onboarding - analytic - purchase_stock - purchase |
| PYTHON DEPENDENCIES | |
| PYTHON DEPENDENCIES | Not have |
| SYSTEM DEPENDENCIES | |
| SYSTEM DEPENDENCIES | Not have |
| DESCRIPTION | |
| DESCRIPTION |
Landed Costs Management
=======================
This module allows you to easily add extra costs on pickings and decide the split of these costs among their stock moves in order to take them into account in your stock valuation.
|
| XML ID | Name | Model | Type | Status |
|---|---|---|---|---|
account_view_move_form_inherited |
account.view.move.form.inherited | account.move | xpath | Inherits account.view_move_form |
res_config_settings_view_form |
res.config.settings.view.form.inherit.stock.landed.costs | res.config.settings | div | Inherits stock.res_config_settings_view_form |
stock_landed_cost_view_kanban |
stock.landed.cost.kanban | stock.landed.cost | kanban | New |
stock_valuation_layer_form_inherited |
stock.valuation.layer.form.inherited | stock.valuation.layer | xpath | Inherits stock_account.stock_valuation_layer_form |
view_product_landed_cost_form |
product.template.landed.cost.form | product.template | group | Inherits account.product_template_form_view |
view_stock_landed_cost_form |
stock.landed.cost.form | stock.landed.cost | form | New |
view_stock_landed_cost_search |
stock.landed.cost.search | stock.landed.cost | search | New |
view_stock_landed_cost_tree |
stock.landed.cost.tree | stock.landed.cost | tree | New |
view_stock_landed_cost_tree2 |
stock.landed.cost.tree | stock.landed.cost | tree | New |
landed_costs_ids
One2many → stock.landed.cost
string='Landed Costs'
args: 'stock.landed.cost', 'vendor_bill_id'
landed_costs_visible
Boolean
compute='_compute_landed_costs_visible'
action_view_landed_costs(self)
button_create_landed_costs(self)
is_landed_costs_line
Boolean
product_type
Selection
readonly=True
related='product_id.detailed_type'
No public methods.
landed_cost_ok
Boolean
help='Indicates whether the product is a landed cost: when receiving a vendor bill, you can allocate this cost on preceding receipts.'
args: 'Is a Landed Cost'
split_method_landed_cost
Selection
help='Default Split Method when used for Landed Cost'
string='Default Split Method'
args: SPLIT_METHOD
write(self, vals)
No new fields.
Public methods (0)No public methods.
lc_journal_id
Many2one → account.journal
No public methods.
lc_journal_id
Many2one → account.journal
readonly=False
related='company_id.lc_journal_id'
string='Default Journal'
args: 'account.journal'
No public methods.
account_journal_id
Many2one → account.journal
default=<expr>
required=True
args: 'account.journal', 'Account Journal'
account_move_id
Many2one → account.move
copy=False
index='btree_not_null'
readonly=True
args: 'account.move', 'Journal Entry'
amount_total
Monetary
compute='_compute_total_amount'
store=True
tracking=True
args: 'Total'
company_id
Many2one → res.company
related='account_journal_id.company_id'
string='Company'
args: 'res.company'
cost_lines
One2many → stock.landed.cost.lines
copy=True
args: 'stock.landed.cost.lines', 'cost_id', 'Cost Lines'
currency_id
Many2one → res.currency
related='company_id.currency_id'
args: 'res.currency'
date
Date
copy=False
default=fields.Date.context_today
required=True
tracking=True
args: 'Date'
description
Text
name
Char
copy=False
default=<expr>
readonly=True
tracking=True
args: 'Name'
picking_ids
Many2many → stock.picking
copy=False
string='Transfers'
args: 'stock.picking'
state
Selection
copy=False
default='draft'
readonly=True
tracking=True
args: [('draft', 'Draft'), ('done', 'Posted'), ('cancel', 'Cancelled')], 'State'
stock_valuation_layer_ids
One2many → stock.valuation.layer
target_model
Selection
copy=False
default='picking'
required=True
string='Apply On'
args: [('picking', 'Transfers')]
valuation_adjustment_lines
One2many → stock.valuation.adjustment.lines
vendor_bill_id
Many2one → account.move
copy=False
domain=[('move_type', '=', 'in_invoice')]
args: 'account.move', 'Vendor Bill'
action_view_stock_valuation_layers(self)
button_cancel(self)
button_validate(self)
compute_landed_cost(self)
create(self, vals_list)
get_valuation_lines(self)
reconcile_landed_cost(self)
unlink(self)
account_id
Many2one → account.account
domain=[('deprecated', '=', False)]
args: 'account.account', 'Account'
cost_id
Many2one → stock.landed.cost
ondelete='cascade'
required=True
args: 'stock.landed.cost', 'Landed Cost'
currency_id
Many2one → res.currency
related='cost_id.currency_id'
args: 'res.currency'
name
Char
price_unit
Monetary
required=True
args: 'Cost'
product_id
Many2one → product.product
required=True
args: 'product.product', 'Product'
split_method
Selection
help="Equal: Cost will be equally divided.\nBy Quantity: Cost will be divided according to product's quantity.\nBy Current cost: Cost will be divided according to product's current cost.\nBy Weight: Cost will be divided depending on its weight.\nBy Volume: Cost will be divided depending on its volume."
required=True
string='Split Method'
args: SPLIT_METHOD
onchange_product_id(self)
additional_landed_cost
Monetary
cost_id
Many2one → stock.landed.cost
ondelete='cascade'
required=True
args: 'stock.landed.cost', 'Landed Cost'
cost_line_id
Many2one → stock.landed.cost.lines
readonly=True
args: 'stock.landed.cost.lines', 'Cost Line'
currency_id
Many2one → res.currency
related='cost_id.company_id.currency_id'
args: 'res.currency'
final_cost
Monetary
compute='_compute_final_cost'
store=True
args: 'New Value'
former_cost
Monetary
move_id
Many2one → stock.move
readonly=True
args: 'stock.move', 'Stock Move'
name
Char
compute='_compute_name'
store=True
args: 'Description'
product_id
Many2one → product.product
required=True
args: 'product.product', 'Product'
quantity
Float
default=1.0
digits=0
required=True
args: 'Quantity'
volume
Float
default=1.0
digits='Volume'
args: 'Volume'
weight
Float
default=1.0
digits='Stock Weight'
args: 'Weight'
No public methods.
stock_landed_cost_id
Many2one → stock.landed.cost
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/16.0/stock_landed_costs |
| VERSION | |
| VERSION | 1.1 |
| CATEGORY | |
| CATEGORY | Inventory/Inventory |
| LICENSE | |
| LICENSE | LGPL-3 |
| APPLICATION | |
| APPLICATION | No |
| AUTO-INSTALLABLE | |
| AUTO-INSTALLABLE | No |
| AUTHORS | |
| AUTHORS | |
| MAINTAINERS | |
| MAINTAINERS | |
| COMMITTERS | |
| COMMITTERS | Odoo Translation Bot, Martin Trigaux, Fabien Pinckaers, Denis Ledoux, Christophe Simonis, Yannick Tivisse, Arnold Moyaux, Romeo Fragomeli, Victor Feyens, Adrien Dieudonné, William Henrotin, Adrien Widart, Tiffany Chang (tic), Rémy Voet (ryv), Nicolas (vin), william-andre, aliya, Mathieu Walravens, Louis Wicket (wil), Walid, Adrien Widart (awt), Michael de Villiers, guva-odoo, Ethan Vincent, lase@odoo.com, suth-odoo, Louis Gobert, Aungkokolin1997, bt-ojossen, Quang Nguyen |
| WEBSITE | |
| WEBSITE | |
| LAST TRACKING UPDATE | |
| LAST TRACKING UPDATE | 2026-07-06 00:40:48 |
| ODOO DEPENDENCIES | |
| ODOO DEPENDENCIES |
odoo/odoo: - stock_account - stock - product - base - base_setup - web - bus - web_tour - uom - barcodes_gs1_nomenclature - barcodes - digest - portal - web_editor - http_routing - auth_signup - resource - account - analytic - purchase_stock - purchase |
| PYTHON DEPENDENCIES | |
| PYTHON DEPENDENCIES | Not have |
| SYSTEM DEPENDENCIES | |
| SYSTEM DEPENDENCIES | Not have |
| DESCRIPTION | |
| DESCRIPTION |
Landed Costs Management
=======================
This module allows you to easily add extra costs on pickings and decide the split of these costs among their stock moves in order to take them into account in your stock valuation.
|
| XML ID | Name | Model | Type | Status |
|---|---|---|---|---|
account_view_move_form_inherited |
account.view.move.form.inherited | account.move | xpath | Inherits account.view_move_form |
res_config_settings_view_form |
res.config.settings.view.form.inherit.stock.landed.costs | res.config.settings | div | Inherits stock.res_config_settings_view_form |
stock_landed_cost_view_kanban |
stock.landed.cost.kanban | stock.landed.cost | kanban | New |
stock_valuation_layer_form_inherited |
stock.valuation.layer.form.inherited | stock.valuation.layer | xpath | Inherits stock_account.stock_valuation_layer_form |
view_product_landed_cost_form |
product.template.landed.cost.form | product.template | group | Inherits account.product_template_form_view |
view_stock_landed_cost_form |
stock.landed.cost.form | stock.landed.cost | form | New |
view_stock_landed_cost_search |
stock.landed.cost.search | stock.landed.cost | search | New |
view_stock_landed_cost_tree |
stock.landed.cost.tree | stock.landed.cost | tree | New |
view_stock_landed_cost_tree2 |
stock.landed.cost.tree | stock.landed.cost | tree | New |
landed_costs_ids
One2many → stock.landed.cost
string='Landed Costs'
args: 'stock.landed.cost', 'vendor_bill_id'
landed_costs_visible
Boolean
compute='_compute_landed_costs_visible'
action_view_landed_costs(self)
button_create_landed_costs(self)
is_landed_costs_line
Boolean
product_type
Selection
readonly=True
related='product_id.detailed_type'
No public methods.
landed_cost_ok
Boolean
help='Indicates whether the product is a landed cost: when receiving a vendor bill, you can allocate this cost on preceding receipts.'
args: 'Is a Landed Cost'
split_method_landed_cost
Selection
help='Default Split Method when used for Landed Cost'
string='Default Split Method'
args: SPLIT_METHOD
write(self, vals)
No new fields.
Public methods (0)No public methods.
lc_journal_id
Many2one → account.journal
No public methods.
lc_journal_id
Many2one → account.journal
readonly=False
related='company_id.lc_journal_id'
string='Default Journal'
args: 'account.journal'
No public methods.
account_journal_id
Many2one → account.journal
default=<expr>
required=True
states={'done': [('readonly', True)]}
args: 'account.journal', 'Account Journal'
account_move_id
Many2one → account.move
copy=False
index='btree_not_null'
readonly=True
args: 'account.move', 'Journal Entry'
amount_total
Monetary
compute='_compute_total_amount'
store=True
tracking=True
args: 'Total'
company_id
Many2one → res.company
related='account_journal_id.company_id'
string='Company'
args: 'res.company'
cost_lines
One2many → stock.landed.cost.lines
copy=True
states={'done': [('readonly', True)]}
args: 'stock.landed.cost.lines', 'cost_id', 'Cost Lines'
currency_id
Many2one → res.currency
related='company_id.currency_id'
args: 'res.currency'
date
Date
copy=False
default=fields.Date.context_today
required=True
states={'done': [('readonly', True)]}
tracking=True
args: 'Date'
description
Text
states={'done': [('readonly', True)]}
args: 'Item Description'
name
Char
copy=False
default=<expr>
readonly=True
tracking=True
args: 'Name'
picking_ids
Many2many → stock.picking
copy=False
states={'done': [('readonly', True)]}
string='Transfers'
args: 'stock.picking'
state
Selection
copy=False
default='draft'
readonly=True
tracking=True
args: [('draft', 'Draft'), ('done', 'Posted'), ('cancel', 'Cancelled')], 'State'
stock_valuation_layer_ids
One2many → stock.valuation.layer
target_model
Selection
copy=False
default='picking'
required=True
states={'done': [('readonly', True)]}
string='Apply On'
args: [('picking', 'Transfers')]
valuation_adjustment_lines
One2many → stock.valuation.adjustment.lines
states={'done': [('readonly', True)]}
args: 'stock.valuation.adjustment.lines', 'cost_id', 'Valuation Adjustments'
vendor_bill_id
Many2one → account.move
copy=False
domain=[('move_type', '=', 'in_invoice')]
args: 'account.move', 'Vendor Bill'
action_view_stock_valuation_layers(self)
button_cancel(self)
button_validate(self)
compute_landed_cost(self)
create(self, vals_list)
get_valuation_lines(self)
reconcile_landed_cost(self)
unlink(self)
account_id
Many2one → account.account
domain=[('deprecated', '=', False)]
args: 'account.account', 'Account'
cost_id
Many2one → stock.landed.cost
ondelete='cascade'
required=True
args: 'stock.landed.cost', 'Landed Cost'
currency_id
Many2one → res.currency
related='cost_id.currency_id'
args: 'res.currency'
name
Char
price_unit
Monetary
required=True
args: 'Cost'
product_id
Many2one → product.product
required=True
args: 'product.product', 'Product'
split_method
Selection
help="Equal : Cost will be equally divided.\nBy Quantity : Cost will be divided according to product's quantity.\nBy Current cost : Cost will be divided according to product's current cost.\nBy Weight : Cost will be divided depending on its weight.\nBy Volume : Cost will be divided depending on its volume."
required=True
string='Split Method'
args: SPLIT_METHOD
onchange_product_id(self)
additional_landed_cost
Monetary
cost_id
Many2one → stock.landed.cost
ondelete='cascade'
required=True
args: 'stock.landed.cost', 'Landed Cost'
cost_line_id
Many2one → stock.landed.cost.lines
readonly=True
args: 'stock.landed.cost.lines', 'Cost Line'
currency_id
Many2one → res.currency
related='cost_id.company_id.currency_id'
args: 'res.currency'
final_cost
Monetary
compute='_compute_final_cost'
store=True
args: 'New Value'
former_cost
Monetary
move_id
Many2one → stock.move
readonly=True
args: 'stock.move', 'Stock Move'
name
Char
compute='_compute_name'
store=True
args: 'Description'
product_id
Many2one → product.product
required=True
args: 'product.product', 'Product'
quantity
Float
default=1.0
digits=0
required=True
args: 'Quantity'
volume
Float
default=1.0
digits='Volume'
args: 'Volume'
weight
Float
default=1.0
digits='Stock Weight'
args: 'Weight'
No public methods.
stock_landed_cost_id
Many2one → stock.landed.cost
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/15.0/stock_landed_costs |
| VERSION | |
| VERSION | 1.1 |
| CATEGORY | |
| CATEGORY | Inventory/Inventory |
| LICENSE | |
| LICENSE | LGPL-3 |
| APPLICATION | |
| APPLICATION | No |
| AUTO-INSTALLABLE | |
| AUTO-INSTALLABLE | No |
| AUTHORS | |
| AUTHORS | |
| MAINTAINERS | |
| MAINTAINERS | |
| COMMITTERS | |
| COMMITTERS | Odoo Translation Bot, Martin Trigaux, Thibault Delavallée, Christophe Simonis, Nicolas Martinelli, Dharmraj Jhala, Arnold Moyaux, wan, Xavier-Do, Andrea Grazioso (agr-odoo), William Henrotin, Adrien Widart, Nathan Marotte (nama), Rémy Voet (ryv), fja-odoo, Djamel (otd), Kevin Baptiste, william-andre, Walid HANNICHE (waha), Michael Mattiello (mcm), Walid, Adrien Widart (awt), Michael de Villiers, guva-odoo, suth-odoo |
| WEBSITE | |
| WEBSITE | |
| LAST TRACKING UPDATE | |
| LAST TRACKING UPDATE | 2026-07-06 00:25:27 |
| ODOO DEPENDENCIES | |
| ODOO DEPENDENCIES |
odoo/odoo: - stock_account - stock - product - base - base_setup - web - bus - web_tour - uom - barcodes - digest - portal - web_editor - http_routing - auth_signup - resource - account - analytic - purchase_stock - purchase |
| PYTHON DEPENDENCIES | |
| PYTHON DEPENDENCIES | Not have |
| SYSTEM DEPENDENCIES | |
| SYSTEM DEPENDENCIES | Not have |
| DESCRIPTION | |
| DESCRIPTION |
Landed Costs Management
=======================
This module allows you to easily add extra costs on pickings and decide the split of these costs among their stock moves in order to take them into account in your stock valuation.
|
| XML ID | Name | Model | Type | Status |
|---|---|---|---|---|
account_view_move_form_inherited |
account.view.move.form.inherited | account.move | xpath | Inherits account.view_move_form |
res_config_settings_view_form |
res.config.settings.view.form.inherit.stock.landed.costs | res.config.settings | div | Inherits stock.res_config_settings_view_form |
stock_landed_cost_view_kanban |
stock.landed.cost.kanban | stock.landed.cost | kanban | New |
stock_valuation_layer_form_inherited |
stock.valuation.layer.form.inherited | stock.valuation.layer | xpath | Inherits stock_account.stock_valuation_layer_form |
view_product_landed_cost_form |
product.template.landed.cost.form | product.template | group | Inherits account.product_template_form_view |
view_stock_landed_cost_form |
stock.landed.cost.form | stock.landed.cost | form | New |
view_stock_landed_cost_search |
stock.landed.cost.search | stock.landed.cost | search | New |
view_stock_landed_cost_tree |
stock.landed.cost.tree | stock.landed.cost | tree | New |
view_stock_landed_cost_tree2 |
stock.landed.cost.tree | stock.landed.cost | tree | New |
landed_costs_ids
One2many → stock.landed.cost
string='Landed Costs'
args: 'stock.landed.cost', 'vendor_bill_id'
landed_costs_visible
Boolean
compute='_compute_landed_costs_visible'
action_view_landed_costs(self)
button_create_landed_costs(self)
is_landed_costs_line
Boolean
product_type
Selection
readonly=True
related='product_id.detailed_type'
No public methods.
landed_cost_ok
Boolean
help='Indicates whether the product is a landed cost.'
args: 'Is a Landed Cost'
split_method_landed_cost
Selection
help='Default Split Method when used for Landed Cost'
string='Default Split Method'
args: SPLIT_METHOD
write(self, vals)
No new fields.
Public methods (0)No public methods.
lc_journal_id
Many2one → account.journal
No public methods.
lc_journal_id
Many2one → account.journal
readonly=False
related='company_id.lc_journal_id'
string='Default Journal'
args: 'account.journal'
No public methods.
account_journal_id
Many2one → account.journal
default=<expr>
required=True
states={'done': [('readonly', True)]}
args: 'account.journal', 'Account Journal'
account_move_id
Many2one → account.move
copy=False
readonly=True
args: 'account.move', 'Journal Entry'
amount_total
Monetary
compute='_compute_total_amount'
store=True
tracking=True
args: 'Total'
company_id
Many2one → res.company
related='account_journal_id.company_id'
string='Company'
args: 'res.company'
cost_lines
One2many → stock.landed.cost.lines
copy=True
states={'done': [('readonly', True)]}
args: 'stock.landed.cost.lines', 'cost_id', 'Cost Lines'
currency_id
Many2one → res.currency
related='company_id.currency_id'
args: 'res.currency'
date
Date
copy=False
default=fields.Date.context_today
required=True
states={'done': [('readonly', True)]}
tracking=True
args: 'Date'
description
Text
states={'done': [('readonly', True)]}
args: 'Item Description'
name
Char
copy=False
default=<expr>
readonly=True
tracking=True
args: 'Name'
picking_ids
Many2many → stock.picking
copy=False
states={'done': [('readonly', True)]}
string='Transfers'
args: 'stock.picking'
state
Selection
copy=False
default='draft'
readonly=True
tracking=True
args: [('draft', 'Draft'), ('done', 'Posted'), ('cancel', 'Cancelled')], 'State'
stock_valuation_layer_ids
One2many → stock.valuation.layer
target_model
Selection
copy=False
default='picking'
required=True
states={'done': [('readonly', True)]}
string='Apply On'
args: [('picking', 'Transfers')]
valuation_adjustment_lines
One2many → stock.valuation.adjustment.lines
states={'done': [('readonly', True)]}
args: 'stock.valuation.adjustment.lines', 'cost_id', 'Valuation Adjustments'
vendor_bill_id
Many2one → account.move
copy=False
domain=[('move_type', '=', 'in_invoice')]
args: 'account.move', 'Vendor Bill'
action_view_stock_valuation_layers(self)
button_cancel(self)
button_validate(self)
compute_landed_cost(self)
create(self, vals)
get_valuation_lines(self)
reconcile_landed_cost(self)
unlink(self)
account_id
Many2one → account.account
domain=[('deprecated', '=', False)]
args: 'account.account', 'Account'
cost_id
Many2one → stock.landed.cost
ondelete='cascade'
required=True
args: 'stock.landed.cost', 'Landed Cost'
currency_id
Many2one → res.currency
related='cost_id.currency_id'
args: 'res.currency'
name
Char
price_unit
Monetary
required=True
args: 'Cost'
product_id
Many2one → product.product
required=True
args: 'product.product', 'Product'
split_method
Selection
help="Equal : Cost will be equally divided.\nBy Quantity : Cost will be divided according to product's quantity.\nBy Current cost : Cost will be divided according to product's current cost.\nBy Weight : Cost will be divided depending on its weight.\nBy Volume : Cost will be divided depending on its volume."
required=True
string='Split Method'
args: SPLIT_METHOD
onchange_product_id(self)
additional_landed_cost
Monetary
cost_id
Many2one → stock.landed.cost
ondelete='cascade'
required=True
args: 'stock.landed.cost', 'Landed Cost'
cost_line_id
Many2one → stock.landed.cost.lines
readonly=True
args: 'stock.landed.cost.lines', 'Cost Line'
currency_id
Many2one → res.currency
related='cost_id.company_id.currency_id'
args: 'res.currency'
final_cost
Monetary
compute='_compute_final_cost'
store=True
args: 'New Value'
former_cost
Monetary
move_id
Many2one → stock.move
readonly=True
args: 'stock.move', 'Stock Move'
name
Char
compute='_compute_name'
store=True
args: 'Description'
product_id
Many2one → product.product
required=True
args: 'product.product', 'Product'
quantity
Float
default=1.0
digits=0
required=True
args: 'Quantity'
volume
Float
default=1.0
digits='Volume'
args: 'Volume'
weight
Float
default=1.0
digits='Stock Weight'
args: 'Weight'
No public methods.
stock_landed_cost_id
Many2one → stock.landed.cost
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/14.0/stock_landed_costs |
| VERSION | |
| VERSION | 1.1 |
| CATEGORY | |
| CATEGORY | Inventory/Inventory |
| LICENSE | |
| LICENSE | LGPL-3 |
| APPLICATION | |
| APPLICATION | No |
| AUTO-INSTALLABLE | |
| AUTO-INSTALLABLE | No |
| AUTHORS | |
| AUTHORS | |
| MAINTAINERS | |
| MAINTAINERS | |
| COMMITTERS | |
| COMMITTERS | Raphael Collet, Odoo Translation Bot, Martin Trigaux, Olivier Dony, Thibault Delavallée, Christophe Simonis, Xavier Morel, Goffin Simon, Simon Lejeune, Nicolas Martinelli, Yannick Tivisse, Laurent Smet, Arnold Moyaux, wan, Xavier-Do, Victor Feyens, Andrea Grazioso (agr-odoo), William Henrotin, Sébastien Theys, fw-bot, Debauche Stéphane, Alvaro Fuentes, Adrien Widart, Nathan Marotte (nama), Rémy Voet (ryv), fja-odoo, Djamel (otd), Kevin Baptiste, Pratima Gupta, Jigar Vaghela, yhu-odoo, william, Walid HANNICHE (waha), niyasraphy, Louis Wicket (wil), Adrien Widart (awt), Michael de Villiers |
| WEBSITE | |
| WEBSITE | |
| LAST TRACKING UPDATE | |
| LAST TRACKING UPDATE | 2026-07-06 00:14:28 |
| ODOO DEPENDENCIES | |
| ODOO DEPENDENCIES |
odoo/odoo: - stock_account - stock - product - base - base_setup - web - bus - web_tour - uom - barcodes - digest - portal - web_editor - http_routing - auth_signup - resource - account - analytic - purchase_stock - purchase |
| PYTHON DEPENDENCIES | |
| PYTHON DEPENDENCIES | Not have |
| SYSTEM DEPENDENCIES | |
| SYSTEM DEPENDENCIES | Not have |
| DESCRIPTION | |
| DESCRIPTION |
Landed Costs Management
=======================
This module allows you to easily add extra costs on pickings and decide the split of these costs among their stock moves in order to take them into account in your stock valuation.
|
| XML ID | Name | Model | Type | Status |
|---|---|---|---|---|
account_view_move_form_inherited |
account.view.move.form.inherited | account.move | xpath | Inherits account.view_move_form |
res_config_settings_view_form |
res.config.settings.view.form.inherit.stock.landed.costs | res.config.settings | div | Inherits stock.res_config_settings_view_form |
stock_landed_cost_view_kanban |
stock.landed.cost.kanban | stock.landed.cost | kanban | New |
stock_valuation_layer_form_inherited |
stock.valuation.layer.form.inherited | stock.valuation.layer | xpath | Inherits stock_account.stock_valuation_layer_form |
view_product_landed_cost_form |
product.template.landed.cost.form | product.template | group | Inherits account.product_template_form_view |
view_stock_landed_cost_form |
stock.landed.cost.form | stock.landed.cost | form | New |
view_stock_landed_cost_search |
stock.landed.cost.search | stock.landed.cost | search | New |
view_stock_landed_cost_tree |
stock.landed.cost.tree | stock.landed.cost | tree | New |
view_stock_landed_cost_tree2 |
stock.landed.cost.tree | stock.landed.cost | tree | New |
landed_costs_ids
One2many → stock.landed.cost
string='Landed Costs'
args: 'stock.landed.cost', 'vendor_bill_id'
landed_costs_visible
Boolean
compute='_compute_landed_costs_visible'
action_view_landed_costs(self)
button_create_landed_costs(self)
is_landed_costs_line
Boolean
product_type
Selection
readonly=True
related='product_id.type'
No public methods.
landed_cost_ok
Boolean
help='Indicates whether the product is a landed cost.'
args: 'Is a Landed Cost'
split_method_landed_cost
Selection
help='Default Split Method when used for Landed Cost'
string='Default Split Method'
args: SPLIT_METHOD
write(self, vals)
No new fields.
Public methods (0)No public methods.
lc_journal_id
Many2one → account.journal
No public methods.
lc_journal_id
Many2one → account.journal
readonly=False
related='company_id.lc_journal_id'
string='Default Journal'
args: 'account.journal'
No public methods.
account_journal_id
Many2one → account.journal
default=<expr>
required=True
states={'done': [('readonly', True)]}
args: 'account.journal', 'Account Journal'
account_move_id
Many2one → account.move
copy=False
readonly=True
args: 'account.move', 'Journal Entry'
allowed_picking_ids
Many2many → stock.picking
compute='_compute_allowed_picking_ids'
args: 'stock.picking'
amount_total
Monetary
compute='_compute_total_amount'
store=True
tracking=True
args: 'Total'
company_id
Many2one → res.company
related='account_journal_id.company_id'
string='Company'
args: 'res.company'
cost_lines
One2many → stock.landed.cost.lines
copy=True
states={'done': [('readonly', True)]}
args: 'stock.landed.cost.lines', 'cost_id', 'Cost Lines'
currency_id
Many2one → res.currency
related='company_id.currency_id'
args: 'res.currency'
date
Date
copy=False
default=fields.Date.context_today
required=True
states={'done': [('readonly', True)]}
tracking=True
args: 'Date'
description
Text
states={'done': [('readonly', True)]}
args: 'Item Description'
name
Char
copy=False
default=<expr>
readonly=True
tracking=True
args: 'Name'
picking_ids
Many2many → stock.picking
copy=False
states={'done': [('readonly', True)]}
string='Transfers'
args: 'stock.picking'
state
Selection
copy=False
default='draft'
readonly=True
tracking=True
args: [('draft', 'Draft'), ('done', 'Posted'), ('cancel', 'Cancelled')], 'State'
stock_valuation_layer_ids
One2many → stock.valuation.layer
target_model
Selection
copy=False
default='picking'
required=True
states={'done': [('readonly', True)]}
string='Apply On'
args: [('picking', 'Transfers')]
valuation_adjustment_lines
One2many → stock.valuation.adjustment.lines
states={'done': [('readonly', True)]}
args: 'stock.valuation.adjustment.lines', 'cost_id', 'Valuation Adjustments'
vendor_bill_id
Many2one → account.move
copy=False
domain=[('move_type', '=', 'in_invoice')]
args: 'account.move', 'Vendor Bill'
action_view_stock_valuation_layers(self)
button_cancel(self)
button_validate(self)
compute_landed_cost(self)
create(self, vals)
get_valuation_lines(self)
unlink(self)
account_id
Many2one → account.account
domain=[('deprecated', '=', False)]
args: 'account.account', 'Account'
cost_id
Many2one → stock.landed.cost
ondelete='cascade'
required=True
args: 'stock.landed.cost', 'Landed Cost'
currency_id
Many2one → res.currency
related='cost_id.currency_id'
args: 'res.currency'
name
Char
price_unit
Monetary
required=True
args: 'Cost'
product_id
Many2one → product.product
required=True
args: 'product.product', 'Product'
split_method
Selection
help="Equal : Cost will be equally divided.\nBy Quantity : Cost will be divided according to product's quantity.\nBy Current cost : Cost will be divided according to product's current cost.\nBy Weight : Cost will be divided depending on its weight.\nBy Volume : Cost will be divided depending on its volume."
required=True
string='Split Method'
args: SPLIT_METHOD
onchange_product_id(self)
additional_landed_cost
Monetary
cost_id
Many2one → stock.landed.cost
ondelete='cascade'
required=True
args: 'stock.landed.cost', 'Landed Cost'
cost_line_id
Many2one → stock.landed.cost.lines
readonly=True
args: 'stock.landed.cost.lines', 'Cost Line'
currency_id
Many2one → res.currency
related='cost_id.company_id.currency_id'
args: 'res.currency'
final_cost
Monetary
compute='_compute_final_cost'
store=True
args: 'New Value'
former_cost
Monetary
move_id
Many2one → stock.move
readonly=True
args: 'stock.move', 'Stock Move'
name
Char
compute='_compute_name'
store=True
args: 'Description'
product_id
Many2one → product.product
required=True
args: 'product.product', 'Product'
quantity
Float
default=1.0
digits=0
required=True
args: 'Quantity'
volume
Float
default=1.0
digits='Volume'
args: 'Volume'
weight
Float
default=1.0
digits='Stock Weight'
args: 'Weight'
No public methods.
stock_landed_cost_id
Many2one → stock.landed.cost
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/13.0/stock_landed_costs |
| VERSION | |
| VERSION | 1.1 |
| CATEGORY | |
| CATEGORY | Operations/Inventory |
| LICENSE | |
| LICENSE | LGPL-3 |
| APPLICATION | |
| APPLICATION | No |
| AUTO-INSTALLABLE | |
| AUTO-INSTALLABLE | No |
| AUTHORS | |
| AUTHORS | |
| MAINTAINERS | |
| MAINTAINERS | |
| COMMITTERS | |
| COMMITTERS | Odoo Translation Bot, Martin Trigaux, Thibault Delavallée, Denis Ledoux, Christophe Simonis, Xavier Morel, Goffin Simon, Simon Lejeune, Nicolas Martinelli, qdp-odoo, Pedro M. Baeza, Damien Bouvy, Yannick Tivisse, Martin Geubelle, Odoo Online, Jorge Pinna Puissant, Alexandre Kühn, Arnold Moyaux, Adrian Torres, wan, XavierDo, Xavier-Do, Andrea Grazioso (agr-odoo), William Henrotin, Sébastien Theys, Alvaro Fuentes, Ivan Yelizariev, Rémy Voet (ryv), fja-odoo, Djamel (otd), Pratima Gupta |
| WEBSITE | |
| WEBSITE | |
| LAST TRACKING UPDATE | |
| LAST TRACKING UPDATE | 2026-07-06 00:06:42 |
| ODOO DEPENDENCIES | |
| ODOO DEPENDENCIES |
odoo/odoo: - stock_account - stock - product - base - base_setup - web - bus - web_tour - uom - barcodes - account - analytic - portal - web_editor - http_routing - auth_signup - digest - resource - purchase_stock - purchase |
| PYTHON DEPENDENCIES | |
| PYTHON DEPENDENCIES | Not have |
| SYSTEM DEPENDENCIES | |
| SYSTEM DEPENDENCIES | Not have |
| DESCRIPTION | |
| DESCRIPTION |
Landed Costs Management
=======================
This module allows you to easily add extra costs on pickings and decide the split of these costs among their stock moves in order to take them into account in your stock valuation.
|
| XML ID | Name | Model | Type | Status |
|---|---|---|---|---|
account_view_move_form_inherited |
account.view.move.form.inherited | account.move | xpath | Inherits account.view_move_form |
res_config_settings_view_form |
res.config.settings.view.form.inherit.stock.landed.costs | res.config.settings | div | Inherits stock.res_config_settings_view_form |
stock_landed_cost_view_kanban |
stock.landed.cost.kanban | stock.landed.cost | kanban | New |
stock_valuation_layer_form_inherited |
stock.valuation.layer.form.inherited | stock.valuation.layer | xpath | Inherits stock_account.stock_valuation_layer_form |
view_product_landed_cost_form |
product.template.landed.cost.form | product.template | group | Inherits account.product_template_form_view |
view_stock_landed_cost_form |
stock.landed.cost.form | stock.landed.cost | form | New |
view_stock_landed_cost_search |
stock.landed.cost.search | stock.landed.cost | search | New |
view_stock_landed_cost_tree |
stock.landed.cost.tree | stock.landed.cost | tree | New |
view_stock_landed_cost_tree2 |
stock.landed.cost.tree | stock.landed.cost | tree | New |
landed_costs_ids
One2many → stock.landed.cost
string='Landed Costs'
args: 'stock.landed.cost', 'vendor_bill_id'
landed_costs_visible
Boolean
compute='_compute_landed_costs_visible'
action_view_landed_costs(self)
button_create_landed_costs(self)
is_landed_costs_line
Boolean
product_type
Selection
readonly=True
related='product_id.type'
No public methods.
landed_cost_ok
Boolean
help='Indicates whether the product is a landed cost.'
args: 'Is a Landed Cost'
write(self, vals)
No new fields.
Public methods (0)No public methods.
lc_journal_id
Many2one → account.journal
No public methods.
lc_journal_id
Many2one → account.journal
readonly=False
related='company_id.lc_journal_id'
string='Default Journal'
args: 'account.journal'
No public methods.
account_journal_id
Many2one → account.journal
default=<expr>
required=True
states={'done': [('readonly', True)]}
args: 'account.journal', 'Account Journal'
account_move_id
Many2one → account.move
copy=False
readonly=True
args: 'account.move', 'Journal Entry'
allowed_picking_ids
Many2many → stock.picking
compute='_compute_allowed_picking_ids'
args: 'stock.picking'
amount_total
Float
compute='_compute_total_amount'
digits=0
store=True
tracking=True
args: 'Total'
company_id
Many2one → res.company
related='account_journal_id.company_id'
string='Company'
args: 'res.company'
cost_lines
One2many → stock.landed.cost.lines
copy=True
states={'done': [('readonly', True)]}
args: 'stock.landed.cost.lines', 'cost_id', 'Cost Lines'
currency_id
Many2one → res.currency
related='company_id.currency_id'
args: 'res.currency'
date
Date
copy=False
default=fields.Date.context_today
required=True
states={'done': [('readonly', True)]}
tracking=True
args: 'Date'
description
Text
states={'done': [('readonly', True)]}
args: 'Item Description'
name
Char
copy=False
default=<expr>
readonly=True
tracking=True
args: 'Name'
picking_ids
Many2many → stock.picking
copy=False
states={'done': [('readonly', True)]}
string='Transfers'
args: 'stock.picking'
state
Selection
copy=False
default='draft'
readonly=True
tracking=True
args: [('draft', 'Draft'), ('done', 'Posted'), ('cancel', 'Cancelled')], 'State'
stock_valuation_layer_ids
One2many → stock.valuation.layer
valuation_adjustment_lines
One2many → stock.valuation.adjustment.lines
states={'done': [('readonly', True)]}
args: 'stock.valuation.adjustment.lines', 'cost_id', 'Valuation Adjustments'
vendor_bill_id
Many2one → account.move
copy=False
domain=[('type', '=', 'in_invoice')]
args: 'account.move', 'Vendor Bill'
action_view_stock_valuation_layers(self)
button_cancel(self)
button_validate(self)
compute_landed_cost(self)
create(self, vals)
get_valuation_lines(self)
unlink(self)
account_id
Many2one → account.account
domain=[('deprecated', '=', False)]
args: 'account.account', 'Account'
cost_id
Many2one → stock.landed.cost
ondelete='cascade'
required=True
args: 'stock.landed.cost', 'Landed Cost'
name
Char
price_unit
Float
digits='Product Price'
required=True
args: 'Cost'
product_id
Many2one → product.product
required=True
args: 'product.product', 'Product'
split_method
Selection
required=True
string='Split Method'
args: SPLIT_METHOD
onchange_product_id(self)
additional_landed_cost
Float
digits='Product Price'
args: 'Additional Landed Cost'
cost_id
Many2one → stock.landed.cost
ondelete='cascade'
required=True
args: 'stock.landed.cost', 'Landed Cost'
cost_line_id
Many2one → stock.landed.cost.lines
readonly=True
args: 'stock.landed.cost.lines', 'Cost Line'
currency_id
Many2one → res.currency
related='cost_id.company_id.currency_id'
args: 'res.currency'
final_cost
Float
compute='_compute_final_cost'
digits=0
store=True
args: 'New Value'
former_cost
Float
digits='Product Price'
args: 'Original Value'
move_id
Many2one → stock.move
readonly=True
args: 'stock.move', 'Stock Move'
name
Char
compute='_compute_name'
store=True
args: 'Description'
product_id
Many2one → product.product
required=True
args: 'product.product', 'Product'
quantity
Float
default=1.0
digits=0
required=True
args: 'Quantity'
volume
Float
default=1.0
digits='Volume'
args: 'Volume'
weight
Float
default=1.0
digits='Stock Weight'
args: 'Weight'
No public methods.
stock_landed_cost_id
Many2one → stock.landed.cost
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/12.0/stock_landed_costs |
| VERSION | |
| VERSION | 1.1 |
| CATEGORY | |
| CATEGORY | Warehouse |
| LICENSE | |
| LICENSE | LGPL-3 |
| APPLICATION | |
| APPLICATION | No |
| AUTO-INSTALLABLE | |
| AUTO-INSTALLABLE | No |
| AUTHORS | |
| AUTHORS | |
| MAINTAINERS | |
| MAINTAINERS | |
| COMMITTERS | |
| COMMITTERS | Odoo Translation Bot, Martin Trigaux, Fabien Pinckaers, Thibault Delavallée, Christophe Simonis, Nicolas Martinelli, Nicolas Lempereur, qdp-odoo, Géry Debongnie, GitHub, Yannick Tivisse, Alexandre Kühn, qsm-odoo, Pierre Masereel, jem-odoo, Christophe Monniez, Nans Lefebvre, Adrian Torres, XavierDo, Xavier-Do |
| WEBSITE | |
| WEBSITE | |
| LAST TRACKING UPDATE | |
| LAST TRACKING UPDATE | 2026-07-05 23:57:01 |
| ODOO DEPENDENCIES | |
| ODOO DEPENDENCIES |
odoo/odoo: - stock_account - stock - product - base - decimal_precision - base_setup - web - bus - web_tour - uom - barcodes - account - analytic - portal - http_routing - digest - purchase_stock - purchase |
| PYTHON DEPENDENCIES | |
| PYTHON DEPENDENCIES | Not have |
| SYSTEM DEPENDENCIES | |
| SYSTEM DEPENDENCIES | Not have |
| DESCRIPTION | |
| DESCRIPTION |
Landed Costs Management
=======================
This module allows you to easily add extra costs on pickings and decide the split of these costs among their stock moves in order to take them into account in your stock valuation.
|
| XML ID | Name | Model | Type | Status |
|---|---|---|---|---|
res_config_settings_view_form |
res.config.settings.view.form.inherit.stock.landed.costs | res.config.settings | div | Inherits stock.res_config_settings_view_form |
stock_landed_cost_tree_view |
product.product.tree | product.product | tree | New |
stock_landed_cost_view_kanban |
stock.landed.cost.kanban | stock.landed.cost | kanban | New |
view_product_landed_cost_form |
product.template.landed.cost.form | product.template | xpath | Inherits purchase.view_product_supplier_inherit |
view_stock_landed_cost_form |
stock.landed.cost.form | stock.landed.cost | form | New |
view_stock_landed_cost_search |
stock.landed.cost.search | stock.landed.cost | search | New |
view_stock_landed_cost_tree |
stock.landed.cost.tree | stock.landed.cost | tree | New |
view_stock_landed_cost_type_form |
stock.landed.cost.type.form | product.product | form | New |
landed_cost_ok
Boolean
help='Indicates whether the product is a landed cost.'
args: 'Is a Landed Cost'
split_method
Selection
default='equal'
help="Equal : Cost will be equally divided.\nBy Quantity : Cost will be divided according to product's quantity.\nBy Current cost : Cost will be divided according to product's current cost.\nBy Weight : Cost will be divided depending on its weight.\nBy Volume : Cost will be divided depending on its volume."
selection=SPLIT_METHOD
string='Split Method'
No public methods.
account_journal_id
Many2one → account.journal
required=True
states={'done': [('readonly', True)]}
args: 'account.journal', 'Account Journal'
account_move_id
Many2one → account.move
copy=False
readonly=True
args: 'account.move', 'Journal Entry'
amount_total
Float
compute='_compute_total_amount'
digits=0
store=True
track_visibility='always'
args: 'Total'
company_id
Many2one → res.company
readonly=False
related='account_journal_id.company_id'
string='Company'
args: 'res.company'
cost_lines
One2many → stock.landed.cost.lines
copy=True
states={'done': [('readonly', True)]}
args: 'stock.landed.cost.lines', 'cost_id', 'Cost Lines'
date
Date
copy=False
default=fields.Date.context_today
required=True
states={'done': [('readonly', True)]}
track_visibility='onchange'
args: 'Date'
description
Text
states={'done': [('readonly', True)]}
args: 'Item Description'
name
Char
copy=False
default=<expr>
readonly=True
track_visibility='always'
args: 'Name'
picking_ids
Many2many → stock.picking
copy=False
states={'done': [('readonly', True)]}
string='Transfers'
args: 'stock.picking'
state
Selection
copy=False
default='draft'
readonly=True
track_visibility='onchange'
args: [('draft', 'Draft'), ('done', 'Posted'), ('cancel', 'Cancelled')], 'State'
valuation_adjustment_lines
One2many → stock.valuation.adjustment.lines
states={'done': [('readonly', True)]}
args: 'stock.valuation.adjustment.lines', 'cost_id', 'Valuation Adjustments'
button_cancel(self)
button_validate(self)
compute_landed_cost(self)
create(self, vals)
get_valuation_lines(self)
unlink(self)
account_id
Many2one → account.account
domain=[('deprecated', '=', False)]
args: 'account.account', 'Account'
cost_id
Many2one → stock.landed.cost
ondelete='cascade'
required=True
args: 'stock.landed.cost', 'Landed Cost'
name
Char
price_unit
Float
digits=dp.get_precision('Product Price')
required=True
args: 'Cost'
product_id
Many2one → product.product
required=True
args: 'product.product', 'Product'
split_method
Selection
required=True
string='Split Method'
args: product.SPLIT_METHOD
onchange_product_id(self)
landed_cost_value
Float
No public methods.
additional_landed_cost
Float
digits=dp.get_precision('Product Price')
args: 'Additional Landed Cost'
cost_id
Many2one → stock.landed.cost
ondelete='cascade'
required=True
args: 'stock.landed.cost', 'Landed Cost'
cost_line_id
Many2one → stock.landed.cost.lines
readonly=True
args: 'stock.landed.cost.lines', 'Cost Line'
final_cost
Float
compute='_compute_final_cost'
digits=0
store=True
args: 'Final Cost'
former_cost
Float
digits=dp.get_precision('Product Price')
args: 'Former Cost'
former_cost_per_unit
Float
compute='_compute_former_cost_per_unit'
digits=0
store=True
args: 'Former Cost(Per Unit)'
move_id
Many2one → stock.move
readonly=True
args: 'stock.move', 'Stock Move'
name
Char
compute='_compute_name'
store=True
args: 'Description'
product_id
Many2one → product.product
required=True
args: 'product.product', 'Product'
quantity
Float
default=1.0
digits=0
required=True
args: 'Quantity'
volume
Float
default=1.0
args: 'Volume'
weight
Float
default=1.0
digits=dp.get_precision('Stock Weight')
args: 'Weight'
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/11.0/stock_landed_costs |
| VERSION | |
| VERSION | 1.1 |
| CATEGORY | |
| CATEGORY | Warehouse |
| LICENSE | |
| LICENSE | LGPL-3 |
| APPLICATION | |
| APPLICATION | No |
| AUTO-INSTALLABLE | |
| AUTO-INSTALLABLE | No |
| AUTHORS | |
| AUTHORS | |
| MAINTAINERS | |
| MAINTAINERS | |
| COMMITTERS | |
| COMMITTERS | Odoo Translation Bot, Martin Trigaux, Olivier Dony, Josse Colpaert, Christophe Simonis, Joren Van Onder, Goffin Simon, Simon Lejeune, Nicolas Martinelli, GitHub, Yannick Tivisse, Odoo Online |
| WEBSITE | |
| WEBSITE | https://www.odoo.com/page/warehouse |
| LAST TRACKING UPDATE | |
| LAST TRACKING UPDATE | 2026-07-05 23:53:42 |
| ODOO DEPENDENCIES | |
| ODOO DEPENDENCIES |
odoo/odoo: - stock_account - stock - product - base - decimal_precision - base_setup - web - bus - web_tour - barcodes - web_planner - account - analytic - portal - http_routing - purchase |
| PYTHON DEPENDENCIES | |
| PYTHON DEPENDENCIES | Not have |
| SYSTEM DEPENDENCIES | |
| SYSTEM DEPENDENCIES | Not have |
| DESCRIPTION | |
| DESCRIPTION |
Landed Costs Management
=======================
This module allows you to easily add extra costs on pickings and decide the split of these costs among their stock moves in order to take them into account in your stock valuation.
|
| XML ID | Name | Model | Type | Status |
|---|---|---|---|---|
res_config_settings_view_form |
res.config.settings.view.form.inherit.stock.landed.costs | res.config.settings | div | Inherits stock.res_config_settings_view_form |
stock_landed_cost_tree_view |
product.product.tree | product.product | tree | New |
view_product_landed_cost_form |
product.template.landed.cost.form | product.template | group | Inherits purchase.view_product_supplier_inherit |
view_stock_landed_cost_form |
stock.landed.cost.form | stock.landed.cost | form | New |
view_stock_landed_cost_search |
stock.landed.cost.search | stock.landed.cost | search | New |
view_stock_landed_cost_tree |
stock.landed.cost.tree | stock.landed.cost | tree | New |
view_stock_landed_cost_type_form |
stock.landed.cost.type.form | product.product | form | New |
landed_cost_ok
Boolean
split_method
Selection
default='equal'
help="Equal : Cost will be equally divided.\nBy Quantity : Cost will be divided according to product's quantity.\nBy Current cost : Cost will be divided according to product's current cost.\nBy Weight : Cost will be divided depending on its weight.\nBy Volume : Cost will be divided depending on its volume."
selection=SPLIT_METHOD
string='Split Method'
No public methods.
account_journal_id
Many2one → account.journal
required=True
states={'done': [('readonly', True)]}
args: 'account.journal', 'Account Journal'
account_move_id
Many2one → account.move
copy=False
readonly=True
args: 'account.move', 'Journal Entry'
amount_total
Float
compute='_compute_total_amount'
digits=0
store=True
track_visibility='always'
args: 'Total'
company_id
Many2one → res.company
related='account_journal_id.company_id'
string='Company'
args: 'res.company'
cost_lines
One2many → stock.landed.cost.lines
copy=True
states={'done': [('readonly', True)]}
args: 'stock.landed.cost.lines', 'cost_id', 'Cost Lines'
date
Date
copy=False
default=fields.Date.context_today
required=True
states={'done': [('readonly', True)]}
track_visibility='onchange'
args: 'Date'
description
Text
states={'done': [('readonly', True)]}
args: 'Item Description'
name
Char
copy=False
default=<expr>
readonly=True
track_visibility='always'
args: 'Name'
picking_ids
Many2many → stock.picking
copy=False
states={'done': [('readonly', True)]}
string='Pickings'
args: 'stock.picking'
state
Selection
copy=False
default='draft'
readonly=True
track_visibility='onchange'
args: [('draft', 'Draft'), ('done', 'Posted'), ('cancel', 'Cancelled')], 'State'
valuation_adjustment_lines
One2many → stock.valuation.adjustment.lines
states={'done': [('readonly', True)]}
args: 'stock.valuation.adjustment.lines', 'cost_id', 'Valuation Adjustments'
button_cancel(self)
button_validate(self)
compute_landed_cost(self)
create(self, vals)
get_valuation_lines(self)
unlink(self)
account_id
Many2one → account.account
domain=[('deprecated', '=', False)]
args: 'account.account', 'Account'
cost_id
Many2one → stock.landed.cost
ondelete='cascade'
required=True
args: 'stock.landed.cost', 'Landed Cost'
name
Char
price_unit
Float
digits=dp.get_precision('Product Price')
required=True
args: 'Cost'
product_id
Many2one → product.product
required=True
args: 'product.product', 'Product'
split_method
Selection
required=True
string='Split Method'
args: product.SPLIT_METHOD
onchange_product_id(self)
landed_cost_value
Float
No public methods.
additional_landed_cost
Float
digits=dp.get_precision('Product Price')
args: 'Additional Landed Cost'
cost_id
Many2one → stock.landed.cost
ondelete='cascade'
required=True
args: 'stock.landed.cost', 'Landed Cost'
cost_line_id
Many2one → stock.landed.cost.lines
readonly=True
args: 'stock.landed.cost.lines', 'Cost Line'
final_cost
Float
compute='_compute_final_cost'
digits=0
store=True
args: 'Final Cost'
former_cost
Float
digits=dp.get_precision('Product Price')
args: 'Former Cost'
former_cost_per_unit
Float
compute='_compute_former_cost_per_unit'
digits=0
store=True
args: 'Former Cost(Per Unit)'
move_id
Many2one → stock.move
readonly=True
args: 'stock.move', 'Stock Move'
name
Char
compute='_compute_name'
store=True
args: 'Description'
product_id
Many2one → product.product
required=True
args: 'product.product', 'Product'
quantity
Float
default=1.0
digits=0
required=True
args: 'Quantity'
volume
Float
default=1.0
args: 'Volume'
weight
Float
default=1.0
digits=dp.get_precision('Stock Weight')
args: 'Weight'
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_landed_costs |
| VERSION | |
| VERSION | 1.1 |
| CATEGORY | |
| CATEGORY | Warehouse |
| LICENSE | |
| LICENSE | LGPL-3 |
| APPLICATION | |
| APPLICATION | No |
| AUTO-INSTALLABLE | |
| AUTO-INSTALLABLE | No |
| AUTHORS | |
| AUTHORS | |
| MAINTAINERS | |
| MAINTAINERS | |
| COMMITTERS | |
| COMMITTERS | Odoo Translation Bot, Martin Trigaux, Olivier Dony, Thibault Delavallée, Denis Ledoux, Christophe Simonis, David Monjoie, Nicolas Martinelli, Julien Legros, Richard Mathot, qdp-odoo, Lucas Perais (lpe), Yannick Tivisse |
| 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: - stock_account - stock - product - base - decimal_precision - base_setup - web_kanban - web - bus - web_tour - report - procurement - barcodes - web_planner - account - analytic - purchase |
| PYTHON DEPENDENCIES | |
| PYTHON DEPENDENCIES | Not have |
| SYSTEM DEPENDENCIES | |
| SYSTEM DEPENDENCIES | Not have |
| DESCRIPTION | |
| DESCRIPTION |
Landed Costs Management
=======================
This module allows you to easily add extra costs on pickings and decide the split of these costs among their stock moves in order to take them into account in your stock valuation.
|
| XML ID | Name | Model | Type | Status |
|---|---|---|---|---|
stock_landed_cost_tree_view |
product.product.tree | product.product | tree | New |
view_product_landed_cost_form |
product.template.landed.cost.form | product.template | group | Inherits product.product_template_form_view |
view_stock_landed_cost_form |
stock.landed.cost.form | stock.landed.cost | form | New |
view_stock_landed_cost_search |
stock.landed.cost.search | stock.landed.cost | search | New |
view_stock_landed_cost_tree |
stock.landed.cost.tree | stock.landed.cost | tree | New |
view_stock_landed_cost_type_form |
stock.landed.cost.type.form | product.product | form | New |
landed_cost_ok
Boolean
split_method
Selection
default='equal'
help="Equal : Cost will be equally divided.\nBy Quantity : Cost will be divided according to product's quantity.\nBy Current cost : Cost will be divided according to product's current cost.\nBy Weight : Cost will be divided depending on its weight.\nBy Volume : Cost will be divided depending on its volume."
selection=SPLIT_METHOD
string='Split Method'
No public methods.
No new fields.
Public methods (1)onchange_costing_method(self)
account_journal_id
Many2one → account.journal
required=True
states={'done': [('readonly', True)]}
args: 'account.journal', 'Account Journal'
account_move_id
Many2one → account.move
copy=False
readonly=True
args: 'account.move', 'Journal Entry'
amount_total
Float
compute='_compute_total_amount'
digits=0
store=True
track_visibility='always'
args: 'Total'
cost_lines
One2many → stock.landed.cost.lines
copy=True
states={'done': [('readonly', True)]}
args: 'stock.landed.cost.lines', 'cost_id', 'Cost Lines'
date
Date
copy=False
default=fields.Date.context_today
required=True
states={'done': [('readonly', True)]}
track_visibility='onchange'
args: 'Date'
description
Text
states={'done': [('readonly', True)]}
args: 'Item Description'
name
Char
copy=False
default=<expr>
readonly=True
track_visibility='always'
args: 'Name'
picking_ids
Many2many → stock.picking
copy=False
states={'done': [('readonly', True)]}
string='Pickings'
args: 'stock.picking'
state
Selection
copy=False
default='draft'
readonly=True
track_visibility='onchange'
args: [('draft', 'Draft'), ('done', 'Posted'), ('cancel', 'Cancelled')], 'State'
valuation_adjustment_lines
One2many → stock.valuation.adjustment.lines
states={'done': [('readonly', True)]}
args: 'stock.valuation.adjustment.lines', 'cost_id', 'Valuation Adjustments'
button_cancel(self)
button_validate(self)
compute_landed_cost(self)
create(self, vals)
get_valuation_lines(self)
unlink(self)
account_id
Many2one → account.account
domain=[('deprecated', '=', False)]
args: 'account.account', 'Account'
cost_id
Many2one → stock.landed.cost
ondelete='cascade'
required=True
args: 'stock.landed.cost', 'Landed Cost'
name
Char
price_unit
Float
digits=dp.get_precision('Product Price')
required=True
args: 'Cost'
product_id
Many2one → product.product
required=True
args: 'product.product', 'Product'
split_method
Selection
required=True
string='Split Method'
args: product.SPLIT_METHOD
onchange_product_id(self)
additional_landed_cost
Float
digits=dp.get_precision('Product Price')
args: 'Additional Landed Cost'
cost_id
Many2one → stock.landed.cost
ondelete='cascade'
required=True
args: 'stock.landed.cost', 'Landed Cost'
cost_line_id
Many2one → stock.landed.cost.lines
readonly=True
args: 'stock.landed.cost.lines', 'Cost Line'
final_cost
Float
compute='_compute_final_cost'
digits=0
store=True
args: 'Final Cost'
former_cost
Float
digits=dp.get_precision('Product Price')
args: 'Former Cost'
former_cost_per_unit
Float
compute='_compute_former_cost_per_unit'
digits=0
store=True
args: 'Former Cost(Per Unit)'
move_id
Many2one → stock.move
readonly=True
args: 'stock.move', 'Stock Move'
name
Char
compute='_compute_name'
store=True
args: 'Description'
product_id
Many2one → product.product
required=True
args: 'product.product', 'Product'
quantity
Float
default=1.0
digits=0
required=True
args: 'Quantity'
volume
Float
default=1.0
args: 'Volume'
weight
Float
default=1.0
digits=dp.get_precision('Stock Weight')
args: 'Weight'
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_landed_costs |
| VERSION | |
| VERSION | 1.1 |
| CATEGORY | |
| CATEGORY | Warehouse |
| LICENSE | |
| LICENSE | LGPL-3 |
| APPLICATION | |
| APPLICATION | No |
| AUTO-INSTALLABLE | |
| AUTO-INSTALLABLE | No |
| AUTHORS | |
| AUTHORS | |
| MAINTAINERS | |
| MAINTAINERS | |
| COMMITTERS | |
| COMMITTERS | Odoo Translation Bot, Martin Trigaux, Fabien Pinckaers, Olivier Dony, Thibault Delavallée, Josse Colpaert, Denis Ledoux, Christophe Simonis, Joren Van Onder, Nicolas Martinelli, Richard Mathot, qdp-odoo, Damien Bouvy, Yannick Tivisse, qsm-odoo |
| WEBSITE | |
| WEBSITE | https://www.odoo.com/page/warehouse |
| LAST TRACKING UPDATE | |
| LAST TRACKING UPDATE | 2026-07-05 23:48:30 |
| ODOO DEPENDENCIES | |
| ODOO DEPENDENCIES |
odoo/odoo: - stock_account - stock - product - base - decimal_precision - base_setup - web_kanban - web - bus - report - procurement - barcodes - web_planner - account - analytic - web_tip - purchase |
| PYTHON DEPENDENCIES | |
| PYTHON DEPENDENCIES | Not have |
| SYSTEM DEPENDENCIES | |
| SYSTEM DEPENDENCIES | Not have |
| DESCRIPTION | |
| DESCRIPTION |
Landed Costs Management
=======================
This module allows you to easily add extra costs on pickings and decide the split of these costs among their stock moves in order to take them into account in your stock valuation.
|
| XML ID | Name | Model | Type | Status |
|---|---|---|---|---|
stock_landed_cost_tree_view |
product.product.tree | product.product | tree | New |
view_product_landed_cost_form |
product.template.landed.cost.form | product.template | group | Inherits product.product_template_form_view |
view_stock_landed_cost_form |
stock.landed.cost.form | stock.landed.cost | form | New |
view_stock_landed_cost_search |
stock.landed.cost.search | stock.landed.cost | search | New |
view_stock_landed_cost_tree |
stock.landed.cost.tree | stock.landed.cost | tree | New |
view_stock_landed_cost_type_form |
stock.landed.cost.type.form | product.product | form | New |
No new fields.
Public methods (1)onchange_costing_method(self)
| 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_landed_costs |
| VERSION | |
| VERSION | 1.1 |
| CATEGORY | |
| CATEGORY | Warehouse Management |
| LICENSE | |
| LICENSE | LGPL-3 |
| APPLICATION | |
| APPLICATION | No |
| AUTO-INSTALLABLE | |
| AUTO-INSTALLABLE | No |
| AUTHORS | |
| AUTHORS | OpenERP SA |
| MAINTAINERS | |
| MAINTAINERS | OpenERP SA |
| COMMITTERS | |
| COMMITTERS | Odoo Translation Bot, Christophe Matthieu, Martin Trigaux, Fabien Pinckaers, Antony Lesuisse, Olivier Dony, Josse Colpaert, Quentin (OpenERP), Denis Ledoux, Fabien Meghazi, Goffin Simon, Nicolas Martinelli, Nicolas Lempereur, Richard Mathot, qdp-odoo, Géry Debongnie, Aaron Bohy, ged-odoo, Grover Menacho, DJ Patel, Mansi Kariya (OpenERP) |
| WEBSITE | |
| WEBSITE | https://www.odoo.com/page/warehouse |
| LAST TRACKING UPDATE | |
| LAST TRACKING UPDATE | 2026-07-05 23:45:39 |
| ODOO DEPENDENCIES | |
| ODOO DEPENDENCIES |
odoo/odoo: - stock_account - stock - product - base - decimal_precision - base_setup - web_kanban - web - report - procurement - board - web_kanban_gauge - web_kanban_sparkline - account - analytic - edi - email_template |
| PYTHON DEPENDENCIES | |
| PYTHON DEPENDENCIES | Not have |
| SYSTEM DEPENDENCIES | |
| SYSTEM DEPENDENCIES | Not have |
| DESCRIPTION | |
| DESCRIPTION |
Landed Costs Management
=======================
This module allows you to easily add extra costs on pickings and decide the split of these costs among their stock moves in order to take them into account in your stock valuation.
|
| XML ID | Name | Model | Type | Status |
|---|---|---|---|---|
stock_landed_cost_tree_view |
product.product.tree | product.product | tree | New |
view_product_landed_cost_form |
product.template.landed.cost.form | product.template | div | Inherits product.product_template_form_view |
view_stock_landed_cost_form |
stock.landed.cost.form | stock.landed.cost | form | New |
view_stock_landed_cost_search |
stock.landed.cost.search | stock.landed.cost | search | New |
view_stock_landed_cost_tree |
stock.landed.cost.tree | stock.landed.cost | tree | New |
view_stock_landed_cost_type_form |
stock.landed.cost.type.form | product.product | form | New |
No models found for this module.