Multi is the default api for methods, it is not necessary to explicitly decorate methods with it, adds clutter and most people use it because they see that the rest of the code uses it. Done with `find . -type f -name '*.py' | xargs sed -i '/@api.multi/d'`
43 lines
2.0 KiB
Python
43 lines
2.0 KiB
Python
# -*- coding: utf-8 -*-
|
|
# Part of Odoo. See LICENSE file for full copyright and licensing details.
|
|
|
|
from odoo import api, fields, models
|
|
from odoo.tools import float_compare
|
|
|
|
|
|
class MrpProduction(models.Model):
|
|
_inherit = 'mrp.production'
|
|
|
|
def _get_document_iterate_key(self, move_raw_id):
|
|
return super(MrpProduction, self)._get_document_iterate_key(move_raw_id) or 'created_purchase_line_id'
|
|
|
|
class PurchaseOrderLine(models.Model):
|
|
_inherit = 'purchase.order.line'
|
|
|
|
def _compute_qty_received(self):
|
|
super(PurchaseOrderLine, self)._compute_qty_received()
|
|
for line in self:
|
|
if line.qty_received_method == 'stock_moves' and line.move_ids:
|
|
kit_bom = self.env['mrp.bom']._bom_find(product=line.product_id, company_id=line.company_id.id, bom_type='phantom')
|
|
if kit_bom:
|
|
moves = line.move_ids.filtered(lambda m: m.state == 'done' and not m.scrapped)
|
|
order_qty = line.product_uom._compute_quantity(line.product_uom_qty, kit_bom.product_uom_id)
|
|
filters = {
|
|
'incoming_moves': lambda m: m.location_id.usage == 'supplier' and (not m.origin_returned_move_id or (m.origin_returned_move_id and m.to_refund)),
|
|
'outgoing_moves': lambda m: m.location_id.usage != 'supplier' and m.to_refund
|
|
}
|
|
line.qty_received = moves._compute_kit_quantities(line.product_id, order_qty, kit_bom, filters)
|
|
|
|
def _get_upstream_documents_and_responsibles(self, visited):
|
|
return [(self.order_id, self.order_id.user_id, visited)]
|
|
|
|
class StockMove(models.Model):
|
|
_inherit = 'stock.move'
|
|
|
|
def _prepare_phantom_move_values(self, bom_line, product_qty, quantity_done):
|
|
vals = super(StockMove, self)._prepare_phantom_move_values(bom_line, product_qty, quantity_done)
|
|
if self.purchase_line_id:
|
|
vals['purchase_line_id'] = self.purchase_line_id.id
|
|
return vals
|
|
|