mirror of
https://github.com/OCA/manufacture.git
synced 2025-01-28 16:37:15 +02:00
[11.0][IMP] mrp_bom_location: take advantage of the new hook method in the structure report
This commit is contained in:
@@ -8,57 +8,9 @@ from odoo import api, models
|
|||||||
class BomStructureReport(models.AbstractModel):
|
class BomStructureReport(models.AbstractModel):
|
||||||
_inherit = 'report.mrp.mrp_bom_structure_report'
|
_inherit = 'report.mrp.mrp_bom_structure_report'
|
||||||
|
|
||||||
@staticmethod
|
@api.model
|
||||||
def _get_child_vals(record, level, qty, uom):
|
def _get_child_vals(self, record, level, qty, uom):
|
||||||
child = {
|
res = super(BomStructureReport, self)._get_child_vals(
|
||||||
'pname': record.product_id.name_get()[0][1],
|
record, level, qty, uom)
|
||||||
'pcode': record.product_id.default_code,
|
res['location_name'] = record.location_id.complete_name or ''
|
||||||
'puom': record.product_uom_id,
|
return res
|
||||||
'uname': record.product_uom_id.name,
|
|
||||||
'level': level,
|
|
||||||
'code': record.bom_id.code,
|
|
||||||
'location_name': record.location_id.complete_name or '',
|
|
||||||
}
|
|
||||||
qty_per_bom = record.bom_id.product_qty
|
|
||||||
if uom:
|
|
||||||
if uom != record.bom_id.product_uom_id:
|
|
||||||
qty = uom._compute_quantity(qty, record.bom_id.product_uom_id)
|
|
||||||
child['pqty'] = (record.product_qty * qty) / qty_per_bom
|
|
||||||
else:
|
|
||||||
# for the first case, the ponderation is right
|
|
||||||
child['pqty'] = (record.product_qty * qty)
|
|
||||||
return child
|
|
||||||
|
|
||||||
def get_children(self, records, level=0):
|
|
||||||
result = []
|
|
||||||
|
|
||||||
def _get_children_recursive(records, level, qty=1.0, uom=None):
|
|
||||||
for l in records:
|
|
||||||
child = self._get_child_vals(l, level, qty, uom)
|
|
||||||
result.append(child)
|
|
||||||
if l.child_line_ids:
|
|
||||||
if level < 6:
|
|
||||||
level += 1
|
|
||||||
_get_children_recursive(
|
|
||||||
l.child_line_ids,
|
|
||||||
level,
|
|
||||||
qty=child['pqty'],
|
|
||||||
uom=child['puom']
|
|
||||||
)
|
|
||||||
if level > 0 and level < 6:
|
|
||||||
level -= 1
|
|
||||||
return result
|
|
||||||
|
|
||||||
children = _get_children_recursive(records, level)
|
|
||||||
|
|
||||||
return children
|
|
||||||
|
|
||||||
@api.multi
|
|
||||||
def get_report_values(self, docids, data=None):
|
|
||||||
return {
|
|
||||||
'doc_ids': docids,
|
|
||||||
'doc_model': 'mrp.bom',
|
|
||||||
'docs': self.env['mrp.bom'].browse(docids),
|
|
||||||
'get_children': self.get_children,
|
|
||||||
'data': data,
|
|
||||||
}
|
|
||||||
|
|||||||
Reference in New Issue
Block a user