From 6b94868489bbb8a9105e5b4ba8fc33aa88ce0ec4 Mon Sep 17 00:00:00 2001
From: zhou <123@>
Date: Mon, 26 May 2025 17:01:17 +0800
Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E5=8A=9F=E8=83=BD?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
yuthon_trade/__manifest__.py | 1 +
yuthon_trade/data/sale_renting_code_data.xml | 7 +++
yuthon_trade/models/__init__.py | 1 +
yuthon_trade/models/parking_fee_approval.py | 36 ++++++++++++
yuthon_trade/security/ir.model.access.csv | 1 +
.../views/parking_fee_approval_views.xml | 57 +++++++++++++++++++
yuthon_work_brand/views/executive_manage.xml | 5 ++
7 files changed, 108 insertions(+)
create mode 100644 yuthon_trade/models/parking_fee_approval.py
create mode 100644 yuthon_trade/views/parking_fee_approval_views.xml
diff --git a/yuthon_trade/__manifest__.py b/yuthon_trade/__manifest__.py
index 392aff946..fe270a720 100644
--- a/yuthon_trade/__manifest__.py
+++ b/yuthon_trade/__manifest__.py
@@ -34,6 +34,7 @@
'views/yuthon_task_approval_views.xml',
'views/trade_reward_approval_views.xml',
'views/yuthon_task_setting_views.xml',
+ 'views/parking_fee_approval_views.xml',
'views/yuthon_trade_menu.xml',
],
'demo': [],
diff --git a/yuthon_trade/data/sale_renting_code_data.xml b/yuthon_trade/data/sale_renting_code_data.xml
index 8fbdcf940..1b71a62eb 100644
--- a/yuthon_trade/data/sale_renting_code_data.xml
+++ b/yuthon_trade/data/sale_renting_code_data.xml
@@ -49,6 +49,13 @@
3
+
+ 停车费发票编号
+ parking_fee_approval_code
+ TC%(y)s%(month)s%(day)s
+ 3
+
+
个人慰问编号
property_personal_condolences_code
diff --git a/yuthon_trade/models/__init__.py b/yuthon_trade/models/__init__.py
index 1a70c1e69..ce104e578 100644
--- a/yuthon_trade/models/__init__.py
+++ b/yuthon_trade/models/__init__.py
@@ -24,3 +24,4 @@ from . import yuthon_seals_approval
from . import yuthon_business_approval
from . import inherit_workflow_record
from . import trade_project_approval
+from . import parking_fee_approval
diff --git a/yuthon_trade/models/parking_fee_approval.py b/yuthon_trade/models/parking_fee_approval.py
new file mode 100644
index 000000000..6aa089639
--- /dev/null
+++ b/yuthon_trade/models/parking_fee_approval.py
@@ -0,0 +1,36 @@
+# Part of Odoo. See LICENSE file for full copyright and licensing details.
+from odoo import models, fields, api, exceptions, _
+
+
+class ParkingFeeApproval(models.Model):
+ _name = 'parking.fee.approval'
+ _description = '停车费发票'
+ _inherit = ['soong.workflow.mixin', 'mail.thread.main.attachment', 'mail.activity.mixin']
+
+ code = fields.Char(string="流水号",
+ default=lambda self: self.env['ir.sequence'].next_by_code('parking_fee_approval_code'))
+ users_id = fields.Many2one('res.users', string="申请人", default=lambda self: self.env.user.id)
+ department_id = fields.Many2one(related='users_id.employee_id.department_id', string="申请部门")
+ urgency_level = fields.Selection([('normal', '普件'), ('urgent', '急件'), ('emergency', '特急件')], string='紧急度',
+ default='normal')
+ date_application = fields.Date(string="申请日期")
+ license_plate = fields.Text(string="车牌号")
+ text = fields.Text(string='事由')
+ unit = fields.Text(string="单位")
+ name = fields.Char(string="标题", compute='_compute_name')
+ duration = fields.Integer(string="时长")
+
+ def _get_default_name_title(self):
+ return self._description if self._description else self._name
+
+ name_title = fields.Char(default=_get_default_name_title)
+
+ @api.depends('license_plate', 'date_application', 'duration')
+ def _compute_name(self):
+ for rec in self:
+ if rec.license_plate and rec.date_application and rec.duration:
+ date_str = rec.date_application.strftime('%Y-%m-%d')
+ rec.name = f"{rec.license_plate}{date_str}{rec.duration}小时"
+ else:
+ rec.name = self._description
+
diff --git a/yuthon_trade/security/ir.model.access.csv b/yuthon_trade/security/ir.model.access.csv
index 0b4cb45b5..ad84f43ca 100644
--- a/yuthon_trade/security/ir.model.access.csv
+++ b/yuthon_trade/security/ir.model.access.csv
@@ -33,6 +33,7 @@ access_sending_unit_setting,sending_unit_setting,model_sending_unit_setting,base
access_trade_project_approval,trade_project_approval,model_trade_project_approval,base.group_user,1,1,1,1
access_project_funding_setting,project_funding_setting,model_project_funding_setting,base.group_user,1,1,1,1
access_yuthon_mutual_type,yuthon_mutual_type,model_yuthon_mutual_type,base.group_user,1,1,1,1
+access_parking_fee_approval,parking_fee_approval,model_parking_fee_approval,base.group_user,1,1,1,1
access_project_classify_setting,project_classify_setting,model_project_classify_setting,base.group_user,1,1,1,1
diff --git a/yuthon_trade/views/parking_fee_approval_views.xml b/yuthon_trade/views/parking_fee_approval_views.xml
new file mode 100644
index 000000000..e479d29e6
--- /dev/null
+++ b/yuthon_trade/views/parking_fee_approval_views.xml
@@ -0,0 +1,57 @@
+
+
+
+ parking.fee.approval.tree
+ parking.fee.approval
+
+
+
+
+
+
+
+
+ parking.fee.approval.form
+ parking.fee.approval
+
+
+
+
+
+ 停车票发放
+ parking.fee.approval
+ tree,form
+
+
\ No newline at end of file
diff --git a/yuthon_work_brand/views/executive_manage.xml b/yuthon_work_brand/views/executive_manage.xml
index 33b5fa23e..4d5c5d811 100644
--- a/yuthon_work_brand/views/executive_manage.xml
+++ b/yuthon_work_brand/views/executive_manage.xml
@@ -105,6 +105,11 @@
parent="administrative_offices_root_board"
action="yuthon_trade.view_yuthon_seals_approval_action"
sequence="80"/>
+