diff --git a/yuthon_hr_attendance/views/yuthon_vacation_reports_views.xml b/yuthon_hr_attendance/views/yuthon_vacation_reports_views.xml
index eafe6843d..9903be318 100644
--- a/yuthon_hr_attendance/views/yuthon_vacation_reports_views.xml
+++ b/yuthon_hr_attendance/views/yuthon_vacation_reports_views.xml
@@ -43,6 +43,7 @@
+
diff --git a/yuthon_property/models/property_bank_statements.py b/yuthon_property/models/property_bank_statements.py
index e34750213..b07d7991a 100644
--- a/yuthon_property/models/property_bank_statements.py
+++ b/yuthon_property/models/property_bank_statements.py
@@ -47,6 +47,44 @@ class PropertyBankStatements(models.Model):
change_amount = fields.Float(string='修改金额')
receivable_modify_ids = fields.One2many('receivable.modify.line', 'bank_id', string='修改应收单')
+ def update_record(self):
+ selected_records = self.env["property.bank.statements"].browse(
+ self._context.get('active_ids', self._context.get('active_id'))
+ )
+
+ duplicate_groups = {}
+ for record in selected_records:
+ time_key = record.start_time.strftime('%Y-%m-%d %H:%M:%S') if record.start_time else 'no_time'
+ amount_key = round(record.original_amount, 2)
+ group_key = (time_key, amount_key)
+
+ if group_key not in duplicate_groups:
+ duplicate_groups[group_key] = self.env["property.bank.statements"]
+ duplicate_groups[group_key] |= record
+
+ deleted_count = 0
+ kept_records = self.env["property.bank.statements"]
+
+ for group_key, group_records in duplicate_groups.items():
+ if len(group_records) == 1:
+ kept_records |= group_records
+ continue
+
+ reconciled_records = group_records.filtered(lambda r: r.bank_state == 'reconciled')
+
+ if reconciled_records:
+ keep_record = reconciled_records[0]
+ kept_records |= keep_record
+ delete_records = group_records - keep_record
+ else:
+ keep_record = group_records[0]
+ kept_records |= keep_record
+ delete_records = group_records
+
+ if delete_records:
+ delete_records.unlink()
+ deleted_count += len(delete_records)
+
@api.onchange('extract')
def _onchange_extract_set_bank_state(self):
for rec in self: