繁体   English   中英

根据活动记录生成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>

问题在于结果报告将显示数据库中保存的所有记录。 我希望它仅显示在树状视图中选择的那些记录。 正如您在下图中看到的活动/选定记录。

在此处输入图片说明 即使在单一记录视图中并生成报告,它仍会显示所有记录,但是根据流程,需要从生成报告的位置生成该记录的报告。

请提出一些有助于这种要求的东西。 提前致谢。

步骤1:创建向导odoo默认产品价格表报告向导的示例

点击“打印”按钮,系统将调用向导的打印方法

步骤: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。 干杯!

尝试在调用方法时检查在context是否存在active_ids 如果存在,则只需对您的browser()调用使用ID。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM