diff --git a/yuthon_salary/__manifest__.py b/yuthon_salary/__manifest__.py
index 5151f650f..4d4ec6f2b 100644
--- a/yuthon_salary/__manifest__.py
+++ b/yuthon_salary/__manifest__.py
@@ -55,6 +55,10 @@
'wizard/select_delete_wizard_viwes.xml',
'wizard/put_return_wizard_viwes.xml',
'wizard/salary_print_wizard_views.xml',
+ 'wizard/meal_expenses_review_wizard_views.xml',
+ 'wizard/party_expenses_review_wizard_views.xml',
+
+
],
'assets': {
'web.assets_backend': [
diff --git a/yuthon_salary/models/yuthon_meal_expenses.py b/yuthon_salary/models/yuthon_meal_expenses.py
index d5419a19d..80c4ce595 100644
--- a/yuthon_salary/models/yuthon_meal_expenses.py
+++ b/yuthon_salary/models/yuthon_meal_expenses.py
@@ -21,7 +21,12 @@ class YuthonMealExpenses(models.Model):
select_year = fields.Selection(selection=[(str(i), str(i)) for i in range(2024, 2040)], string='年份',
default=lambda self: str(datetime.now().year))
meal_state = fields.Selection([('to_do', '待发送'), ('done', '已发送')], string='状态', default='to_do')
- toll_state = fields.Selection([('to_do', '待缴'), ('done', '已缴')], string='缴费状态', default='to_do')
+ toll_state = fields.Selection([
+ ('to_do', '待缴'),
+ ('done', '待复核确认'),
+ ('paid', '已缴费'),
+ ], string='缴费状态', default='to_do')
+
def _get_date_range(self):
@@ -63,6 +68,23 @@ class YuthonMealExpenses(models.Model):
def toll_confirm(self):
self.toll_state = 'done'
+ def action_review_confirm(self):
+ """打开缴费复核确认弹窗,只对状态为待复核确认的记录生效"""
+ self.ensure_one()
+ if self.toll_state != 'done':
+ return
+ return {
+ 'type': 'ir.actions.act_window',
+ 'name': '复核确认',
+ 'res_model': 'meal.expenses.review.wizard',
+ 'view_mode': 'form',
+ 'target': 'new',
+ 'context': {
+ 'default_meal_id': self.id,
+ },
+ }
+
+
def _get_default_month(self):
current_month = datetime.now().month
return str(current_month)
diff --git a/yuthon_salary/models/yuthon_salary_party.py b/yuthon_salary/models/yuthon_salary_party.py
index d0c01d9aa..394e3e60b 100644
--- a/yuthon_salary/models/yuthon_salary_party.py
+++ b/yuthon_salary/models/yuthon_salary_party.py
@@ -20,11 +20,33 @@ class YuthonSalaryParty(models.Model):
select_year = fields.Selection(selection=[(str(i), str(i)) for i in range(2024, 2040)], string='年份',
default=lambda self: str(datetime.now().year))
party_state = fields.Selection([('to_do', '待发送'), ('done', '已发送')], string='状态', default='to_do')
- toll_state = fields.Selection([('to_do', '待缴'), ('done', '已缴')], string='缴费状态', default='to_do')
+ toll_state = fields.Selection([
+ ('to_do', '待缴'),
+ ('done', '待复核确认'),
+ ('paid', '已缴费'),
+ ], string='缴费状态', default='to_do')
def toll_confirm(self):
+ # 员工确认已缴费,状态进入待复核确认
self.toll_state = 'done'
+ def action_party_review_confirm(self):
+ """打开党费缴费复核确认弹窗,只对状态为待复核确认的记录生效"""
+ self.ensure_one()
+ if self.toll_state != 'done':
+ return
+ return {
+ 'type': 'ir.actions.act_window',
+ 'name': '复核确认',
+ 'res_model': 'party.expenses.review.wizard',
+ 'view_mode': 'form',
+ 'target': 'new',
+ 'context': {
+ 'default_party_id': self.id,
+ },
+ }
+
+
def _get_default_month(self):
current_month = datetime.now().month
return str(current_month)
diff --git a/yuthon_salary/views/yuthon_meal_expenses_views.xml b/yuthon_salary/views/yuthon_meal_expenses_views.xml
index 13f5b6f8d..77c122594 100644
--- a/yuthon_salary/views/yuthon_meal_expenses_views.xml
+++ b/yuthon_salary/views/yuthon_meal_expenses_views.xml
@@ -39,6 +39,8 @@
+
+
@@ -55,7 +57,10 @@
-
+
+
+
+
diff --git a/yuthon_salary/views/yuthon_salary_party_views.xml b/yuthon_salary/views/yuthon_salary_party_views.xml
index 012f879c5..c547645fc 100644
--- a/yuthon_salary/views/yuthon_salary_party_views.xml
+++ b/yuthon_salary/views/yuthon_salary_party_views.xml
@@ -16,6 +16,8 @@
+
+
@@ -32,7 +34,9 @@
-
+
+
+
diff --git a/yuthon_salary/wizard/__init__.py b/yuthon_salary/wizard/__init__.py
index 171ff8854..221c682c2 100644
--- a/yuthon_salary/wizard/__init__.py
+++ b/yuthon_salary/wizard/__init__.py
@@ -18,4 +18,7 @@ from . import salary_import_wizard
from . import party_send_wizard
from . import party_meal_wizard
from . import salary_meal_wizard
-from . import salary_active_wizard
\ No newline at end of file
+from . import salary_active_wizard
+from . import party_expenses_review_wizard
+
+from . import meal_expenses_review_wizard
diff --git a/yuthon_salary/wizard/meal_expenses_review_wizard.py b/yuthon_salary/wizard/meal_expenses_review_wizard.py
new file mode 100644
index 000000000..15da64efd
--- /dev/null
+++ b/yuthon_salary/wizard/meal_expenses_review_wizard.py
@@ -0,0 +1,22 @@
+from odoo import models, fields
+
+
+class MealExpensesReviewWizard(models.TransientModel):
+ _name = 'meal.expenses.review.wizard'
+ _description = '餐费缴费复核确认向导'
+
+ meal_id = fields.Many2one('yuthon.meal.expenses', string='餐费记录', required=True)
+
+ def action_confirm_paid(self):
+ """确认已复核:将缴费状态改为已缴费"""
+ self.ensure_one()
+ if self.meal_id:
+ self.meal_id.toll_state = 'paid'
+ return {'type': 'ir.actions.act_window_close'}
+
+ def action_return_to_todo(self):
+ """退回:将缴费状态改回待缴"""
+ self.ensure_one()
+ if self.meal_id:
+ self.meal_id.toll_state = 'to_do'
+ return {'type': 'ir.actions.act_window_close'}
diff --git a/yuthon_salary/wizard/meal_expenses_review_wizard_views.xml b/yuthon_salary/wizard/meal_expenses_review_wizard_views.xml
new file mode 100644
index 000000000..65d734951
--- /dev/null
+++ b/yuthon_salary/wizard/meal_expenses_review_wizard_views.xml
@@ -0,0 +1,25 @@
+
+
+
+ meal.expenses.review.wizard.form
+ meal.expenses.review.wizard
+
+
+
+
+
diff --git a/yuthon_salary/wizard/party_expenses_review_wizard.py b/yuthon_salary/wizard/party_expenses_review_wizard.py
new file mode 100644
index 000000000..13bd36755
--- /dev/null
+++ b/yuthon_salary/wizard/party_expenses_review_wizard.py
@@ -0,0 +1,22 @@
+from odoo import models, fields
+
+
+class PartyExpensesReviewWizard(models.TransientModel):
+ _name = 'party.expenses.review.wizard'
+ _description = '党费缴费复核确认向导'
+
+ party_id = fields.Many2one('yuthon.salary.party', string='党费记录', required=True)
+
+ def action_confirm_paid(self):
+ """确认已复核:将缴费状态改为已缴费"""
+ self.ensure_one()
+ if self.party_id:
+ self.party_id.toll_state = 'paid'
+ return {'type': 'ir.actions.act_window_close'}
+
+ def action_return_to_todo(self):
+ """退回:将缴费状态改回待缴"""
+ self.ensure_one()
+ if self.party_id:
+ self.party_id.toll_state = 'to_do'
+ return {'type': 'ir.actions.act_window_close'}
diff --git a/yuthon_salary/wizard/party_expenses_review_wizard_views.xml b/yuthon_salary/wizard/party_expenses_review_wizard_views.xml
new file mode 100644
index 000000000..3f344e165
--- /dev/null
+++ b/yuthon_salary/wizard/party_expenses_review_wizard_views.xml
@@ -0,0 +1,20 @@
+
+
+
+ party.expenses.review.wizard.form
+ party.expenses.review.wizard
+
+
+
+
+