diff --git a/room/models/room_room.py b/room/models/room_room.py
index 33f20a261..8705f524c 100644
--- a/room/models/room_room.py
+++ b/room/models/room_room.py
@@ -22,7 +22,6 @@ class Room(models.Model):
name = fields.Char(string="会议室", required=True, tracking=2)
description = fields.Html(string="Amenities", translate=html_translate, sanitize=False)
office_id = fields.Many2one("room.office", string="Office", tracking=3)
- company_id = fields.Many2one(related="office_id.company_id", string="Company", store=True)
room_booking_ids = fields.One2many("room.booking", "room_id", string="Bookings")
short_code = fields.Char("Short Code", default=lambda self: str(uuid4())[:8], copy=False, required=True, tracking=1)
# Technical/Statistics
@@ -42,7 +41,7 @@ class Room(models.Model):
meet_equipment = fields.Char(string="会议室设备")
office_address = fields.Char(string="会议室地址", required=True)
- department_id = fields.Many2one("hr.department", string="公司", required=True)
+ company_id = fields.Many2one("hr.department", string="公司", required=True)
meeting_type_template = fields.Selection([('template1', '默认模板')], string='会议室模板')
meet_document_id = fields.Many2one('documents.document', string="布局图片")
meet_capacity = fields.Integer(string="容纳人数", required=True)
diff --git a/room/views/room_room_views.xml b/room/views/room_room_views.xml
index f4a0c7d00..e7e5c5519 100644
--- a/room/views/room_room_views.xml
+++ b/room/views/room_room_views.xml
@@ -14,7 +14,7 @@
-
+
@@ -55,7 +55,7 @@
Create Rooms
diff --git a/soong_workflow/models/soong_workflow_inspector.py b/soong_workflow/models/soong_workflow_inspector.py
index d6a607b9d..31f60f08e 100644
--- a/soong_workflow/models/soong_workflow_inspector.py
+++ b/soong_workflow/models/soong_workflow_inspector.py
@@ -12,7 +12,7 @@ class SoongWorkflowInspector(models.Model):
name = fields.Char(string="标题")
start_data = fields.Date(string="督办日期")
end_data = fields.Date(string="完成日期")
- reason = fields.Html(string="正文")
+ reason = fields.Text(string="正文")
user_id = fields.Many2one('res.users', string="申请人", default=lambda self: self.env.user)
department_id = fields.Many2one(related='user_id.department_id', string="部门")
code = fields.Char(string="督办编号", default=lambda self: self.env['ir.sequence'].next_by_code('inspector_code'))
diff --git a/soong_workflow/templates/soong_workflow_templates.xml b/soong_workflow/templates/soong_workflow_templates.xml
index 774376f3d..b2de86f7c 100644
--- a/soong_workflow/templates/soong_workflow_templates.xml
+++ b/soong_workflow/templates/soong_workflow_templates.xml
@@ -28,13 +28,14 @@
-
+
-
+
+
@@ -78,7 +79,7 @@
-
+
diff --git a/soong_workflow/views/menuitem.xml b/soong_workflow/views/menuitem.xml
index f4b11c6ce..77fbe58e4 100644
--- a/soong_workflow/views/menuitem.xml
+++ b/soong_workflow/views/menuitem.xml
@@ -21,20 +21,20 @@
parent="menu_soong_workflow_root"
action="soong_workflow_other_record_action"
sequence="4"/>
-
-
+
+
soong.workflow.record
tree,kanban,search
- [('reclaim_state', '=', False), ('approvals_group_id.name', '=', '人力资源')]
+ [('reclaim_state', '=', False), '|', ('approvals_group_id.name', '=', '人力资源'), ('approvals_group_id.name', '=', '考勤')]
@@ -128,7 +128,8 @@
ir.actions.act_window
soong.workflow.record
tree,kanban,search
- [('reclaim_state', '=', False), ('approvals_group_id.name', '!=', '人力资源')]
+ [('reclaim_state', '=', False), ('approvals_group_id.name', '!=', '人力资源'), ('approvals_group_id.name', '!=', '考勤')]
+ {'search_default_my_department_shifts': True,}
diff --git a/soong_workflow/wizard/soong_workflow_comment_wizard.py b/soong_workflow/wizard/soong_workflow_comment_wizard.py
index 9dd784b8d..ff17e6b54 100644
--- a/soong_workflow/wizard/soong_workflow_comment_wizard.py
+++ b/soong_workflow/wizard/soong_workflow_comment_wizard.py
@@ -45,6 +45,25 @@ class SoongWorkflowCommentWizard(models.TransientModel):
string="督办人员", store=True)
is_automatic = fields.Boolean('是否自动匹配')
+ employee_ids1 = fields.Many2many(
+ 'hr.employee',
+ 'employee_ids1_rel',
+ 'custom_id1',
+ 'employee_id1',
+ string="转交人员",
+ store=True
+ )
+
+ @api.onchange('employee_ids')
+ def _onchange_employee_ids(self):
+ if len(self.employee_ids) == 1:
+ self.employee_ids1 = self.employee_ids
+
+ @api.constrains('employee_ids1')
+ def _check_employee_ids1(self):
+ if not self.employee_ids1:
+ raise ValidationError("必须有转交人员")
+
@api.depends('comment_note_id', 'comment_note')
def _compute_comment(self):
for record in self:
@@ -85,15 +104,15 @@ class SoongWorkflowCommentWizard(models.TransientModel):
if '转交' not in next_list:
raise UserError('配置错误,请配置当前{}的转交按钮'.format(btn.name))
else:
- if btn.is_automatic:
- employee_user_role_id = self.env['hr.employee'].search(
- [('user_role_id', '=', btn.users_role_id.id),
- ('department_id', '=', record_id.department_id.id)])
+ employee_user_role_id = self.env['hr.employee'].search(
+ [('user_role_id', '=', btn.users_role_id.id),
+ ('department_id', '=', record_id.department_id.id)])
+ if employee_user_role_id:
self.employee_ids = employee_user_role_id
else:
- employee_user_role_ids = self.env['hr.employee'].search(
- [('user_role_id', '=', btn.users_role_id.id)])
- self.employee_ids = employee_user_role_ids
+ raise UserError('下一个流程节点没有匹配的人员,请联系管理员配置')
+ if btn.is_automatic:
+ self.employee_ids1 = employee_user_role_id
@api.onchange('trans_link_id')
def onchange_trans_employee_ids(self):
diff --git a/soong_workflow/wizard/soong_workflow_comment_wizard_view.xml b/soong_workflow/wizard/soong_workflow_comment_wizard_view.xml
index cf6e0e92b..2cf82bc7c 100644
--- a/soong_workflow/wizard/soong_workflow_comment_wizard_view.xml
+++ b/soong_workflow/wizard/soong_workflow_comment_wizard_view.xml
@@ -48,7 +48,8 @@
-
+
+
当前流程是否结束,请确认
diff --git a/soong_workflow/wizard/soong_workflow_record_revoke_wizard_view.xml b/soong_workflow/wizard/soong_workflow_record_revoke_wizard_view.xml
index bf3aedff0..c733002e9 100644
--- a/soong_workflow/wizard/soong_workflow_record_revoke_wizard_view.xml
+++ b/soong_workflow/wizard/soong_workflow_record_revoke_wizard_view.xml
@@ -6,7 +6,7 @@
form
@@ -84,21 +85,26 @@
+
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/yuthon_purchase/__manifest__.py b/yuthon_purchase/__manifest__.py
index 49aaf4b1d..8e16667b2 100644
--- a/yuthon_purchase/__manifest__.py
+++ b/yuthon_purchase/__manifest__.py
@@ -1,15 +1,19 @@
# -*- coding: utf-8 -*-
{
- 'name': "Yuthon PurchaseOrder",
+ 'name': "Yuthon Purchase Order",
'summary': "",
'description': """采购单 """,
'category': 'zhou',
'version': '0.1',
'license': 'LGPL-3',
- 'depends': ['base', 'soong_workflow', 'hr', 'product', 'documents', 'purchase'],
+ 'depends': ['base', 'soong_workflow', 'hr', 'product', 'documents', 'purchase', ],
'data': [
'security/ir.model.access.csv',
+ 'data/purchase_data.xml',
'views/inherit_purchase_order_views.xml',
+ 'views/purchase_low_orders_views.xml',
+ 'views/purchase_service_orders_views.xml',
+ 'views/menu.xml',
],
'installable': True,
'application': True,
diff --git a/yuthon_purchase/data/purchase_data.xml b/yuthon_purchase/data/purchase_data.xml
new file mode 100644
index 000000000..277fcbfcd
--- /dev/null
+++ b/yuthon_purchase/data/purchase_data.xml
@@ -0,0 +1,27 @@
+
+
+
+ 低值易耗采购单编号
+ purchase_low_orders_code
+ DZ%(y)s%(month)s%(day)s
+ 3
+
+
+
+
+ 服务采购单编号
+ purchase_service_orders_code
+ FW%(y)s%(month)s%(day)s
+ 3
+
+
+
+
+ 会议纪要编号
+ issue_meeting_minutes_code
+ HY%(y)s%(month)s%(day)s
+ 3
+
+
+
+
\ No newline at end of file
diff --git a/yuthon_purchase/models/__init__.py b/yuthon_purchase/models/__init__.py
index 5799c1a8d..9311d5a07 100644
--- a/yuthon_purchase/models/__init__.py
+++ b/yuthon_purchase/models/__init__.py
@@ -1,2 +1,4 @@
# -*- coding: utf-8 -*-
from . import inherit_purchase_order
+from . import purchase_low_orders
+from . import purchase_service_orders
\ No newline at end of file
diff --git a/yuthon_purchase/models/inherit_purchase_order.py b/yuthon_purchase/models/inherit_purchase_order.py
index f65e08f3e..c0990f1c6 100644
--- a/yuthon_purchase/models/inherit_purchase_order.py
+++ b/yuthon_purchase/models/inherit_purchase_order.py
@@ -11,12 +11,8 @@ class PurchaseOrder(models.Model):
department_id = fields.Many2one(related='user_id.employee_id.department_id', string="部门")
start_date = fields.Date(string="申请日期", default=fields.Date.today)
code = fields.Char(string="合同编号")
- reason_text = fields.Html(string='申请事由')
+ reason_text = fields.Text(string='申请事由')
document_ids = fields.Many2many('ir.attachment', string="附件")
- service_content = fields.Text(string="服务内容")
- service_start_date = fields.Date(string="服务开始时间")
- service_end_date = fields.Date(string="服务结束时间")
- type_of_procurement = fields.Selection([('service', '服务'), ('product', '低值易耗'), ('fixed', '固定资产')], string="采购类型")
purchase_order_models_ids = fields.One2many('purchase.order.pay.line', 'purchase_id', string="付款详情")
@@ -25,7 +21,9 @@ class PurchaseOrderPayLine(models.Model):
_description = "付款详情"
purchase_id = fields.Many2one('purchase.order', string="关联采购单")
+ low_id = fields.Many2one('purchase.low.orders', string="关联低值易耗采购单")
+ service_id = fields.Many2one('purchase.service.orders', string="关联服务采购单")
payment_stage = fields.Char(string="付款阶段")
- amount = fields.Char(string="比例/金额")
+ amount = fields.Char(string="比例/金额")
payment_date = fields.Date(string="付款日期")
remake = fields.Char(string="条件")
\ No newline at end of file
diff --git a/yuthon_purchase/models/purchase_low_orders.py b/yuthon_purchase/models/purchase_low_orders.py
new file mode 100644
index 000000000..28aeebb82
--- /dev/null
+++ b/yuthon_purchase/models/purchase_low_orders.py
@@ -0,0 +1,47 @@
+# -*- coding: utf-8 -*-
+from odoo import api, fields, models
+
+
+class PurchaseLowOrders(models.Model):
+ _name = 'purchase.low.orders'
+ _description = '低值易耗采购单'
+ _inherit = ['soong.workflow.mixin']
+
+ name = fields.Char(string="标题")
+ code = fields.Char(string="合同编号", default=lambda self: self.env['ir.sequence'].next_by_code('purchase_low_orders_code'))
+ user_id = fields.Many2one('res.users', string="申请人", default=lambda self: self.env.user.id)
+ date_application = fields.Date(string="申请日期", default=fields.Date.today())
+ company_id = fields.Many2one('res.company', string='公司', index=True, default=lambda self: self.env.company)
+ reason_application = fields.Text(string="申请事由")
+ department_id = fields.Many2one(related='user_id.employee_id.department_id', string="申请部门")
+ partyB = fields.Many2one('res.partner', string="乙方")
+ document_ids = fields.Many2many('ir.attachment', string="附件")
+ pay_way = fields.Selection([('staging', '分期'), ('full', '一次性')], string='付款方式', default='full')
+ total = fields.Float(string="合计")
+ urgency_level = fields.Selection([('normal', '普件'), ('urgent', '急件'), ('emergency', '特急件')], string='紧急度',
+ default='normal')
+ work_end = fields.Boolean(string="结束")
+ active = fields.Boolean('Active', default=True, tracking=True)
+ low_line_ids = fields.One2many('purchase.low.line', 'purchase_id', string="采购明细")
+ purchase_ids = fields.One2many('purchase.order.pay.line', 'low_id', 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)
+
+
+class PurchaseLowLine(models.Model):
+ _name = 'purchase.low.line'
+ _description = '低值易耗采购单明细'
+
+ purchase_id = fields.Many2one('purchase.low.orders', string="关联采购单")
+ name = fields.Char(string="物品名称")
+ brand = fields.Char(string="品牌")
+ specs = fields.Char(string="规格")
+ number = fields.Integer(string="数量")
+ unit = fields.Char(string="单位")
+ price = fields.Float(string="单价")
+
+
+
diff --git a/yuthon_purchase/models/purchase_service_orders.py b/yuthon_purchase/models/purchase_service_orders.py
new file mode 100644
index 000000000..629430127
--- /dev/null
+++ b/yuthon_purchase/models/purchase_service_orders.py
@@ -0,0 +1,51 @@
+# -*- coding: utf-8 -*-
+from odoo import api, fields, models
+
+
+class PurchaseServiceOrders(models.Model):
+ _name = 'purchase.service.orders'
+ _description = '服务采购单'
+ _inherit = ['soong.workflow.mixin']
+
+ name = fields.Char(string="标题")
+ code = fields.Char(string="合同编号", default=lambda self: self.env['ir.sequence'].next_by_code('purchase_service_orders_code'))
+ user_id = fields.Many2one('res.users', string="申请人", default=lambda self: self.env.user.id)
+ date_application = fields.Date(string="申请日期", default=fields.Date.today())
+ company_id = fields.Many2one('res.company', string='公司', index=True, default=lambda self: self.env.company)
+ reason_application = fields.Text(string="申请事由")
+ service_content = fields.Text(string="服务内容")
+ service_start_date = fields.Date(string="服务开始日期")
+ service_end_date = fields.Date(string="服务结束日期")
+ department_id = fields.Many2one(related='user_id.employee_id.department_id', string="申请部门")
+ partyB = fields.Many2one('res.partner', string="乙方")
+ document_ids = fields.Many2many('ir.attachment', string="附件")
+ pay_way = fields.Selection([('staging', '分期'), ('full', '一次性')], string='付款方式', default='full')
+ total = fields.Float(string="合计")
+ urgency_level = fields.Selection([('normal', '普件'), ('urgent', '急件'), ('emergency', '特急件')], string='紧急度',
+ default='normal')
+ work_end = fields.Boolean(string="结束")
+ active = fields.Boolean('Active', default=True, tracking=True)
+ service_line_ids = fields.One2many('purchase.service.line', 'service_id', string="采购明细")
+ purchase_ids = fields.One2many('purchase.order.pay.line', 'service_id', 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)
+
+
+class PurchaseServiceLine(models.Model):
+ _name = 'purchase.service.line'
+ _description = '服务采购单明细'
+
+ service_id = fields.Many2one('purchase.service.orders', string="关联采购单")
+ name = fields.Char(string="服务项目")
+ frequency = fields.Char(string='频次')
+ fee = fields.Float(string="费用")
+ unit = fields.Char(string="单位")
+ partyB = fields.Many2one('res.partner', string="供应商")
+ price = fields.Float(string="单价")
+
+
+
+
diff --git a/yuthon_purchase/security/ir.model.access.csv b/yuthon_purchase/security/ir.model.access.csv
index 209306e1a..ecffa34ef 100644
--- a/yuthon_purchase/security/ir.model.access.csv
+++ b/yuthon_purchase/security/ir.model.access.csv
@@ -1,2 +1,6 @@
id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink
-access_purchase_order_pay_line, purchase_order_pay_line,model_purchase_order_pay_line,,1,1,1,1
\ No newline at end of file
+access_purchase_order_pay_line, purchase_order_pay_line,model_purchase_order_pay_line,,1,1,1,1
+access_purchase_low_orders, purchase_low_orders,model_purchase_low_orders,,1,1,1,1
+access_purchase_service_orders, purchase_service_orders,model_purchase_service_orders,,1,1,1,1
+access_purchase_low_line, purchase_low_line,model_purchase_low_line,,1,1,1,1
+access_purchase_service_line, purchase_service_line,model_purchase_service_line,,1,1,1,1
\ No newline at end of file
diff --git a/yuthon_purchase/views/inherit_purchase_order_views.xml b/yuthon_purchase/views/inherit_purchase_order_views.xml
index 62b88840d..7fb959295 100644
--- a/yuthon_purchase/views/inherit_purchase_order_views.xml
+++ b/yuthon_purchase/views/inherit_purchase_order_views.xml
@@ -9,11 +9,7 @@
-
-
-
-
-
+
diff --git a/yuthon_purchase/views/menu.xml b/yuthon_purchase/views/menu.xml
new file mode 100644
index 000000000..d9101dad0
--- /dev/null
+++ b/yuthon_purchase/views/menu.xml
@@ -0,0 +1,11 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/yuthon_purchase/views/purchase_low_orders_views.xml b/yuthon_purchase/views/purchase_low_orders_views.xml
new file mode 100644
index 000000000..7c3d5e125
--- /dev/null
+++ b/yuthon_purchase/views/purchase_low_orders_views.xml
@@ -0,0 +1,102 @@
+
+
+
+ purchase.low.orders.tree
+ purchase.low.orders
+
+
+
+
+
+
+
+
+ purchase.low.orders.form
+ purchase.low.orders
+
+
+
+
+
+ 低值易耗品采购单
+ purchase.low.orders
+ tree,form
+
+
diff --git a/yuthon_purchase/views/purchase_service_orders_views.xml b/yuthon_purchase/views/purchase_service_orders_views.xml
new file mode 100644
index 000000000..e781c2924
--- /dev/null
+++ b/yuthon_purchase/views/purchase_service_orders_views.xml
@@ -0,0 +1,109 @@
+
+
+
+ purchase.service.orders.tree
+ purchase.service.orders
+
+
+
+
+
+
+
+
+ purchase.service.orders.form
+ purchase.service.orders
+
+
+
+
+
+ 服务采购单
+ purchase.service.orders
+ tree,form
+
+
+
+
+
+
diff --git a/yuthon_sps_approval/models/yuthon_office_supplies.py b/yuthon_sps_approval/models/yuthon_office_supplies.py
index 831805f47..fd8d0f2f5 100644
--- a/yuthon_sps_approval/models/yuthon_office_supplies.py
+++ b/yuthon_sps_approval/models/yuthon_office_supplies.py
@@ -13,7 +13,7 @@ class YuthonOfficeSupplies(models.Model):
issues_result = fields.Html(string="会议结果")
users_id = fields.Many2one('res.users', string="申请人", default=lambda self: self.env.user.id)
department_id = fields.Many2one('hr.department', string="部门", related='users_id.employee_id.department_id')
- reason_application = fields.Html(string="事由")
+ reason_application = fields.Text(string="事由")
date = fields.Date(string="申请日期", default=fields.Date.today())
related_issues_id = fields.Many2one('issue.library', string="关联议题")
office_supplies_ids = fields.One2many('yuthon.office.supplies.line', 'supplies_id', string="关联办公用品申请明细")
diff --git a/yuthon_trade/__manifest__.py b/yuthon_trade/__manifest__.py
index 54982857e..8fd069cf4 100644
--- a/yuthon_trade/__manifest__.py
+++ b/yuthon_trade/__manifest__.py
@@ -28,6 +28,7 @@
'views/yuthon_none_views.xml',
'views/yuthon_mutual_approval_views.xml',
'views/yuthon_care_condolences_views.xml',
+ 'views/trade_project_approval_views.xml',
'views/yuthon_trade_setting_views.xml',
'views/yuthon_work_condolences_views.xml',
'views/yuthon_task_approval_views.xml',
@@ -36,7 +37,7 @@
'views/yuthon_trade_menu.xml',
],
'demo': [],
- 'depends': ['mail', 'documents', 'soong_workflow', 'yuthon_work_brand', 'hr', 'yuthon_hr_employee', 'yuthon_issue'],
+ 'depends': ['mail', 'documents', 'soong_workflow', 'yuthon_work_brand', 'hr', 'yuthon_hr_employee', 'yuthon_issue', 'project'],
'installable': True,
'application': True,
}
diff --git a/yuthon_trade/data/sale_renting_code_data.xml b/yuthon_trade/data/sale_renting_code_data.xml
index a38b56a33..1da61e2b7 100644
--- a/yuthon_trade/data/sale_renting_code_data.xml
+++ b/yuthon_trade/data/sale_renting_code_data.xml
@@ -1,5 +1,12 @@
+
+ 立项申请编号
+ trade_project_approval_code
+ LX%(y)s%(month)s%(day)s
+ 3
+
+
节日慰问编号
property_work_condolences_code
diff --git a/yuthon_trade/models/__init__.py b/yuthon_trade/models/__init__.py
index 6d2460466..1a70c1e69 100644
--- a/yuthon_trade/models/__init__.py
+++ b/yuthon_trade/models/__init__.py
@@ -23,3 +23,4 @@ from . import trade_reward_approval
from . import yuthon_seals_approval
from . import yuthon_business_approval
from . import inherit_workflow_record
+from . import trade_project_approval
diff --git a/yuthon_trade/models/trade_project_approval.py b/yuthon_trade/models/trade_project_approval.py
new file mode 100644
index 000000000..c9f747b03
--- /dev/null
+++ b/yuthon_trade/models/trade_project_approval.py
@@ -0,0 +1,52 @@
+# Part of Odoo. See LICENSE file for full copyright and licensing details.
+from odoo import models, fields, api, exceptions, _
+
+
+class TradeProjectApproval(models.Model):
+ _name = 'trade.project.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('trade_project_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="申请日期")
+ text = fields.Text(string='正文')
+ name = fields.Char(string="项目名称")
+ project_classify_id = fields.Many2one('project.classify.setting', string="项目分类")
+ start_date = fields.Date(string="计划开始")
+ end_date = fields.Date(string="计划完成")
+ plan_duration = fields.Integer(string="计划工期")
+ funding_id = fields.Many2one('project.funding.setting', string="资金来源")
+ employee_id = fields.Many2one('hr.employee', string="分管领导")
+ project_invest = fields.Float(string="项目总投资")
+ projected_earnings = fields.Float(string="预计投资收益")
+ project_content = fields.Text(string="项目概括")
+ project_goal = fields.Text(string="项目目标")
+ expected_results = fields.Text(string="预期成果")
+ document_ids = fields.Many2many('ir.attachment', string="立项文件")
+ work_end = fields.Boolean(string="结束")
+ active = fields.Boolean('Active', default=True, tracking=True)
+
+ def _get_default_name_title(self):
+ return self._description if self._description else self._name
+
+ name_title = fields.Char(default=_get_default_name_title)
+
+ # 项目归属
+ project_belong_id = fields.Many2one('res.users', string="项目负责人")
+ project_department_id = fields.Many2one('hr.department', string="项目部门")
+
+ def approval_end(self):
+ for rec in self:
+ self.env['project.project'].create({
+ 'name' : rec.name,
+ 'user_id' : rec.project_belong_id.id,
+ 'company_id': rec.user_id.employee_id.company_id.id,
+ })
+
+
diff --git a/yuthon_trade/models/trade_reward_approval.py b/yuthon_trade/models/trade_reward_approval.py
index fcd1d2df7..9ef435541 100644
--- a/yuthon_trade/models/trade_reward_approval.py
+++ b/yuthon_trade/models/trade_reward_approval.py
@@ -1,7 +1,7 @@
# Part of Odoo. See LICENSE file for full copyright and licensing details.
-
from odoo import models, fields, api, exceptions, _
+
class TradeRewardApproval(models.Model):
_name = 'trade.reward.approval'
_description = '奖励申报呈批表'
diff --git a/yuthon_trade/models/yuthon_business_approval.py b/yuthon_trade/models/yuthon_business_approval.py
index 482cfe0a7..463783ef2 100644
--- a/yuthon_trade/models/yuthon_business_approval.py
+++ b/yuthon_trade/models/yuthon_business_approval.py
@@ -18,7 +18,7 @@ class YuthonBusinessApproval(models.Model):
is_issues = fields.Boolean(string='是否上会')
issues_result = fields.Html(string="会议结果")
related_issues_id = fields.Many2one('issue.library', string="关联议题")
- reason = fields.Html(string="正文")
+ reason = fields.Text(string="正文")
document_ids = fields.Many2many('ir.attachment', string="附件")
active = fields.Boolean('Active', default=True, tracking=True)
work_end = fields.Boolean(string="结束")
diff --git a/yuthon_trade/models/yuthon_care_condolences.py b/yuthon_trade/models/yuthon_care_condolences.py
index 3a2f06e9b..93830faf1 100644
--- a/yuthon_trade/models/yuthon_care_condolences.py
+++ b/yuthon_trade/models/yuthon_care_condolences.py
@@ -14,7 +14,7 @@ class YuthonCareCondolences(models.Model):
default=lambda self: self.env['ir.sequence'].next_by_code('property_care_reward_code_sequence'))
date = fields.Date(string='日期')
fees = fields.Float(string='费用')
- reason = fields.Html(string="正文")
+ reason = fields.Text(string="正文")
marriage_cate_id = fields.Many2one('ir.attachment', string="结婚证明")
marriage_date = fields.Date(string="结婚时间")
born_cate_id = fields.Many2one('ir.attachment', string="出生证明")
diff --git a/yuthon_trade/models/yuthon_trade_setting.py b/yuthon_trade/models/yuthon_trade_setting.py
index b488119ed..726df3234 100644
--- a/yuthon_trade/models/yuthon_trade_setting.py
+++ b/yuthon_trade/models/yuthon_trade_setting.py
@@ -14,20 +14,37 @@ class YuthonWorkSetting(models.Model):
name = fields.Char(string='名称')
+
class SealsTypeSetting(models.Model):
_name = 'seals.type.setting'
_description = '用章类型'
name = fields.Char(string='名称')
+
class SealsScopeSetting(models.Model):
_name = 'seals.scope.setting'
_description = '用章范围'
name = fields.Char(string='名称')
+
class SendingUnitSetting(models.Model):
_name = 'sending.unit.setting'
_description = '发送单位'
name = fields.Char(string='名称')
+
+
+class ProjectClassifySetting(models.Model):
+ _name = 'project.classify.setting'
+ _description = '项目分类'
+
+ name = fields.Char(string='名称')
+
+
+class ProjectFundingSetting(models.Model):
+ _name = 'project.funding.setting'
+ _description = '资金来源'
+
+ name = fields.Char(string='名称')
diff --git a/yuthon_trade/models/yuthon_work_condolences.py b/yuthon_trade/models/yuthon_work_condolences.py
index dbee1d540..acf6a61f8 100644
--- a/yuthon_trade/models/yuthon_work_condolences.py
+++ b/yuthon_trade/models/yuthon_work_condolences.py
@@ -14,7 +14,7 @@ class YuthonWorkCondolences(models.Model):
default=lambda self: self.env['ir.sequence'].next_by_code('property_work_condolences_code_sequence'))
date = fields.Date(string='日期')
fees = fields.Float(string='费用')
- reason = fields.Html(string="正文")
+ reason = fields.Text(string="正文")
scheme_id = fields.Many2one('ir.attachment', string="方案")
meeting_id = fields.Many2one('ir.attachment', string="会议纪要")
work_end = fields.Boolean(string="结束")
diff --git a/yuthon_trade/security/ir.model.access.csv b/yuthon_trade/security/ir.model.access.csv
index 9c82093bf..ac03a64b4 100644
--- a/yuthon_trade/security/ir.model.access.csv
+++ b/yuthon_trade/security/ir.model.access.csv
@@ -31,6 +31,9 @@ access_yuthon_reward_line,yuthon_reward_line,model_yuthon_reward_line,base.group
access_seals_type_setting,seals_type_setting,model_seals_type_setting,base.group_user,1,1,1,1
access_seals_scope_setting,seals_scope_setting,model_seals_scope_setting,base.group_user,1,1,1,1
access_sending_unit_setting,sending_unit_setting,model_sending_unit_setting,base.group_user,1,1,1,1
+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_project_classify_setting,project_classify_setting,model_project_classify_setting,base.group_user,1,1,1,1
diff --git a/yuthon_trade/views/trade_project_approval_views.xml b/yuthon_trade/views/trade_project_approval_views.xml
new file mode 100644
index 000000000..7bfd3f660
--- /dev/null
+++ b/yuthon_trade/views/trade_project_approval_views.xml
@@ -0,0 +1,103 @@
+
+
+
+ trade.project.approval.tree
+ trade.project.approval
+
+
+
+
+
+
+
+
+
+
+ trade.project.approval.form
+ trade.project.approval
+
+
+
+
+
+ 立项申请
+ trade.project.approval
+ tree,form
+
+
+
+
+
+
diff --git a/yuthon_trade/views/yuthon_business_approval_viwes.xml b/yuthon_trade/views/yuthon_business_approval_viwes.xml
index 5a3c784a8..3aad4f120 100644
--- a/yuthon_trade/views/yuthon_business_approval_viwes.xml
+++ b/yuthon_trade/views/yuthon_business_approval_viwes.xml
@@ -45,7 +45,7 @@
-
+ d
diff --git a/yuthon_trade/views/yuthon_seals_approval_views.xml b/yuthon_trade/views/yuthon_seals_approval_views.xml
index 42763f387..a2ebb5c2d 100644
--- a/yuthon_trade/views/yuthon_seals_approval_views.xml
+++ b/yuthon_trade/views/yuthon_seals_approval_views.xml
@@ -38,10 +38,10 @@
-
-
-
-
+
+
+
+
diff --git a/yuthon_trade/views/yuthon_trade_menu.xml b/yuthon_trade/views/yuthon_trade_menu.xml
index 195caaef3..dca6d6bc5 100644
--- a/yuthon_trade/views/yuthon_trade_menu.xml
+++ b/yuthon_trade/views/yuthon_trade_menu.xml
@@ -23,11 +23,6 @@
parent="executive_manage_approval"
action="action_yuthon_trade_pay"
sequence="19"/>
-
+
+
+
+
+
\ No newline at end of file
diff --git a/yuthon_trade/views/yuthon_trade_setting_views.xml b/yuthon_trade/views/yuthon_trade_setting_views.xml
index 1b73b014e..23aa3561d 100644
--- a/yuthon_trade/views/yuthon_trade_setting_views.xml
+++ b/yuthon_trade/views/yuthon_trade_setting_views.xml
@@ -70,4 +70,32 @@
sending.unit.setting
tree
+
+ 项目分类
+ project.classify.setting
+
+
+
+
+
+
+
+ 项目分类
+ project.classify.setting
+ tree
+
+
+ 资金来源
+ project.funding.setting
+
+
+
+
+
+
+
+ 资金来源
+ project.funding.setting
+ tree
+
\ No newline at end of file
diff --git a/yuthon_will_task/models/yuthon_will_task.py b/yuthon_will_task/models/yuthon_will_task.py
index 771c3499b..6d193a4a3 100644
--- a/yuthon_will_task/models/yuthon_will_task.py
+++ b/yuthon_will_task/models/yuthon_will_task.py
@@ -28,7 +28,7 @@ class YuthonWillTask(models.Model):
user_role_ids = fields.Many2many('soong.user.role', string='角色', store=True, index=True)
task_time_ids = fields.Many2many('yuthon.task.time', string='提醒')
address = fields.Char(string='地点')
- start_time = fields.Datetime(string='开始时间',default=lambda self: datetime.combine(datetime.now().date(), time(1, 0, 0)))
+ start_time = fields.Datetime(string='开始时间', default=fields.Datetime.now)
end_time = fields.Datetime(string='结束时间')
task_state = fields.Selection([('will', '待办'), ('done', '已办'), ('cancel', '取消')], default='will', string='状态', store=True)
diff --git a/yuthon_work_brand/views/executive_manage.xml b/yuthon_work_brand/views/executive_manage.xml
index 06dc3816d..2fabd11fe 100644
--- a/yuthon_work_brand/views/executive_manage.xml
+++ b/yuthon_work_brand/views/executive_manage.xml
@@ -3,7 +3,6 @@