add location to bom structure report

This commit is contained in:
Jordi Ballester
2017-09-29 13:03:58 +02:00
committed by Jordi Ballester Alomar
parent af0a8b9e17
commit c38771b47a
6 changed files with 77 additions and 0 deletions

View File

@@ -11,6 +11,9 @@ components. This may be useful to distinguish between different BoMs for the
same product or to highlight the preferred locations to fetch the
components from.
The location appears in the BOM Structure Report.
Usage
=====

View File

@@ -3,3 +3,4 @@
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
from . import models
from . import report

View File

@@ -16,5 +16,6 @@
],
"data": [
"views/mrp_view.xml",
"views/report_mrpbomstructure.xml",
],
}

View File

@@ -0,0 +1,5 @@
# -*- coding: utf-8 -*-
# Copyright 2017 Eficent Business and IT Consulting Services S.L.
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
from . import bom_structure

View File

@@ -0,0 +1,47 @@
# -*- coding: utf-8 -*-
# © 2017 Eficent Business and IT Consulting Services S.L.
# (http://www.eficent.com)
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html).
from openerp.osv import osv
from openerp.report import report_sxw
class bom_structure(report_sxw.rml_parse):
def __init__(self, cr, uid, name, context):
super(bom_structure, self).__init__(cr, uid, name, context=context)
self.localcontext.update({
'get_children': self.get_children,
})
def get_children(self, object, level=0):
result = []
def _get_rec(object, level, qty=1.0):
for l in object:
res = {}
res['pname'] = l.product_id.name_get()[0][1]
res['pcode'] = l.product_id.default_code
res['pqty'] = l.product_qty * qty
res['uname'] = l.product_uom.name
res['level'] = level
res['code'] = l.bom_id.code
res['location_name'] = l.location_id.complete_name or ''
result.append(res)
if l.child_line_ids:
if level<6:
level += 1
_get_rec(l.child_line_ids, level, qty=res['pqty'])
if level>0 and level<6:
level -= 1
return result
children = _get_rec(object,level)
return children
class report_mrpbomstructure_location(osv.AbstractModel):
_inherit = 'report.mrp.report_mrpbomstructure'
_template = 'mrp.report_mrpbomstructure'
_wrapped_report_class = bom_structure

View File

@@ -0,0 +1,20 @@
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<template id="report_mrpbomstructure_location"
inherit_id="mrp.report_mrpbomstructure">
<xpath expr="//thead/tr" position="inside">
<th>Location</th>
</xpath>
<xpath expr="//tbody/t/tr[1]" position="inside">
<td>
<span t-field="o.location_id.complete_name"/>
</td>
</xpath>
<xpath expr="//tbody/t/tr[2]" position="inside">
<td>
<span t-esc="l['location_name']"/>
</td>
</xpath>
</template>
</odoo>