Repository
odoo/odoo · module folder
Module version
1.1
Category
Supply Chain/Inventory
Folder size
3.62 MB
License
LGPL-3
Application
No
Auto-installable
Yes
Website
None
Last tracking update
2026-08-21 10:10:58
Authors
Odoo S.A.
Maintainers
Odoo S.A.
Committers
Xavier Morel, Raphael Collet, Josse Colpaert, Odoo Translation Bot, Wolfgang Taferner, Laurent Smet, Arnold Moyaux, Julien Castiaux, Victor Feyens, Andrea Grazioso (agr-odoo), William Henrotin, svs-odoo, Rémy Voet (ryv), Tiffany Chang (tic), Gorash, Mathieu Duckerts-Antoine, William Braeckman, william-andre, JF Aubert, David (dafr), PNO, Aurelien van Delft (avd), Mathieu Walravens, luvi, Roy Le, Richard deMeester, Louis Wicket (wil), Pedram (PEBR), Adrien Widart (awt), Victor Piryns (pivi), Djamel Touati, Pieter Claeys (clpi), clesgow, Dylan Kiss (dyki), Jinane Maksoud, Odoo, Arnaud Sibille, InCeyN, lase@odoo.com, Quentin Wolfs, Aurelien MARIE (auma), Ethan Vincent, reka-odoo, Julien Carion (juca), kcv-odoo, Louis Gobert, nihp-odoo, Hussein Ebrahim(hyhe), Stéphane Diez, Aungkokolin1997, dhha-odoo, Hammad Arif, Hesham Saleh, Saif (segn), EmilioPascual, Victor Miguel Armenta Carrillo, Christopher Maloney (cmal), David Van Droogenbroeck (DROD), elhayyany, pkgu-odoo, Mohammad Abdulmoneim (abdu), djameltouati, khsr-odoo, jeep-odoo, MaximeNoirhomme, chha-odoo, bona-odoo, plha-odoo, Krzysztof Magusiak (krma), Akash Pandey, krip-odoo, Hazem Ibrahim, Robin Engels (roen), sagu-odoo, kdes-odoo, Ester Andreetto, bhna-odoo, defl, Dirk Douglas, Ze Chen (zeche), agbr-odoo, Lulu Grimalkin (lugr), Yash Pathak, rare-odoo, sawer, igbe, Lancelot Semal, Tudor-Calin Panzaru (tupan), Martin Doyen, Jacob Was (jacw), assh-odoo, Robert Smith (rosm), Jeremy Lawson (jelaw), hossamelgendy1, Merlin Guillaume, srap-odoo, saurabh, Nguyen Nguyen (ngtpn), Léo Gizard (legi), Abdelouahab Laaroussi (abla), Zachary (zavan), Abo Taha, Lars Quaedvlieg, lase, hapt-odoo, Youssef, ddba-odoo, Kai (kache), Karim Gamaleldin, Chengyan Wang, niyp-odoo, pvag-odoo, Dhrumit Parmar, ismail eski, Robert Smith
Odoo dependencies
Python dependencies
None
System dependencies
None
Required by
l10n_ar_stock, l10n_gcc_invoice_stock_account, l10n_it_stock_ddt, mrp_account, point_of_sale, product_brand_stock_account, project_stock_account, purchase_stock, sale_stock, spreadsheet_dashboard_stock_account, stock_analytic, stock_landed_costs, stock_move_value_report, stock_picking_return_refund_option
Description
WMS Accounting module
======================
This module makes the link between the 'stock' and 'account' modules and allows you to create accounting entries to value your stock movements

Key Features
------------
* Stock Valuation (periodical or automatic)
* Invoice from Picking

Dashboard / Reports for Warehouse Management includes:
------------------------------------------------------
* Stock Inventory Value at given date (support dates in the past)
    

Code Analysis

Views touched (22)
XML IDNameModelTypeStatus
product_product_stock_tree_inherit_stock_account product.product.stock.list.inherit.stock.account product.product list Inherits stock.product_product_stock_tree
product_product_view_list_at_date product.product.list.inherit.stock.account.at.date product.product list Inherits stock.view_stock_product_tree
product_template_tree_view product.template.list.inherit.stock.account product.template list Inherits product.product_template_tree_view
product_value_form_view product.value.form.view product.value form New
res_config_settings_view_form res.config.settings.view.form.inherit.stock.account res.config.settings form Inherits stock.res_config_settings_view_form
stock_account_report_invoice_document stock_account_report_invoice_document ir.ui.view qweb Inherits account.report_invoice_document
stock_avco_report_view_list stock.avco.report.view.list stock.avco.report list New
stock_inventory_adjustment_name_form_view_inherit_stock_account stock.inventory.adjustment.name.form.view.inherit.stock.account stock.inventory.adjustment.name form Inherits stock.stock_inventory_adjustment_name_form_view
stock_move_view_list stock.move.view.list.inherit.stock.account stock.move list Inherits stock.view_move_tree
stock_move_view_list_valuation stock.move.view.list.valuation stock.move list New
view_account_form account.account.form account.account form Inherits account.view_account_form
view_category_property_form product.category.stock.property.form.inherit product.category form Inherits account.view_category_property_form
view_category_property_form_stock product.category.stock.property.form.inherit.stock product.category form Inherits stock.product_category_form_view_inherit
view_location_form_inherit stock.location.form.inherit stock.location form Inherits stock.view_location_form
view_move_search stock.move.search.inherit.stock.account stock.move search Inherits stock.view_move_search
view_picking_form stock.account.view.picking.form stock.picking form Inherits stock.view_picking_form
view_production_lot_form_stock_account view.production.lot.form.stock.account stock.lot form Inherits stock.view_production_lot_form
view_stock_quant_tree_editable_inherit stock.quant.list.editable.inherit stock.quant list Inherits stock.view_stock_quant_tree_editable
view_stock_quant_tree_inherit stock.quant.list.inherit stock.quant list Inherits stock.view_stock_quant_tree
view_stock_quant_tree_inventory_editable_inherit_stock_account stock.quant.inventory.list.editable.inherit.stock.account stock.quant list Inherits stock.view_stock_quant_tree_inventory_editable
view_stock_return_picking_form_inherit_stock_account stock.return.picking.stock.account.form stock.return.picking form Inherits stock.view_stock_return_picking_form
view_template_property_form_stock_account view.template.property.form.stock.account product.template form Inherits stock.view_template_property_form
HTTP endpoints (0)

No HTTP endpoints found for this module.

Models touched (24)

New fields (2)
  • account_stock_expense_id Many2one → account.account
    help='Counterpart used at closing for accounting adjustments to inventory valuation.' string='Expense Account' args: 'account.account'
  • account_stock_variation_id Many2one → account.account
    help='At closing, register the inventory variation of the period into a specific account' string='Variation Account' args: 'account.account'
Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (1)
  • stock_move_ids One2many → stock.move
    string='Stock Move' args: 'stock.move', 'account_move_id'
Public methods (3)
  • button_cancel(self)
  • button_draft(self)
  • copy_data(self, default=None)

New fields (1)
  • cogs_origin_id Many2one → account.move.line
    comodel_name='account.move.line' copy=False index='btree_not_null'
Public methods (0)

No public methods.

New fields (7)
  • account_stock_variation_id Many2one → account.account
    readonly=False related='property_stock_valuation_account_id.account_stock_variation_id' string='Stock Variation Account' args: 'account.account'
  • anglo_saxon_accounting Boolean
    compute='_compute_anglo_saxon_accounting' help='If checked, the product will be valued using the Anglo-Saxon accounting method.' string='Use Anglo-Saxon Accounting'
  • property_cost_method Selection
    company_dependent=True copy=True default=<expr> help='Standard Price: The products are valued at their standard cost defined on the product.\n Average Cost (AVCO): The products are valued at weighted average cost.\n First In First Out (FIFO): The products are valued supposing those that enter the company first will also leave it first.\n ' selection=[('standard', 'Standard Price'), ('fifo', 'First In First Out (FIFO)'), ('average', 'Average Cost (AVCO)')] string='Costing Method' tracking=True
  • property_price_difference_account_id Many2one → account.account
    check_company=True company_dependent=True help='With perpetual valuation, this account will hold the price difference between the standard price and the bill price.' ondelete='restrict' args: 'account.account', 'Price Difference Account'
  • property_stock_journal Many2one → account.journal
    company_dependent=True help='When doing automated inventory valuation, this is the Accounting Journal in which entries will be automatically posted when stock moves are processed.' args: 'account.journal', 'Stock Journal'
  • property_stock_valuation_account_id Many2one → account.account
    check_company=True company_dependent=True help='When automated inventory valuation is enabled on a product, this account will hold the current value of the products.' ondelete='restrict' args: 'account.account', 'Stock Valuation Account'
  • property_valuation Selection
    company_dependent=True copy=True help='Periodic: The accounting entries are suggested manually in the inventory valuation report.\n Perpetual: An accounting entry is automatically created to value the inventory when a product is billed or invoiced.\n ' selection=[('periodic', 'Periodic (at closing)'), ('real_time', 'Perpetual (at invoicing)')] string='Inventory Valuation' tracking=True
Public methods (1)
  • write(self, vals)

New fields (3)
  • avg_cost Monetary
    compute='_compute_value' compute_sudo=True currency_field='company_currency_id' string='Average Cost'
  • company_currency_id Many2one → res.currency
    compute='_compute_value' compute_sudo=True help="Technical field to correctly show the currently selected company's currency that corresponds to the totaled value of the product's valuation layers" args: 'res.currency', 'Valuation Currency'
  • total_value Monetary
    compute='_compute_value' compute_sudo=True currency_field='company_currency_id' string='Total Value'
Public methods (2)
  • create(self, vals_list)
    @api.model_create_multi
  • write(self, vals)

New fields (4)
  • cost_method Selection
    compute='_compute_cost_method' selection=[('standard', 'Standard Price'), ('fifo', 'First In First Out (FIFO)'), ('average', 'Average Cost (AVCO)')] string='Cost Method'
  • lot_valuated Boolean
    compute='_compute_lot_valuated' help='If checked, the valuation will be specific by Lot/Serial number.' readonly=False store=True string='Valuation by Lot/Serial'
  • property_price_difference_account_id Many2one → account.account
    check_company=True company_dependent=True help='With perpetual valuation, this account will hold the price difference between the standard price and the bill price.' ondelete='restrict' args: 'account.account', 'Price Difference Account'
  • valuation Selection
    compute='_compute_valuation' search='_search_valuation' selection=[('periodic', 'Periodic (at closing)'), ('real_time', 'Perpetual (at invoicing)')] string='Valuation'
Public methods (2)
  • get_product_accounts(self, fiscal_pos=None)
    Add the stock journal related to product to the result of super() @return: dictionary which contains all needed information regarding stock accounts and journal and super (income+expense accounts)
  • write(self, vals)

New fields (13)
  • company_id Many2one → res.company
    compute='_compute_company_id' precompute=True readonly=False required=True store=True string='Company' args: 'res.company'
  • computed_value_description Text
    compute='_compute_value_description' string='Computed Value Description'
  • currency_id Many2one → res.currency
    related='company_id.currency_id' string='Currency' args: 'res.currency'
  • current_value Monetary
    currency_field='currency_id' related='move_id.value' string='Current Value'
  • current_value_description Text
    compute='_compute_value_description' string='Current Value Description'
  • current_value_details Char
    compute='_compute_current_value_details' string='Current Value Details'
  • date Datetime
    default=fields.Datetime.now required=True string='Date'
  • description Char
    string='Description'
  • lot_id Many2one → stock.lot
    string='Lot' args: 'stock.lot'
  • move_id Many2one → stock.move
    index='btree_not_null' string='Move' args: 'stock.move'
  • product_id Many2one → product.product
    index=True string='Product' args: 'product.product'
  • user_id Many2one → res.users
    default=<expr> required=True string='User' args: 'res.users'
  • value Monetary
    currency_field='currency_id' required=True string='Value'
