我在不到一个月前的第一次见到Odoo,并且,90年代的DOS系统分析师正在帮助一个小型但发展迅速的本地制造商实施它。在过去的15年中,我不是专业人士,而是快速学习Python,HTML(一些过去的专业知识)和Java ......
我已经浏览了Developer Docs,以及开发者的食谱& Essentials和各种在线教程(几乎所有Google都可以从几个搜索词组合中得到)。
我阅读了关于这个问题的封闭帖子并得到了显然没有实际的Odoo参考...
有人可以告诉我在哪里可以找到'日期/时间'解析和转换功能,我可以从使用'canned''hr.employee'模型的报告中查看?
<?xml version="1.0"?>
<t t-name="hr_attendance.report_attendancelog">
<t t-call="report.html_container">
<t t-call="report.external_layout">
<div class="page">
<div class="oe_structure"/>
<div class="row">
<div class="col-xs-6">
<h2><br/>Attendance Log: </h2>
</div>
</div>
<table class="table table-condensed mt32">
<thead>
<th><strong>Date / Time</strong></th>
<th><strong> Operation</strong></th>
</thead>
<tbody>
<t t-foreach="docs" t-as="o">
<t t-set="DspDate" t-value="o.name"/>
<t t-set="DspTime" t-value="o.name"/>
<!-- I want to parse 'o.name', which is 'date time' format (from
Attendance record) to separate 'Date' and 'Time' fields... -->
<!-- t t-set="DspDate" t-value="FUNC?(o.name)"/ -->
<!-- t t-set="DspTime" t-value="FUNC?(o.name)"/ -->
<!-- and do calcs with date & time...) -->
<!-- t t-set="ClcDt1" t-value="FUNC?('PrvDt')"/ -->
<!-- t t-set="ClcDt2" t-value="FUNC?(DspDate)"/ -->
<!-- t t-set="ClcTm1" t-value="FUNC?('PrvTm')"/ -->
<!-- t t-set="ClcTm2" t-value="FUNC?(DspTime)"/ -->
<tr>
<t t-if="ClcDt1 == ClcDt2">
<td><span t-esc="DspDate"/></td>
<td><span t-esc="DspTime"/></td>
<td><span t-esc="o.action"/></td>
</t
</tr>
</t>
<tr class="border-black">
<td colspan="3"><strong>Total period</strong></td>
<td><strong t-esc="o.worked_hours"/></td -->
</tr>
</tbody>
</table>
</div>
</t>
</t>
</t>
我将'br /'加上H2来保持它正确定位(仅显示在第一页),但后续页面遮盖了布局标题后面的col标题......这可能是显而易见的,我没有注意到,但如何通过'report.external_layout'将'H2'位置调整到'header'设置之下?
答案 0 :(得分:1)
在QWeb渲染上,您可以使用python libs time,datetime和relativedelta。它们包含在所谓的QWeb上下文中,用于报告中代码的评估(python eval)。您可以在Odoo代码here中看到这一点。
这意味着你做了这样的事情:
<t t-set="DspDate" t-value="datetime.datetime.strptime(o.name, '%Y-%m-%d %H:%M:%S').strftime('%d/%m/%Y')" />
我更喜欢报表的解析器类来定义一些常用函数。例如:您可以定义执行解析或转换内容的函数getDate
。解析器函数的报告代码会更好:
<t t-set="DspDate" t-value="getDate(o.name)" />