From 24bd91921908400c16a6e4d5fe25af82add8ffed Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=8E=E9=B9=8F=E5=AE=87?= Date: Sat, 9 May 2026 10:44:49 +0800 Subject: [PATCH 01/16] =?UTF-8?q?=E8=80=83=E5=8B=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- attendance_iot/controllers/kaoqin_test.py | 4 +++- yuthon_report/models/pre_arrears_report.py | 23 +++++++++------------- 2 files changed, 12 insertions(+), 15 deletions(-) diff --git a/attendance_iot/controllers/kaoqin_test.py b/attendance_iot/controllers/kaoqin_test.py index 7fb7a43b8..9d06fe048 100644 --- a/attendance_iot/controllers/kaoqin_test.py +++ b/attendance_iot/controllers/kaoqin_test.py @@ -35,13 +35,15 @@ class BusController(Controller): if employee and attendance_iot_id not in employee.attendance_iot_ids.mapped('attendance_iot_id'): employee.write({ 'image_1920': data.get('photo'), + 'avatar_image': data.get('photo'), 'attendance_iot_ids': [(0, 0, { 'employee_id': employee.id, 'attendance_address': '', 'attendance_iot_id': attendance_iot_id.id })] }) - _logger.info("-------------------------%s创建成功-------------------------------" % (employee.name)) + _logger.info(f"-------------{employee.name}人脸更新触发------人脸数据{data.get('photo')}-------------") + _logger.info("-------------%s创建成功-------------------" % (employee.name)) return {"Result": 0, "Msg": "添加成功"} @route('/api/v1/record/face', methods=['POST'], type='json', auth='none', csrf=False) diff --git a/yuthon_report/models/pre_arrears_report.py b/yuthon_report/models/pre_arrears_report.py index d536b1d03..40f58c4fe 100644 --- a/yuthon_report/models/pre_arrears_report.py +++ b/yuthon_report/models/pre_arrears_report.py @@ -9,11 +9,11 @@ class PreArrearsReport(models.Model): @api.model def get_pre_arrears_report(self, params): """ - 前期欠收报表(数据源:receivable.modify.line): - - 查询条件的日期对应应收账单的 due_date(应收日期在查询月内) - - 收款日期(reconciliation_date)晚于应收日期(due_date)的记录就是欠收 - - 金额取收款记录的 not_collected(未收金额/欠收金额) - - 按应收账单聚合,每张账单只出一行(汇总该账单下所有欠收收款金额) + 前期欠收报表(数据源:receivable.modify.line): + - 查询条件的日期对应应收账单的 due_date(应收日期在查询月内) + - 欠收条件:not_collected > 0(有未收金额) + - 金额取收款记录的 not_collected(未收金额/欠收金额) + - 按应收账单聚合,每张账单只出一行(汇总该账单下所有欠收收款金额) """ today = datetime.date.today() this_month_first = today.replace(day=1) @@ -23,7 +23,7 @@ class PreArrearsReport(models.Model): # 应收日期在查询日期之前(不含查询月) cutoff_date = datetime.datetime.fromisoformat(date_start).date() if date_start else this_month_first - # 核心逻辑:due_date < cutoff_date,且收款日期 > 应收日期 + # 核心逻辑:due_date < cutoff_date,且有未收金额 domain = [ ('reconciliation_date', '!=', False), ('receivable_id.due_date', '<', cutoff_date), @@ -65,15 +65,10 @@ class PreArrearsReport(models.Model): domain.append(('receivable_id.management_type_id.name', 'not in', ['押金', '违约金'])) lines = self.sudo().search(domain, order="receivable_id asc, reconciliation_date asc") - - # 欠收条件:reconciliation_date > due_date 且不在同一个月(跨月才算欠收) + + # 欠收条件:not_collected > 0(有未收金额就算欠收) lines = lines.filtered( - lambda l: l.reconciliation_date and l.receivable_id.due_date - and l.reconciliation_date > l.receivable_id.due_date - and not ( - l.reconciliation_date.year == l.receivable_id.due_date.year - and l.reconciliation_date.month == l.receivable_id.due_date.month - ) + lambda l: l.not_collected and l.not_collected > 0 ) # 按应收账单聚合 From 5693d2d7c1c7ae75edc617a3b9fc95fb26c16705 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=8E=E9=B9=8F=E5=AE=87?= Date: Sat, 9 May 2026 11:18:22 +0800 Subject: [PATCH 02/16] =?UTF-8?q?=E9=87=87=E8=B4=AD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- yuthon_purchase/models/inherit_purchase_order.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/yuthon_purchase/models/inherit_purchase_order.py b/yuthon_purchase/models/inherit_purchase_order.py index eb0c2217f..bb7fa9cac 100644 --- a/yuthon_purchase/models/inherit_purchase_order.py +++ b/yuthon_purchase/models/inherit_purchase_order.py @@ -37,7 +37,7 @@ class InheritPurchaseOrder(models.Model): default=lambda self: [(6, 0, [self.env.user.id])]) pay_way = fields.Selection([('onetime', '一次性'), ('installment', '分期')], string="付款方式", default='onetime') reason_text = fields.Text(string="申请事由") - purchase_type = fields.Selection([('fixed_asset', '固定资产采购'), ('sporadic', '零星采购'), ('comprehensive', '综合类')], string="采购类型", default='fixed_asset') + purchase_type = fields.Selection([('fixed_asset', '固定资产采购'), ('sporadic', '零星采购'), ('comprehensive', '综合类')], string="采购类型", default='comprehensive') is_modify = fields.Boolean(string="可修改") pay_line_ids = fields.One2many('purchase.order.pay.line', 'order_id', string="付款详情") is_company = fields.Boolean(string="本公司", default=True, compute='_compute_is_company',search='_search_part_of_company') From ac928618d8a8ebda5f5caf6940dc6f2713c09621 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=8E=E9=B9=8F=E5=AE=87?= Date: Sat, 9 May 2026 15:31:13 +0800 Subject: [PATCH 03/16] =?UTF-8?q?=E5=AD=97=E6=AE=B5=E9=9A=90=E8=97=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- yuthon_issue/views/issue_library_views.xml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/yuthon_issue/views/issue_library_views.xml b/yuthon_issue/views/issue_library_views.xml index 93eab3984..b9a9cc4f9 100644 --- a/yuthon_issue/views/issue_library_views.xml +++ b/yuthon_issue/views/issue_library_views.xml @@ -21,10 +21,10 @@ - - - - + + + + From 92dac9ca2166b29013d8368b9136af89bd219479 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=8E=E9=B9=8F=E5=AE=87?= Date: Sat, 9 May 2026 16:07:22 +0800 Subject: [PATCH 04/16] =?UTF-8?q?=E5=89=8D=E6=9C=9F=E6=AC=A0=E6=94=B6?= =?UTF-8?q?=E6=8A=A5=E8=A1=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- yuthon_report/models/pre_arrears_report.py | 42 ++++++++++++++----- .../models/receivable_filter_domains.py | 40 ++++-------------- 2 files changed, 41 insertions(+), 41 deletions(-) diff --git a/yuthon_report/models/pre_arrears_report.py b/yuthon_report/models/pre_arrears_report.py index 40f58c4fe..d9a74a989 100644 --- a/yuthon_report/models/pre_arrears_report.py +++ b/yuthon_report/models/pre_arrears_report.py @@ -10,9 +10,13 @@ class PreArrearsReport(models.Model): def get_pre_arrears_report(self, params): """ 前期欠收报表(数据源:receivable.modify.line): - - 查询条件的日期对应应收账单的 due_date(应收日期在查询月内) - - 欠收条件:not_collected > 0(有未收金额) - - 金额取收款记录的 not_collected(未收金额/欠收金额) + - 查询条件的日期对应应收账单的 due_date(应收日期在查询月及之前) + - 欠收条件(满足任一即可): + 1. not_collected > 0 (到查询时点还没交完,仍然欠着) + 2. reconciliation_date > due_date (曾经晚交钱,跨月收款) + - 金额取值: + - 如果 not_collected > 0,取 not_collected (当前还欠的金额) + - 否则取 amount (晚交的收款金额) - 按应收账单聚合,每张账单只出一行(汇总该账单下所有欠收收款金额) """ today = datetime.date.today() @@ -20,13 +24,13 @@ class PreArrearsReport(models.Model): date_start = params.get("date_start") date_end = params.get("date_end") - # 应收日期在查询日期之前(不含查询月) - cutoff_date = datetime.datetime.fromisoformat(date_start).date() if date_start else this_month_first + # 应收日期在查询月及之前(包含查询月) + cutoff_date = datetime.datetime.fromisoformat(date_end).date() if date_end else this_month_first - # 核心逻辑:due_date < cutoff_date,且有未收金额 + # 核心逻辑:due_date <= cutoff_date(查询月及之前的应收) domain = [ ('reconciliation_date', '!=', False), - ('receivable_id.due_date', '<', cutoff_date), + ('receivable_id.due_date', '<=', cutoff_date), ('receivable_id.is_invalid', '=', False), ] @@ -66,10 +70,22 @@ class PreArrearsReport(models.Model): lines = self.sudo().search(domain, order="receivable_id asc, reconciliation_date asc") - # 欠收条件:not_collected > 0(有未收金额就算欠收) + # 欠收条件(满足任一即可): + # 1. not_collected > 0 (到查询时点还没交完,仍然欠着) + # 2. reconciliation_date > due_date (曾经晚交钱,跨月收款) lines = lines.filtered( - lambda l: l.not_collected and l.not_collected > 0 + lambda l: (l.not_collected and l.not_collected > 0) or + (l.reconciliation_date and l.receivable_id.due_date + and l.reconciliation_date > l.receivable_id.due_date) ) + + # 调试日志 + print(f"[前期欠收报表] 查询到的 lines 数量: {len(lines)}") + for line in lines: + print(f" - line.id={line.id}, receivable_id={line.receivable_id.id}, " + f"due_date={line.receivable_id.due_date}, " + f"reconciliation_date={line.reconciliation_date}, " + f"not_collected={line.not_collected}, amount={line.amount}") # 按应收账单聚合 rec_map = {} @@ -77,7 +93,13 @@ class PreArrearsReport(models.Model): rid = line.receivable_id.id if rid not in rec_map: rec_map[rid] = {'rec': line.receivable_id, 'amount': 0.0} - rec_map[rid]['amount'] += line.not_collected or 0.0 + # 金额取值:有未收金额取not_collected,否则取amount + rec_map[rid]['amount'] += (line.not_collected if (line.not_collected and line.not_collected > 0) else line.amount) or 0.0 + + # 调试日志 + print(f"[前期欠收报表] 聚合后的 rec_map 数量: {len(rec_map)}") + for rid, data in rec_map.items(): + print(f" - receivable_id={rid}, amount={data['amount']}") rows = [] total_amount = 0.0 diff --git a/yuthon_report/models/receivable_filter_domains.py b/yuthon_report/models/receivable_filter_domains.py index c9b03eb94..f47f54e1d 100644 --- a/yuthon_report/models/receivable_filter_domains.py +++ b/yuthon_report/models/receivable_filter_domains.py @@ -8,48 +8,26 @@ class ReceivableModifyFilterDomains(models.Model): @api.model def get_receivable_filter_domains(self, params): - """根据当前筛选条件,返回物业/承租方/合同的候选 ID 集合,用于三个下拉框互相过滤。""" - # 注意:这里不按日期限制,只根据当前组合条件(公司/权属/片区/收款类型/物业/承租方/合同) - # 来计算三类对象的全集,避免不同报表各自的日期口径导致候选集为空。 - domain = [ - ('receivable_id.is_invalid', '=', False), - ] + """根据当前筛选条件,返回物业/承租方/合同的候选 ID 集合,用于三个下拉框互相过滤。 + + 注意: + - 候选集不应受收款类型、是否无效等业务条件过滤 + - 只根据用户已选择的物业/承租方/合同进行互相过滤 + - 具体的业务过滤由报表查询方法自己处理 + """ + domain = [] - keyword = params.get("keyword") - - if keyword: - domain += [ - '|', '|', - ('receivable_id.contract_id.contract_code', 'ilike', keyword), - ('receivable_id.property_name', 'ilike', keyword), - ('receivable_id.lessee_id.name', 'ilike', keyword), - ] - - condition = params.get('condition') - partner_id = params.get('partner_id') - company_id = params.get('company_id') - management_type_id = params.get('management_type_id') + # 只根据已选择的条件进行互相过滤,不应用业务过滤 property_id = params.get('property_id') lessee_id = params.get('lessee_id') contract_id = params.get('contract_id') - if condition: - domain.append(('receivable_id.tenure_type', '=', condition)) - if partner_id: - domain.append(('receivable_id.precinct_id', '=', partner_id)) - if company_id: - domain.append(('receivable_id.company_id', '=', company_id)) if property_id: domain.append(('receivable_id.property_ids', 'in', [property_id])) if lessee_id: domain.append(('receivable_id.lessee_id', '=', lessee_id)) if contract_id: domain.append(('receivable_id.contract_id', '=', contract_id)) - if management_type_id: - domain.append(('receivable_id.management_type_id', '=', management_type_id)) - else: - # 与各报表保持一致:默认剔除押金、违约金类型 - domain.append(('receivable_id.management_type_id.name', 'not in', ['押金', '违约金'])) lines = self.sudo().search(domain) receivables = lines.mapped('receivable_id') From 240db2eff5e3cb4563fb72a83804d868e3068622 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=8E=E9=B9=8F=E5=AE=87?= Date: Sat, 9 May 2026 19:32:06 +0800 Subject: [PATCH 05/16] =?UTF-8?q?=E5=89=8D=E6=9C=9F=E6=AC=A0=E6=94=B6?= =?UTF-8?q?=E6=8A=A5=E8=A1=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- yuthon_report/models/pre_arrears_report.py | 41 +++++++++++++++------- yuthon_report/views/pre_arrears_report.xml | 4 ++- 2 files changed, 32 insertions(+), 13 deletions(-) diff --git a/yuthon_report/models/pre_arrears_report.py b/yuthon_report/models/pre_arrears_report.py index d9a74a989..dde185c29 100644 --- a/yuthon_report/models/pre_arrears_report.py +++ b/yuthon_report/models/pre_arrears_report.py @@ -11,12 +11,12 @@ class PreArrearsReport(models.Model): """ 前期欠收报表(数据源:receivable.modify.line): - 查询条件的日期对应应收账单的 due_date(应收日期在查询月及之前) - - 欠收条件(满足任一即可): - 1. not_collected > 0 (到查询时点还没交完,仍然欠着) - 2. reconciliation_date > due_date (曾经晚交钱,跨月收款) + - 欠收条件: + - 收款日期在查询月之后(查询月时点还没收到钱) + - 或者 not_collected > 0 (部分收款,还没交完) - 金额取值: - 如果 not_collected > 0,取 not_collected (当前还欠的金额) - - 否则取 amount (晚交的收款金额) + - 否则取 amount (已收金额) - 按应收账单聚合,每张账单只出一行(汇总该账单下所有欠收收款金额) """ today = datetime.date.today() @@ -26,10 +26,12 @@ class PreArrearsReport(models.Model): date_end = params.get("date_end") # 应收日期在查询月及之前(包含查询月) cutoff_date = datetime.datetime.fromisoformat(date_end).date() if date_end else this_month_first + # 查询月范围(用于判断收款是否在查询月内) + query_month_start = datetime.datetime.fromisoformat(date_start).date() if date_start else this_month_first + query_month_end = datetime.datetime.fromisoformat(date_end).date() if date_end else this_month_first # 核心逻辑:due_date <= cutoff_date(查询月及之前的应收) domain = [ - ('reconciliation_date', '!=', False), ('receivable_id.due_date', '<=', cutoff_date), ('receivable_id.is_invalid', '=', False), ] @@ -70,13 +72,16 @@ class PreArrearsReport(models.Model): lines = self.sudo().search(domain, order="receivable_id asc, reconciliation_date asc") - # 欠收条件(满足任一即可): - # 1. not_collected > 0 (到查询时点还没交完,仍然欠着) - # 2. reconciliation_date > due_date (曾经晚交钱,跨月收款) + # 欠收条件(同时满足): + # 1. reconciliation_date >= query_month_start (收款日期不能小于查询月) + # 2. 满足以下任一: + # a. reconciliation_date > query_month_end (收款日期在查询月之后,查询月时点还没收到钱) + # b. not_collected > 0 (部分收款,还没交完) lines = lines.filtered( - lambda l: (l.not_collected and l.not_collected > 0) or - (l.reconciliation_date and l.receivable_id.due_date - and l.reconciliation_date > l.receivable_id.due_date) + lambda l: l.reconciliation_date and l.reconciliation_date >= query_month_start and ( + (l.reconciliation_date > query_month_end) or + (l.not_collected and l.not_collected > 0) + ) ) # 调试日志 @@ -92,9 +97,12 @@ class PreArrearsReport(models.Model): for line in lines: rid = line.receivable_id.id if rid not in rec_map: - rec_map[rid] = {'rec': line.receivable_id, 'amount': 0.0} + rec_map[rid] = {'rec': line.receivable_id, 'amount': 0.0, 'reconciliation_dates': []} # 金额取值:有未收金额取not_collected,否则取amount rec_map[rid]['amount'] += (line.not_collected if (line.not_collected and line.not_collected > 0) else line.amount) or 0.0 + # 收集收款日期 + if line.reconciliation_date: + rec_map[rid]['reconciliation_dates'].append(line.reconciliation_date) # 调试日志 print(f"[前期欠收报表] 聚合后的 rec_map 数量: {len(rec_map)}") @@ -120,6 +128,13 @@ class PreArrearsReport(models.Model): } elif rec: property_val = rec.property_name or '' + + # 应收开始日期 + due_date_str = rec.due_date.strftime('%Y-%m-%d') if rec.due_date else '' + + # 收款日期(取所有收款日期,用逗号分隔) + reconciliation_dates = data.get('reconciliation_dates', []) + reconciliation_date_str = ', '.join([d.strftime('%Y-%m-%d') for d in sorted(set(reconciliation_dates))]) if reconciliation_dates else '' rows.append({ "序号": idx, @@ -135,6 +150,8 @@ class PreArrearsReport(models.Model): 'display_name': rec.lessee_id.name, } if rec.lessee_id else "", "收款类型": rec.management_type_id.name if rec.management_type_id else "", + "应收开始日期": due_date_str, + "收款日期": reconciliation_date_str, "金额": amount, "所属公司": contract.lessor_id.name if contract and contract.lessor_id else "", "管理员": { diff --git a/yuthon_report/views/pre_arrears_report.xml b/yuthon_report/views/pre_arrears_report.xml index 9d95ac8da..9405e8149 100644 --- a/yuthon_report/views/pre_arrears_report.xml +++ b/yuthon_report/views/pre_arrears_report.xml @@ -13,11 +13,13 @@ "dateMode": "single", "columns": [ {"headerName": "序号", "field": "序号", "width": 45, "flex": 0, "pinned": "left"}, + {"headerName": "应收开始日期", "field": "应收开始日期", "flex": 1}, + {"headerName": "收款日期", "field": "收款日期", "flex": 1}, + {"headerName": "金额", "field": "金额", "flex": 1, "type": "number"}, {"headerName": "合同编号", "field": "合同编号", "flex": 1.2}, {"headerName": "物业名称", "field": "物业名称", "flex": 2.5}, {"headerName": "承租方名称", "field": "承租方名称", "flex": 1.4}, {"headerName": "收款类型", "field": "收款类型", "flex": 1}, - {"headerName": "金额", "field": "金额", "flex": 1, "type": "number"}, {"headerName": "所属公司", "field": "所属公司", "flex": 1}, {"headerName": "管理员", "field": "管理员", "flex": 1} ] From 7a15800d1e786f74203d66e450d51dc3b23d0a1f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=8E=E9=B9=8F=E5=AE=87?= Date: Sat, 9 May 2026 20:17:11 +0800 Subject: [PATCH 06/16] =?UTF-8?q?=E5=89=8D=E6=9C=9F=E6=AC=A0=E6=94=B6?= =?UTF-8?q?=E6=8A=A5=E8=A1=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- yuthon_report/models/pre_arrears_report.py | 1 + .../static/src/components/yuthon_report/receivable_report.js | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/yuthon_report/models/pre_arrears_report.py b/yuthon_report/models/pre_arrears_report.py index dde185c29..f8bb1f5e7 100644 --- a/yuthon_report/models/pre_arrears_report.py +++ b/yuthon_report/models/pre_arrears_report.py @@ -142,6 +142,7 @@ class PreArrearsReport(models.Model): 'model': 'property.lease.contract', 'id': contract.id, 'display_name': contract.contract_code, + 'view_id': self.env.ref('yuthon_property_approval.view_property_lease_contract_form1').id, } if contract else "", "物业名称": property_val, "承租方名称": { diff --git a/yuthon_report/static/src/components/yuthon_report/receivable_report.js b/yuthon_report/static/src/components/yuthon_report/receivable_report.js index dc9e2dbc6..b4a5a42d8 100644 --- a/yuthon_report/static/src/components/yuthon_report/receivable_report.js +++ b/yuthon_report/static/src/components/yuthon_report/receivable_report.js @@ -216,7 +216,7 @@ class ReceivableReport extends Component { type: 'ir.actions.act_window', res_model: model, res_id: id, - views: [[false, 'form'], [false, 'search']], + views: [[view_id || false, 'form'], [false, 'search']], target: 'new' }); } From 7c522a9763ba9b82655c4c61d782fd9cb6103aa0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=8E=E9=B9=8F=E5=AE=87?= Date: Mon, 11 May 2026 10:23:26 +0800 Subject: [PATCH 07/16] =?UTF-8?q?=E9=87=87=E8=B4=AD=E6=89=93=E5=8D=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- yuthon_purchase/report/purchase_order_print_templates.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/yuthon_purchase/report/purchase_order_print_templates.xml b/yuthon_purchase/report/purchase_order_print_templates.xml index 5e2f1b345..3280c0081 100644 --- a/yuthon_purchase/report/purchase_order_print_templates.xml +++ b/yuthon_purchase/report/purchase_order_print_templates.xml @@ -41,7 +41,7 @@ 采购标的类型 - + 付款方式 From ae455deb26c4f5584822d5258eb4a0221ce76b56 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=8E=E9=B9=8F=E5=AE=87?= Date: Mon, 11 May 2026 10:50:55 +0800 Subject: [PATCH 08/16] =?UTF-8?q?=E5=AD=97=E6=AE=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../views/property_lease_contract.xml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/yuthon_property_approval/views/property_lease_contract.xml b/yuthon_property_approval/views/property_lease_contract.xml index f822a4b56..2d0c117b9 100644 --- a/yuthon_property_approval/views/property_lease_contract.xml +++ b/yuthon_property_approval/views/property_lease_contract.xml @@ -959,10 +959,10 @@ - - - - + + + + From ad5705b04d7ab6587f756bd0804044032276de93 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=8E=E9=B9=8F=E5=AE=87?= Date: Mon, 11 May 2026 11:06:09 +0800 Subject: [PATCH 09/16] =?UTF-8?q?=E6=97=A5=E7=A8=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- yuthon_will_task/controllers/main.py | 1 + 1 file changed, 1 insertion(+) diff --git a/yuthon_will_task/controllers/main.py b/yuthon_will_task/controllers/main.py index 33c7d3c34..a120d47c4 100644 --- a/yuthon_will_task/controllers/main.py +++ b/yuthon_will_task/controllers/main.py @@ -121,6 +121,7 @@ class YuthonWillTask(http.Controller): 'employee_num': ','.join(task.employee_ids.mapped('name')) if task.employee_ids else '', 'start_date': fields.Date.to_string(task.start_date), 'weekday': weekday_str, + 'address': task.address or '', 'request_hour_from': '', 'request_hour_to': '', 'state': task.task_state, From dc9e70ea46325d20f705eeb8f6bc284ac45f4942 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=8E=E9=B9=8F=E5=AE=87?= Date: Mon, 11 May 2026 11:46:25 +0800 Subject: [PATCH 10/16] =?UTF-8?q?=E6=97=A5=E7=A8=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- yuthon_purchase/report/purchase_order_print_templates.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/yuthon_purchase/report/purchase_order_print_templates.xml b/yuthon_purchase/report/purchase_order_print_templates.xml index 3280c0081..dfb0f564f 100644 --- a/yuthon_purchase/report/purchase_order_print_templates.xml +++ b/yuthon_purchase/report/purchase_order_print_templates.xml @@ -41,7 +41,7 @@ 采购标的类型 - + 付款方式 From 94c49fdb59b76f73bf3444aab06c4a3e34c39311 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=8E=E9=B9=8F=E5=AE=87?= Date: Mon, 11 May 2026 15:35:28 +0800 Subject: [PATCH 11/16] =?UTF-8?q?=E5=AE=9E=E6=94=B6=E6=98=8E=E7=BB=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../views/property_lease_contract.xml | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/yuthon_property_approval/views/property_lease_contract.xml b/yuthon_property_approval/views/property_lease_contract.xml index 2d0c117b9..86077a343 100644 --- a/yuthon_property_approval/views/property_lease_contract.xml +++ b/yuthon_property_approval/views/property_lease_contract.xml @@ -954,7 +954,7 @@ - + @@ -963,9 +963,11 @@ - - - + + + + + From 21043f6423405f602ab84a64e297dc576d741635 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=8E=E9=B9=8F=E5=AE=87?= Date: Mon, 11 May 2026 16:00:32 +0800 Subject: [PATCH 12/16] =?UTF-8?q?=E8=AE=AE=E9=A2=98=E5=90=8D=E7=A7=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- yuthon_issue/views/issue_library_views.xml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/yuthon_issue/views/issue_library_views.xml b/yuthon_issue/views/issue_library_views.xml index b9a9cc4f9..0c62a17a5 100644 --- a/yuthon_issue/views/issue_library_views.xml +++ b/yuthon_issue/views/issue_library_views.xml @@ -431,7 +431,8 @@