根据活动记录生成odoo报告
Generating odoo report on the basis of active records
我正在使用以下函数来获取报告中的记录。
def get_records(self):
recsss = self.pool.get('overtime_oms_bcube.overtime_oms_bcube').search(self.cr,self.uid, [], context=self.context)
resss = self.pool.get('overtime_oms_bcube.overtime_oms_bcube').browse(self.cr, self.uid, recsss)
return resss
并通过以下方式调用记录:
<t t-set="i" t-value="1"/>
<tr t-foreach="get_records()" t-as="data">
<td style="display:none">
<t t-esc="i"/>
<t t-set="i" t-value="i+1"/>
</td>
<td t-esc="data['employee_code']"></td>
<td t-esc="data['employee'].name"></td>
<td t-esc="data['employee'].job_id.name"></td>
<td t-esc="data['no_of_days']"></td>
<td t-esc="data['employee'].contract_id.wage"></td>
<td t-esc="data['employee'].contract_id.wage*0.64516129"></td>
</tr>
问题是生成的报告显示了数据库中保存的所有记录。我希望它只显示在树视图中选择的那些记录。正如您在下图中看到的 active/selected 条记录。
即使我们在单个记录视图中生成报告,它仍会显示所有记录,但根据流程,它需要从我们所在的位置生成该记录的报告生成该报告。
请提出有助于此类要求的建议。提前致谢。
尝试在调用您的方法时检查 active_ids
是否出现在 context
中。如果它存在,只需将 ID 用于您的 browse() 调用。
第 1 步:创建向导
Example of odoo default product pricelist report wizard
Click on Print button system will call wizard print method
步骤:2:在向导中创建打印方法
def print_report(self, cr, uid, ids, context=None):
"""
To get the date and print the report
@return : return report
"""
if context is None:
context = {}
datas = {'ids': context.get('active_ids', [])}
res = self.read(cr, uid, ids, ['price_list','qty1', 'qty2','qty3','qty4','qty5'], context=context)
res = res and res[0] or {}
res['price_list'] = res['price_list'][0]
datas['form'] = res
return self.pool['report'].get_action(cr, uid, [], 'product.report_pricelist', data=datas, context=context)
在上下文中,您将获得活动 ID,并且 get_action 方法将打印报告
替换此代码:
def get_records(self):
recsss = self.pool.get('overtime_oms_bcube.overtime_oms_bcube').search(self.cr,self.uid, [], context=self.context)
resss = self.pool.get('overtime_oms_bcube.overtime_oms_bcube').browse(self.cr, self.uid, recsss)
return resss
与以下
def get_records(self):
active_ids = self.context.get('active_ids',False)
recsss = self.pool.get('overtime_oms_bcube.overtime_oms_bcube').search(self.cr,self.uid, [('id','in',active_ids)], context=self.context)
resss = self.pool.get('overtime_oms_bcube.overtime_oms_bcube').browse(self.cr, self.uid, recsss)
return resss
它只会生成活动 ID。
干杯!
我正在使用以下函数来获取报告中的记录。
def get_records(self):
recsss = self.pool.get('overtime_oms_bcube.overtime_oms_bcube').search(self.cr,self.uid, [], context=self.context)
resss = self.pool.get('overtime_oms_bcube.overtime_oms_bcube').browse(self.cr, self.uid, recsss)
return resss
并通过以下方式调用记录:
<t t-set="i" t-value="1"/>
<tr t-foreach="get_records()" t-as="data">
<td style="display:none">
<t t-esc="i"/>
<t t-set="i" t-value="i+1"/>
</td>
<td t-esc="data['employee_code']"></td>
<td t-esc="data['employee'].name"></td>
<td t-esc="data['employee'].job_id.name"></td>
<td t-esc="data['no_of_days']"></td>
<td t-esc="data['employee'].contract_id.wage"></td>
<td t-esc="data['employee'].contract_id.wage*0.64516129"></td>
</tr>
问题是生成的报告显示了数据库中保存的所有记录。我希望它只显示在树视图中选择的那些记录。正如您在下图中看到的 active/selected 条记录。
请提出有助于此类要求的建议。提前致谢。
尝试在调用您的方法时检查 active_ids
是否出现在 context
中。如果它存在,只需将 ID 用于您的 browse() 调用。
第 1 步:创建向导 Example of odoo default product pricelist report wizard
Click on Print button system will call wizard print method
步骤:2:在向导中创建打印方法
def print_report(self, cr, uid, ids, context=None):
"""
To get the date and print the report
@return : return report
"""
if context is None:
context = {}
datas = {'ids': context.get('active_ids', [])}
res = self.read(cr, uid, ids, ['price_list','qty1', 'qty2','qty3','qty4','qty5'], context=context)
res = res and res[0] or {}
res['price_list'] = res['price_list'][0]
datas['form'] = res
return self.pool['report'].get_action(cr, uid, [], 'product.report_pricelist', data=datas, context=context)
在上下文中,您将获得活动 ID,并且 get_action 方法将打印报告
替换此代码:
def get_records(self):
recsss = self.pool.get('overtime_oms_bcube.overtime_oms_bcube').search(self.cr,self.uid, [], context=self.context)
resss = self.pool.get('overtime_oms_bcube.overtime_oms_bcube').browse(self.cr, self.uid, recsss)
return resss
与以下
def get_records(self):
active_ids = self.context.get('active_ids',False)
recsss = self.pool.get('overtime_oms_bcube.overtime_oms_bcube').search(self.cr,self.uid, [('id','in',active_ids)], context=self.context)
resss = self.pool.get('overtime_oms_bcube.overtime_oms_bcube').browse(self.cr, self.uid, recsss)
return resss
它只会生成活动 ID。 干杯!