Public methods (1)
  • create(self, vals_list)
    @api.model_create_multi

New fields (7)
  • account_production_wip_account_id Many2one → account.account
    check_company=True string='Production WIP Account' args: 'account.account'
  • account_production_wip_overhead_account_id Many2one → account.account
    check_company=True string='Production WIP Overhead Account' args: 'account.account'
  • account_stock_journal_id Many2one → account.journal
    check_company=True string='Stock Journal' args: 'account.journal'
  • account_stock_valuation_id Many2one → account.account
    check_company=True string='Stock Valuation Account' args: 'account.account'
  • cost_method Selection
    default='standard' required=True selection=[('standard', 'Standard Price'), ('fifo', 'First In First Out (FIFO)'), ('average', 'Average Cost (AVCO)')] string='Cost Method'
  • inventory_period Selection
    default='manual' required=True selection=[('manual', 'Manual'), ('daily', 'Daily'), ('monthly', 'Monthly')] string='Inventory Period'
  • inventory_valuation Selection
    default='periodic' selection=[('periodic', 'Periodic (at closing)'), ('real_time', 'Perpetual (at invoicing)')] string='Valuation'
Public methods (3)
  • action_close_stock_valuation(self, at_date=None, auto_post=False)
  • stock_accounting_value(self, accounts_by_product=None, at_date=None)
  • stock_value(self, accounts_by_product=None, at_date=None)

New fields (2)
  • group_lot_on_invoice Boolean
    implied_group='stock_account.group_lot_on_invoice' args: 'Display Lots & Serial Numbers on Invoices'
  • module_stock_landed_costs Boolean
    help='Affect landed costs on reception operations and split them among products to update their cost price.' args: 'Landed Costs'
Public methods (0)

No public methods.

New fields (15)
  • added_value Float
    compute='_compute_cumulative_fields' string='Added Value'
  • avco_value Float
    compute='_compute_cumulative_fields' string='AVCO Value'
  • company_id Many2one → res.company
    required=True string='Company' args: 'res.company'
  • currency_id Many2one → res.currency
    related='company_id.currency_id' string='Currency' args: 'res.currency'
  • date Date
    required=True string='Date'
  • description Text
    required=True string='Description'
  • justification Text
    compute='_compute_justification' string='Justification'
  • product_id Many2one → product.product
    required=True string='Product' args: 'product.product'
  • quantity Float
    required=True string='Added Quantity'
  • reference Char
    required=True string='Reference'
  • res_model_name Selection
    required=True string='Resource Model Name' args: [('stock.move', 'Stock Move'), ('product.value', 'Product Value')]
  • total_quantity Float
    compute='_compute_cumulative_fields' string='Total Quantity'
  • total_value Float
    compute='_compute_cumulative_fields' string='Total Value'
  • user_id Many2one → res.users
    required=True string='User' args: 'res.users'
  • value Float
    required=True string='Value'
Public methods (1)
  • init(self)

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (2)
  • accounting_date Date
    help='Date at which the accounting entries will be created in case of automated inventory valuation. If empty, the inventory date will be used.' args: 'Accounting Date'
  • should_show_accounting_date Boolean
    compute='_compute_should_show_accounting_date'
Public methods (0)

No public methods.

New fields (3)
  • is_valued_external Boolean
    compute='_compute_is_valued' args: 'Is valued outside the company'
  • is_valued_internal Boolean
    compute='_compute_is_valued' search='_search_is_valued' args: 'Is valued inside the company'
  • valuation_account_id Many2one → account.account
    domain=[('account_type', 'not in', ('asset_receivable', 'liability_payable', 'asset_cash', 'liability_credit_card'))] help='Expense account used to re-qualify products removed from stock and sent to this location' args: 'account.account', 'Stock Valuation Account'
Public methods (0)

No public methods.

