mirror of
https://github.com/bringout/oca-ocb-accounting.git
synced 2026-04-26 17:22:02 +02:00
19.0 vanilla
This commit is contained in:
parent
ba20ce7443
commit
768b70e05e
2357 changed files with 1057103 additions and 712486 deletions
|
|
@ -2,31 +2,40 @@
|
|||
# Part of Odoo. See LICENSE file for full copyright and licensing details.
|
||||
|
||||
from odoo import fields, models
|
||||
from odoo.fields import Domain
|
||||
|
||||
|
||||
class StockLocation(models.Model):
|
||||
_inherit = "stock.location"
|
||||
|
||||
valuation_in_account_id = fields.Many2one(
|
||||
'account.account', 'Stock Valuation Account (Incoming)',
|
||||
domain=[('account_type', 'not in', ('asset_receivable', 'liability_payable', 'asset_cash', 'liability_credit_card')), ('deprecated', '=', False)],
|
||||
help="Used for real-time inventory valuation. When set on a virtual location (non internal type), "
|
||||
"this account will be used to hold the value of products being moved from an internal location "
|
||||
"into this location, instead of the generic Stock Output Account set on the product. "
|
||||
"This has no effect for internal locations.")
|
||||
valuation_out_account_id = fields.Many2one(
|
||||
'account.account', 'Stock Valuation Account (Outgoing)',
|
||||
domain=[('account_type', 'not in', ('asset_receivable', 'liability_payable', 'asset_cash', 'liability_credit_card')), ('deprecated', '=', False)],
|
||||
help="Used for real-time inventory valuation. When set on a virtual location (non internal type), "
|
||||
"this account will be used to hold the value of products being moved out of this location "
|
||||
"and into an internal location, instead of the generic Stock Output Account set on the product. "
|
||||
"This has no effect for internal locations.")
|
||||
valuation_account_id = fields.Many2one(
|
||||
'account.account', 'Stock Valuation 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")
|
||||
is_valued_internal = fields.Boolean('Is valued inside the company', compute="_compute_is_valued", search="_search_is_valued")
|
||||
is_valued_external = fields.Boolean('Is valued outside the company', compute="_compute_is_valued")
|
||||
|
||||
def _search_is_valued(self, operator, value):
|
||||
if operator not in ['=', '!=']:
|
||||
raise NotImplementedError(self.env._("Invalid search operator or value"))
|
||||
positive_operator = (operator == '=' and value) or (operator == '!=' and not value)
|
||||
domain = Domain([('company_id', 'in', self.env.companies.ids), ('usage', 'in', ['internal', 'transit'])])
|
||||
if positive_operator:
|
||||
return domain
|
||||
return ~domain
|
||||
|
||||
def _compute_is_valued(self):
|
||||
for location in self:
|
||||
if location._should_be_valued():
|
||||
location.is_valued_internal = True
|
||||
location.is_valued_external = False
|
||||
else:
|
||||
location.is_valued_internal = False
|
||||
location.is_valued_external = True
|
||||
|
||||
def _should_be_valued(self):
|
||||
""" This method returns a boolean reflecting whether the products stored in `self` should
|
||||
be considered when valuating the stock of a company.
|
||||
"""
|
||||
self.ensure_one()
|
||||
if self.usage == 'internal' or (self.usage == 'transit' and self.company_id):
|
||||
return True
|
||||
return False
|
||||
return bool(self.company_id) and self.usage in ['internal', 'transit']
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue