!12596 项目工程打印

Merge pull request !12596 from 李鹏宇/dev_wang
This commit is contained in:
李鹏宇
2026-08-10 10:36:58 +00:00
committed by Gitee
6 changed files with 122 additions and 2 deletions
@@ -111,6 +111,9 @@
decoration-info="issue_state == 'will'"
decoration-success="issue_state == 'done'"
decoration-muted="issue_state == 'cancel'">
<header>
<button name="all_issue_pull" string="提交议题审报" type="object"/>
</header>
<field name="name" column_invisible="1"/>
<field name="name_text" class="list_width"/>
<field name="is_party" groups="yuthon_salary.group_jtbb_user" string="党总支"/>
+3 -1
View File
@@ -119,7 +119,9 @@
'report/property_supervising_approval_print_report.xml',
'report/property_supervising_approval_print_templates.xml',
'report/property_open_rent_print_report.xml',
'report/property_open_rent_print_templates.xml'
'report/property_open_rent_print_templates.xml',
'report/property_project_works_print_report.xml',
'report/property_project_works_print_templates.xml'
],
@@ -28,4 +28,12 @@ class PropertyProjectWorks(models.Model):
return self._description if self._description else self._name
name_title = fields.Char(default=_get_default_name_title)
self_users_ids = fields.Many2many('res.users', string="当前经办人", default=lambda self: [(6, 0, [self.env.user.id])])
self_users_ids = fields.Many2many('res.users', string="当前经办人", default=lambda self: [(6, 0, [self.env.user.id])])
def action_print_property_project_works(self):
"""打印项目工程审批表"""
# 确保只针对单条记录生成打印
self.ensure_one()
# 通过 XML 中定义的报表动作记录触发 PDF 打印
report_ref = self.env.ref('yuthon_property_approval.action_property_project_works_print_report')
return report_ref.report_action(self)
@@ -0,0 +1,22 @@
<?xml version="1.0" encoding="UTF-8"?>
<odoo>
<!-- 项目工程打印报表 -->
<record id="paperformat_property_project_works" model="report.paperformat">
<field name="name">Property Project Works A4</field>
<field name="format">A4</field>
<field name="margin_top">5</field>
<field name="orientation">Portrait</field>
</record>
<record id="action_property_project_works_print_report" model="ir.actions.report">
<field name="name">项目工程</field>
<field name="paperformat_id" ref="yuthon_property_approval.paperformat_property_project_works"/>
<field name="model">property.project.works</field>
<field name="report_type">qweb-pdf</field>
<field name="report_name">yuthon_property_approval.property_project_works_print_template</field>
<field name="report_file">yuthon_property_approval.property_project_works_print_template</field>
<field name="print_report_name">'项目工程%s_%s' % (object.name or '', object.code or '')</field>
<field name="binding_model_id" ref="model_property_project_works"/>
<field name="binding_type">report</field>
</record>
</odoo>
@@ -0,0 +1,80 @@
<?xml version="1.0" encoding="UTF-8"?>
<odoo>
<template id="property_project_works_print_template">
<t t-call="web.html_container">
<t t-foreach="docs" t-as="doc">
<t t-call="web.external_layout">
<div class="page">
<style type="text/css">
.po-wrap { max-width: 800px; width: auto; margin: 0 auto; font-size: 13px; }
.po-title { text-align: center; font-weight: bold; font-size: 20px; padding: 10px 0 14px; }
table.po { max-width: 800px; width: 100%; border-collapse: collapse; table-layout: auto; margin: 0 auto; }
table.po td { border: 1px solid #000; padding: 6px; vertical-align: top; }
.label { background: #d4e6f1; font-weight: bold; text-align: center; width: 120px; }
.section { text-align: center; font-weight: bold; background: #f2f2f2; border: 1px solid #000; padding: 6px 0; }
.sect { text-align: center; font-weight: bold; background-color: #d4e6f1; border: 1px solid #000; padding: 6px 0; }
</style>
<div class="po-wrap">
<div class="po-title">项目工程</div>
<!-- 标题下方:承办部门 + 流水号 -->
<div style="margin-bottom:8px; text-align:left;">
<span t-esc="doc.department_id.name or ''"/>
<span style="margin-left:40px;">流水号:<span t-esc="doc.code or ''"/></span>
</div>
<!-- 基础信息 -->
<table class="po">
<tr>
<td class="label" width="15%">工程名称</td>
<td width="35%"><span t-esc="doc.name or ''"/></td>
<td class="label" width="15%">标题</td>
<td width="35%"><span t-esc="doc.name_title or ''"/></td>
</tr>
<tr>
<td class="label">流程环节</td>
<td><span t-esc="dict(doc._fields['process_links'].selection).get(doc.process_links, '')"/></td>
<td class="label">紧急度</td>
<td><span t-esc="dict(doc._fields['urgency_level'].selection).get(doc.urgency_level, '')"/></td>
</tr>
<tr>
<td class="label">签订日期</td>
<td><span t-esc="doc.signing_date and doc.signing_date.strftime('%Y-%m-%d') or ''"/></td>
<td class="label">验收日期</td>
<td><span t-esc="doc.acceptance_date and doc.acceptance_date.strftime('%Y-%m-%d') or ''"/></td>
</tr>
<tr>
<td class="label">总金额</td>
<td><span t-esc="'%.2f' % (doc.total or 0.0)"/></td>
<td class="label">应付</td>
<td><span t-esc="'%.2f' % (doc.coping or 0.0)"/></td>
</tr>
<tr>
<td class="label">已付</td>
<td><span t-esc="'%.2f' % (doc.paid or 0.0)"/></td>
<td class="label">未付</td>
<td><span t-esc="'%.2f' % (doc.not_paid or 0.0)"/></td>
</tr>
</table>
<!-- 审批详情 -->
<div class="sect">审批详情</div>
<table class="po">
<t t-set="logs_ordered" t-value="doc.log_ids.sorted(lambda x: x.date_create or '')"/>
<t t-foreach="logs_ordered" t-as="log">
<tr>
<td width="15%"><span t-esc="log.name or '节点'"/></td>
<td width="25%"><span t-esc="log.done_by.name or ''"/></td>
<td width="25%"><span t-esc="log.lase_click_date and log.lase_click_date.strftime('%Y-%m-%d %H:%M') or (log.date_create and log.date_create.strftime('%Y-%m-%d %H:%M') or '')"/></td>
<td width="35%"><span t-esc="log.comment or ''"/></td>
</tr>
</t>
</table>
</div>
</div>
</t>
</t>
</t>
</template>
</odoo>
@@ -17,6 +17,11 @@
<field name="model">property.project.works</field>
<field name="arch" type="xml">
<form string="项目工程" create="0">
<header>
<button name="action_print_property_project_works"
type="object" string="打印"
class="btn-primary" invisible="not work_end"/>
</header>
<sheet>
<group col="3">
<group>