File: stock_valuation_layer.py

package info (click to toggle)
odoo 18.0.0%2Bdfsg-2
  • links: PTS, VCS
  • area: main
  • in suites: sid
  • size: 878,716 kB
  • sloc: javascript: 927,937; python: 685,670; xml: 388,524; sh: 1,033; sql: 415; makefile: 26
file content (20 lines) | stat: -rw-r--r-- 928 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20


from odoo import models


class StockValuationLayer(models.Model):
    _inherit = 'stock.valuation.layer'

    def _get_layer_price_unit(self):
        """ For a subcontracted product, we want a way to get the subcontracting cost (the price on the PO)
            This override deducts the value of subcomponents from the layer price.
        """
        components_price = 0
        production = self.stock_move_id.production_id
        if production.subcontractor_id and production.state == 'done':
            # each layer has a quantity and price for each move, to get the correct component price for each move
            # we need to get the components used for each quantity
            for move in production.move_raw_ids:
                components_price += abs(sum(move.sudo().stock_valuation_layer_ids.mapped('value'))) / production.product_uom_qty
        return super()._get_layer_price_unit() - components_price