openerp-dev-web team mailing list archive
-
openerp-dev-web team
-
Mailing list archive
-
Message #02127
[Merge] lp:~openerp-dev/openobject-addons/ksa-addons2 into lp:~openerp-dev/openobject-addons/trunk-dev-addons2
ksa(OpenERP) has proposed merging lp:~openerp-dev/openobject-addons/ksa-addons2 into lp:~openerp-dev/openobject-addons/trunk-dev-addons2.
Requested reviews:
OpenERP Core Team (openerp)
Related bugs:
#500931 No analytic entry is generated finishing one production order
https://bugs.launchpad.net/bugs/500931
#543979 product: check uos not necessary
https://bugs.launchpad.net/bugs/543979
#623680 [5.0] stock - Stock Inventory with date past
https://bugs.launchpad.net/bugs/623680
#674551 "qunatity" in MRP
https://bugs.launchpad.net/bugs/674551
#674578 no pdf report "delivery order" in warehouse management
https://bugs.launchpad.net/bugs/674578
#675418 account moves with same account in debit and credit
https://bugs.launchpad.net/bugs/675418
#677437 Production : done moves should not be re-considered while completing production order
https://bugs.launchpad.net/bugs/677437
#680916 "Work center" spelling is inconsistent
https://bugs.launchpad.net/bugs/680916
#683231 [6.0][purchase] destination address inside company makes picking to "customer" location
https://bugs.launchpad.net/bugs/683231
#687352 remove the domain on the filter field in segment
https://bugs.launchpad.net/bugs/687352
#687360 Warehouse : change order of buttons in incoming and outgoingview
https://bugs.launchpad.net/bugs/687360
#690583 stock.picking.test_finished: write() takes at most 6 arguments (8 given)
https://bugs.launchpad.net/bugs/690583
#690700 [purchase-stock] Wrong Partner used when invoicing from picking coming from a puchase with sent_to_address
https://bugs.launchpad.net/bugs/690700
#691901 [6.0] delivery data.xml contains demo data
https://bugs.launchpad.net/bugs/691901
#692461 [6.0] wiki_faq - update problem - reloads template
https://bugs.launchpad.net/bugs/692461
#692467 menuitem for price.type object is missing
https://bugs.launchpad.net/bugs/692467
#695343 mrp_repair doesn't work with products with lot tracking
https://bugs.launchpad.net/bugs/695343
#697554 Custom Reports do not display any values
https://bugs.launchpad.net/bugs/697554
#699821 add access group on button used to update stock on product
https://bugs.launchpad.net/bugs/699821
For more details, see:
https://code.launchpad.net/~openerp-dev/openobject-addons/ksa-addons2/+merge/45690
[1] https://bugs.launchpad.net/openobject-addons/+bug/697554
[2] https://bugs.launchpad.net/openobject-addons/+bug/699821
--
https://code.launchpad.net/~openerp-dev/openobject-addons/ksa-addons2/+merge/45690
Your team OpenERP R&D Team is subscribed to branch lp:~openerp-dev/openobject-addons/ksa-addons2.
=== modified file 'base_report_creator/base_report_creator.py'
--- base_report_creator/base_report_creator.py 2010-12-31 06:26:40 +0000
+++ base_report_creator/base_report_creator.py 2011-01-10 13:24:24 +0000
@@ -23,33 +23,16 @@
from tools.translate import _
from tools import ustr
-class report_creator(osv.osv):
+class report_result(osv.osv):
"""
Report Creator
"""
- _name = "base_report_creator.report"
+ _name = "base_report_creator_report.result"
_description = "Report"
model_set_id = False
#
# Should request only used fields
#
- def export_data(self, cr, uid, ids, fields_to_export, context=None):
- if context is None:
- context = {}
- data_l = self.read(cr, uid, ids, ['sql_query'], context=context)
- final_datas = []
- #start Loop
- for record in data_l:
- datas = []
- for key in fields_to_export:
- value = record.get(key,'')
- if isinstance(value, tuple):
- datas.append(ustr(value[1]))
- else:
- datas.append(ustr(value))
- final_datas += [datas]
- #End Loop
- return {'datas': final_datas}
def fields_get(self, cr, user, fields=None, context=None):
"""
@@ -64,9 +47,9 @@
data = context and context.get('report_id', False) or False
if (not context) or 'report_id' not in context:
- return super(report_creator, self).fields_get(cr, user, fields, context)
+ return super(report_result, self).fields_get(cr, user, fields, context)
if data:
- report = self.browse(cr, user, data)
+ report = self.pool.get('base_report_creator.report').browse(cr, user, data,context=context)
models = {}
#Start Loop
for model in report.model_ids:
@@ -80,12 +63,8 @@
i += 1
else:
fields['column_count'] = {'readonly': True, 'type': 'integer', 'string': 'Count', 'size': 64, 'name': 'column_count'}
-
return fields
- #
- # Should Call self.fields_get !
- #
def fields_view_get(self, cr, user, view_id=None, view_type='form', context=None, toolbar=False, submenu=False):
"""
Overrides orm field_view_get.
@@ -98,8 +77,8 @@
data = context and context.get('report_id', False) or False
if (not context) or 'report_id' not in context:
- return super(report_creator, self).fields_view_get(cr, user, view_id, view_type, context, toolbar=toolbar, submenu=submenu)
- report = self.browse(cr, user, data)
+ return super(report_result, self).fields_view_get(cr, user, view_id, view_type, context, toolbar=toolbar, submenu=submenu)
+ report = self.pool.get('base_report_creator.report').browse(cr, user, context.get('report_id'), context=context)
models = {}
for model in report.model_ids:
models[model.model] = self.pool.get(model.model).fields_get(cr, user, context=context)
@@ -192,31 +171,24 @@
"""
if context is None:
context = {}
- data = context.get('report_id', False)
- res = super(report_creator, self).read(cr, user, ids, fields, context, load)
- if (not context) or 'report_id' not in context:
- return res
- wp = ''
- for data in res:
- if not data.get('sql_query'):
- return res
- if self.model_set_id:
- wp = [self._id_get(cr, user, data, context) + (' in (%s)' % (','.join(map(lambda x: "'" + str(x) + "'", ids))))]
- cr.execute(data['sql_query'])
- res = cr.dictfetchall()
- fields_get = self.fields_get(cr, user, None, context)
- for r in res:
- for k in r:
- r[k] = r[k] or False
- field_dict = fields_get.get(k)
- field_type = field_dict and field_dict.get('type', False) or False
- if field_type and field_type == 'many2one':
- if r[k] == False:
- continue
- related_name = self.pool.get(field_dict.get('relation')).name_get(cr, user, [r[k]], context)[0]
+ report_id = context.get('active_id', False)
+ report = self.pool.get('base_report_creator.report').browse(cr, user, context.get('report_id'), context=context)
+ sql_qry = report.sql_query
+ cr.execute(sql_qry)
+ result = cr.dictfetchall()
+ fields_get = self.fields_get(cr, user, None, context)
+ for r in result:
+ for k in r:
+ r[k] = r[k] or False
+ field_dict = fields_get.get(k)
+ field_type = field_dict and field_dict.get('type', False) or False
+ if field_type and field_type == 'many2one':
+ if r[k] == False:
+ continue
+ if r[k]:
+ related_name = self.pool.get(field_dict.get('relation')).name_get(cr, user, [r[k]], context)
r[k] = related_name
-
- return res
+ return result
def search(self, cr, user, args, offset=0, limit=None, order=None, context=None, count=False):
"""
@@ -231,9 +203,9 @@
context_id = context.get('report_id', False)
if (not context) or 'report_id' not in context:
- return super(report_creator, self).search(cr, user, args, offset, limit, order, context, count)
+ return {}
if context_id:
- report = self.browse(cr, user, context_id)
+ report = self.pool.get('base_report_creator.report').browse(cr, user, context_id, context=context)
i = 0
fields = {}
for f in report.field_ids:
@@ -254,10 +226,42 @@
ctx = context or {}
ctx['getid'] = True
sql_query = report.sql_query
- cr.execute(sql_query, newargs2)
+ cr.execute(sql_query) # TODO: FILTER
result = cr.fetchall()
return map(lambda x: x[0], result)
+report_result()
+
+
+class report_creator(osv.osv):
+ """
+ Report Creator
+ """
+ _name = "base_report_creator.report"
+ _description = "Report"
+ model_set_id = False
+ #
+ # Should request only used fields
+ #
+ def export_data(self, cr, uid, ids, fields_to_export, context=None):
+ if context is None:
+ context = {}
+ data_l = self.read(cr, uid, ids, ['sql_query'], context=context)
+ final_datas = []
+ #start Loop
+ for record in data_l:
+ datas = []
+ for key in fields_to_export:
+ value = record.get(key,'')
+ if isinstance(value, tuple):
+ datas.append(ustr(value[1]))
+ else:
+ datas.append(ustr(value))
+ final_datas += [datas]
+ #End Loop
+ return {'datas': final_datas}
+
+
def _path_get(self, cr, uid, models, filter_ids=[]):
"""
@param cr: the current row, from the database cursor,
@@ -465,7 +469,7 @@
'name': rep.name,
'view_type': 'form',
'view_mode': view_mode,
- 'res_model': 'base_report_creator.report',
+ 'res_model': 'base_report_creator_report.result',
'type': 'ir.actions.act_window',
'context': "{'report_id':%d}" % (rep.id,),
'nodestroy': True,
@@ -596,3 +600,4 @@
}
report_creator_filter()
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
+
=== modified file 'stock/product_view.xml'
--- stock/product_view.xml 2010-12-27 12:58:54 +0000
+++ stock/product_view.xml 2011-01-10 13:24:24 +0000
@@ -106,7 +106,7 @@
<separator string="Stocks" colspan="4"/>
<field name="qty_available"/>
<button name="%(action_view_change_product_quantity)d" string="Update" attrs="{'invisible': [('type', '=', 'service')]}"
- type="action" icon="gtk-execute" groups = "stock.group_stock_manager,base.group_sale_manager,purchase.group_purchase_manager,stock.group_stock_manager,mrp.group_mrp_manager"/>
+ type="action" icon="gtk-execute" groups = "stock.group_stock_manager,group_stock_user"/>
<newline/>
<field name="virtual_available"/>
</group>
Follow ups