New fields (5)
  • avg_cost Monetary
    compute='_compute_value' compute_sudo=True currency_field='company_currency_id' readonly=True store=False string='Average Cost'
  • company_currency_id Many2one → res.currency
    compute='_compute_value' compute_sudo=True args: 'res.currency', 'Valuation Currency'
  • lot_valuated Boolean
    readonly=True related='product_id.lot_valuated' store=False
  • standard_price Float
    company_dependent=True groups='base.group_user' help='Value of the lot (automatically computed in AVCO).\n Used to value the product when the purchase cost is not known (e.g. inventory adjustment).\n Used to compute margins on sale orders.' min_display_digits='Product Price' args: 'Cost'
  • total_value Monetary
    compute='_compute_value' compute_sudo=True currency_field='company_currency_id' string='Total Value'
Public methods (2)
  • create(self, vals_list)
    @api.model_create_multi
  • write(self, vals)

New fields (16)
  • account_move_id Many2one → account.move
    copy=False index='btree_not_null' args: 'account.move', 'stock_move_id'
  • analytic_account_line_ids Many2many → account.analytic.line
    copy=False args: 'account.analytic.line'
  • company_currency_id Many2one → res.currency
    readonly=True related='company_id.currency_id' string='Company Currency' args: 'res.currency'
  • is_dropship Boolean
    compute='_compute_is_dropship' store=True string='Is Dropship'
  • is_in Boolean
    compute='_compute_is_in' store=True string='Is Incoming (valued)'
  • is_out Boolean
    compute='_compute_is_out' store=True string='Is Outgoing (valued)'
  • is_valued Boolean
    compute='_compute_is_valued' string='Is Valued'
  • price_unit Float
    args: 'Price Unit'
  • remaining_qty Float
    compute='_compute_remaining_qty' search='search_remaining_qty' string='Remaining Quantity'
  • remaining_value Monetary
    compute='_compute_remaining_value' currency_field='company_currency_id' string='Remaining Value'
  • standard_price Float
    compute='_compute_standard_price' string='Standard Price'
  • to_refund Boolean
    copy=True default=True help='Trigger a decrease of the delivered/received quantity in the associated Sale Order/Purchase Order' args: 'Update quantities on SO/PO'
  • value Monetary
    copy=False currency_field='company_currency_id' help="The current value of the move. It's zero if the move is not valued." args: 'Value'
  • value_computed_justification Text
    compute='_compute_value_justification' args: 'Computed Value Description'
  • value_justification Text
    compute='_compute_value_justification' args: 'Value Description'
  • value_manual Monetary
    compute='_compute_value_manual' currency_field='company_currency_id' inverse='_inverse_value_manual' args: 'Manual Value'
Public methods (3)
  • action_adjust_valuation(self)
  • create(self, vals_list)
    @api.model_create_multi
  • search_remaining_qty(self, operator, value)

New fields (0)

No new fields.

Public methods (3)
  • create(self, vals_list)
    @api.model_create_multi
  • unlink(self)
  • write(self, vals)

New fields (1)
  • country_code Char
    related='company_id.account_fiscal_country_id.code'
Public methods (0)

No public methods.

New fields (1)
  • country_code Char
    related='company_id.account_fiscal_country_id.code'
Public methods (0)

No public methods.

New fields (4)
  • accounting_date Date
    help='Date at which the accounting entries will be created in case of automated inventory valuation. If empty, the inventory date will be used.' args: 'Accounting Date'
  • cost_method Selection
    compute='_compute_cost_method' selection=[('standard', 'Standard Price'), ('fifo', 'First In First Out (FIFO)'), ('average', 'Average Cost (AVCO)')] string='Cost Method'
  • currency_id Many2one → res.currency
    groups='stock.group_stock_manager' related='company_id.currency_id' args: 'res.currency'
  • value Monetary
    compute='_compute_value' groups='stock.group_stock_manager' args: 'Value'
Public methods (0)

No public methods.

New fields (1)
  • to_refund Boolean
    default=True help='Trigger a decrease of the delivered/received quantity in the associated Sale Order/Purchase Order' string='Update quantities on SO/PO'
Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (3)
  • action_print_as_pdf(self)
  • action_print_as_xlsx(self)
  • get_report_values(self, date=False)
    @api.model

Loading…

Loading…

Loading…

Loading…

Loading…

Loading…

Loading…

Loading…

Loading…

Loading…

Loading…