diff --git a/room/models/room_meeting_type.py b/room/models/room_meeting_type.py
index dfb0b5787..7d8074eea 100644
--- a/room/models/room_meeting_type.py
+++ b/room/models/room_meeting_type.py
@@ -5,5 +5,8 @@ from odoo.exceptions import ValidationError
class RoomMeetingType(models.Model):
_name = 'room.meeting.type'
_description = '会议类型配置'
+ _order = 'sequence asc'
- name = fields.Char(string='名字', required=True)
\ No newline at end of file
+ sequence = fields.Char(string='序号', store=True)
+ name = fields.Char(string='名字', required=True)
+ company_id = fields.Many2one('res.company', string="所属公司", index=True, default=lambda self: self.env.company)
\ No newline at end of file
diff --git a/room/models/room_room.py b/room/models/room_room.py
index 126f64ae7..33f20a261 100644
--- a/room/models/room_room.py
+++ b/room/models/room_room.py
@@ -42,7 +42,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)
+ department_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_meeting_type.xml b/room/views/room_meeting_type.xml
index 90ca02c19..893c3e86a 100644
--- a/room/views/room_meeting_type.xml
+++ b/room/views/room_meeting_type.xml
@@ -5,7 +5,9 @@
room.meeting.type
+
+
@@ -13,5 +15,4 @@
room.meeting.type
tree
-
\ No newline at end of file
diff --git a/room/views/room_room_views.xml b/room/views/room_room_views.xml
index 309d20620..f4a0c7d00 100644
--- a/room/views/room_room_views.xml
+++ b/room/views/room_room_views.xml
@@ -13,8 +13,10 @@
+
+
+
-
@@ -53,7 +55,7 @@
Create Rooms
diff --git a/yuthon_issue/models/inherit_room_booking.py b/yuthon_issue/models/inherit_room_booking.py
index ae70450a8..9f358c987 100644
--- a/yuthon_issue/models/inherit_room_booking.py
+++ b/yuthon_issue/models/inherit_room_booking.py
@@ -5,7 +5,7 @@ from odoo.exceptions import UserError
class RoomBooking(models.Model):
_inherit = 'room.booking'
- is_issue = fields.Boolean(string="是否关联议题")
+ is_issue = fields.Boolean(string="是否关联议题", default=True)
issue_meeting_line_ids = fields.One2many('issue.meeting.line', 'meeting_booking_id', string="关联议题明细行")
number_of_meetings = fields.Integer(string='会议次数')
@@ -52,9 +52,13 @@ class RoomBooking(models.Model):
class IssueMeetingLine(models.Model):
_name = 'issue.meeting.line'
_description = '关联议题明细行'
+ _order = 'sequence asc'
meeting_booking_id = fields.Many2one('room.booking', string='关联会议室')
- issue_library_id = fields.Many2one('issue.library', string='关联议题')
+ sequence = fields.Char(string='序号', store=True)
+ issue_library_id = fields.Many2one('issue.library', string='议题')
+ employee_id = fields.Many2one('hr.employee', string='传达人')
+ attendees = fields.Char(string='列席人员')
+ is_sanda = fields.Boolean(string='是否属于"三重一大"')
decision_results = fields.Selection([('agree', '通过'), ('disagree', '未通过')], string="决策结果")
decision_details = fields.Text(string="决策详情")
- state = fields.Selection([('no', '未提交'), ('done', '已提交')], default='no', string="状态")
diff --git a/yuthon_issue/views/inherit_room_booking.xml b/yuthon_issue/views/inherit_room_booking.xml
index c30ef3315..13545d3a0 100644
--- a/yuthon_issue/views/inherit_room_booking.xml
+++ b/yuthon_issue/views/inherit_room_booking.xml
@@ -11,15 +11,18 @@
-
+
+
+
+
+
-
diff --git a/yuthon_property/__manifest__.py b/yuthon_property/__manifest__.py
index 44a09ec06..c22057c17 100644
--- a/yuthon_property/__manifest__.py
+++ b/yuthon_property/__manifest__.py
@@ -44,6 +44,7 @@
'views/property_accounting_unit_views.xml',
'views/property_check_lobby_views.xml',
'views/property_check_project_views.xml',
+ 'views/property_summary_report_views.xml',
'views/property_check_room_views.xml',
'views/property_check_stairs_views.xml',
'views/property_check_decorate_views.xml',
diff --git a/yuthon_property/models/__init__.py b/yuthon_property/models/__init__.py
index 3b7184f4f..bfc29df79 100644
--- a/yuthon_property/models/__init__.py
+++ b/yuthon_property/models/__init__.py
@@ -41,4 +41,5 @@ from . import property_accounts_receivable
from . import property_construction_unit
from . import property_accounting_unit
from . import property_subject_form
-from . import property_evaluation_plan
\ No newline at end of file
+from . import property_evaluation_plan
+from . import property_summary_report
\ No newline at end of file
diff --git a/yuthon_property/models/property_summary_report.py b/yuthon_property/models/property_summary_report.py
new file mode 100644
index 000000000..5dd3c11bc
--- /dev/null
+++ b/yuthon_property/models/property_summary_report.py
@@ -0,0 +1,29 @@
+from email.policy import default
+
+from odoo import models, fields, api, exceptions, _
+from odoo.exceptions import UserError, ValidationError
+
+
+class PropertySummaryReport(models.Model):
+ _name = 'property.summary.report'
+ _description = '物业汇总报表'
+ _rec_name = 'property_id'
+
+ property_id = fields.Many2one('yuthon.property', string="物业地址")
+ registered_id = fields.Many2one(related='property_id.registered_id', string='证载用途')
+ evaluation_area = fields.Float(related='property_id.rent_area', string='出租面积(m²)')
+ lease_expiration_date = fields.Date(string='租赁到期日')
+ lessee_id = fields.Many2one('property.tenant.information', string='原租户')
+ now_rent_price = fields.Float(related='property_id.rental_unit_price', string='现租价(元/m² •月)')
+ appraisal_price = fields.Float(string='评估价(元/m² •月)')
+ evaluation_id = fields.Many2one('evaluation.company', string='公司')
+ active = fields.Boolean('Active', default=True, tracking=True)
+ work_end = fields.Boolean(string="结束")
+ initial_low_area_price = fields.Float() # 初始底价
+ low_area_price = fields.Float(string='底价(元/m² •月)', default=lambda self: self.appraisal_price)
+ low_price = fields.Float(string='底价(元/月)', compute='_compute_low_price', store=True)
+ lease_period = fields.Integer(string='租赁期限(<=)')
+ annual_increase_percentage = fields.Float(string='每年递增(%)', igits=(6, 2))
+ rental_purposes = fields.Many2one('yuthon.rental.purpose', string="出租用途")
+ rent_period = fields.Integer(string="免租期(<=)")
+ amount_way = fields.Many2one('amount.way', string="交易方式")
\ No newline at end of file
diff --git a/yuthon_property/security/ir.model.access.csv b/yuthon_property/security/ir.model.access.csv
index 3974ff8b3..2b67f55a3 100644
--- a/yuthon_property/security/ir.model.access.csv
+++ b/yuthon_property/security/ir.model.access.csv
@@ -87,4 +87,5 @@ access_property_floor_setting,property_floor_setting,model_property_floor_settin
access_property_evaluation_plan,property_evaluation_plan,model_property_evaluation_plan,base.group_user,1,1,1,1
access_evaluation_company,evaluation_company,model_evaluation_company,base.group_user,1,1,1,1
access_evaluation_plan_wizard,evaluation_plan_wizard,model_evaluation_plan_wizard,base.group_user,1,1,1,1
-access_amount_way,amount_way,model_amount_way,base.group_user,1,1,1,1
\ No newline at end of file
+access_amount_way,amount_way,model_amount_way,base.group_user,1,1,1,1
+access_property_summary_report, property_summary_report,model_property_summary_report,base.group_user,1,1,1,1
\ No newline at end of file
diff --git a/yuthon_property/views/property_summary_report_views.xml b/yuthon_property/views/property_summary_report_views.xml
new file mode 100644
index 000000000..d0a520b56
--- /dev/null
+++ b/yuthon_property/views/property_summary_report_views.xml
@@ -0,0 +1,72 @@
+
+
+
+ property.summary.report.tree
+ property.summary.report
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ property.summary.report.form
+ property.summary.report
+
+
+
+
+
+ 物业汇总报表(待优化)
+ property.summary.report
+ tree,form
+
+
\ No newline at end of file
diff --git a/yuthon_property_approval/__manifest__.py b/yuthon_property_approval/__manifest__.py
index 5f941cae1..359cf33e4 100644
--- a/yuthon_property_approval/__manifest__.py
+++ b/yuthon_property_approval/__manifest__.py
@@ -74,6 +74,7 @@
'wizard/choose_contract_wizard_views.xml',
'wizard/property_reconciliation_wizard_views.xml',
'wizard/property_rental_wizard_views.xml',
+ 'wizard/property_meeting_wizard_views.xml',
'views/property_menu_all.xml',
],
diff --git a/yuthon_property_approval/models/property_evaluate_application.py b/yuthon_property_approval/models/property_evaluate_application.py
index 187c86783..1abcb9687 100644
--- a/yuthon_property_approval/models/property_evaluate_application.py
+++ b/yuthon_property_approval/models/property_evaluate_application.py
@@ -24,7 +24,8 @@ class PropertyEvaluateApplication(models.Model):
urgency_level = fields.Selection([('normal', '普件'), ('urgent', '急件'), ('emergency', '特急件')], string='紧急度',
default='normal')
active = fields.Boolean('Active', default=True, tracking=True)
- evaluation_company_id = fields.Many2one('evaluation.company', string='公司')
+ date_assessment = fields.Date(string='评估基准日')
+ evaluation_company_id = fields.Many2one('evaluation.company', string='评估公司')
quote = fields.Float(string='报价')
service_money = fields.Float(string='评估服务费总额')
pay_time = fields.Date(string='支付时间')
diff --git a/yuthon_property_approval/models/property_meeting_approval.py b/yuthon_property_approval/models/property_meeting_approval.py
index 3b679fd47..4954fc069 100644
--- a/yuthon_property_approval/models/property_meeting_approval.py
+++ b/yuthon_property_approval/models/property_meeting_approval.py
@@ -12,13 +12,6 @@ class PropertyMeetingApproval(models.Model):
name = fields.Char(string='标题')
reason = fields.Html(string="正文")
property_documents_ids = fields.Many2many('ir.attachment', string="附件")
- property_id = fields.Many2one('yuthon.property', string="物业地址")
- registered_id = fields.Many2one(related='property_id.registered_id', string='证载用途')
- evaluation_area = fields.Float(related='property_id.rent_area', string='出租面积(m²)')
- lease_expiration_date = fields.Date(string='租赁到期日')
- lessee_id = fields.Many2one('property.tenant.information', string='原租户')
- now_rent_price = fields.Float(related='property_id.rental_unit_price', string='现租价(元/m² •月)')
- appraisal_price = fields.Float(string='评估价(元/m² •月)')
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="部门")
code = fields.Char(string="编号",
@@ -27,23 +20,10 @@ class PropertyMeetingApproval(models.Model):
default='normal')
active = fields.Boolean('Active', default=True, tracking=True)
work_end = fields.Boolean(string="结束")
- initial_low_area_price = fields.Float() # 初始底价
- low_area_price = fields.Float(string='底价(元/m² •月)', default=lambda self: self.appraisal_price)
- low_price = fields.Float(string='底价(元/月)', compute='_compute_low_price', store=True)
- lease_period = fields.Integer(string='租赁期限(<=)')
- annual_increase_percentage = fields.Float(string='每年递增(%)', igits=(6, 2))
- rental_purposes = fields.Many2one('yuthon.rental.purpose', string="出租用途")
- rent_period = fields.Integer(string="免租期(<=)")
- amount_way = fields.Many2one('amount.way', string="交易方式")
- initial_rent_period = fields.Integer(string="初始免租期(<=)")
- initial_lease_period = fields.Integer(string="初始租赁期限(<=)")
- initial_low_price = fields.Float(string='初始底价(元/月)')
is_issues = fields.Boolean(string='是否上会')
issues_result = fields.Html(string="会议结果")
+ meeting_line_ids = fields.One2many('property.meeting.line', 'meeting_id', string="物业会议审批明细")
related_issues_id = fields.Many2one('issue.library', string="关联议题")
- rent_comparison = fields.Selection([('red', '红'), ('green',' 绿')] , string="免租期结果")
- lease_comparison = fields.Selection([('red', '红'), ('green',' 绿')] , string="租赁期限结果")
- end_comparison = fields.Selection([('red', '红'), ('green',' 绿')] , string="初始底价结果")
def _get_default_name_title(self):
return self._description if self._description else self._name
@@ -65,6 +45,33 @@ class PropertyMeetingApproval(models.Model):
'approval_date': fields.Datetime.now(),
})
+
+class PropertyMeetingLine(models.Model):
+ _name = 'property.meeting.line'
+ _description = '物业会议审批明细'
+
+ meeting_id = fields.Many2one('property.meeting.approval', string='关联会议审批')
+ property_id = fields.Many2one('yuthon.property', string="物业地址")
+ registered_id = fields.Many2one(related='property_id.registered_id', string='证载用途')
+ evaluation_area = fields.Float(related='property_id.rent_area', string='出租面积(m²)')
+ lease_expiration_date = fields.Date(string='租赁到期日')
+ lessee_id = fields.Many2one('property.tenant.information', string='原租户')
+ now_rent_price = fields.Float(related='property_id.rental_unit_price', string='现租价(元/m² •月)')
+ appraisal_price = fields.Float(string='评估价(元/m² •月)')
+ low_area_price = fields.Float(string='底价(元/m² •月)', default=lambda self: self.appraisal_price)
+ low_price = fields.Float(string='底价(元/月)', compute='_compute_low_price', store=True)
+ lease_period = fields.Integer(string='租赁期限(<=)')
+ annual_increase_percentage = fields.Float(string='每年递增(%)', igits=(6, 2))
+ rental_purposes = fields.Many2one('yuthon.rental.purpose', string="出租用途")
+ rent_period = fields.Integer(string="免租期(<=)")
+ amount_way = fields.Many2one('amount.way', string="交易方式")
+ initial_low_area_price = fields.Float(string='初始底价(元/月)')
+ initial_rent_period = fields.Integer(string="初始免租期(<=)")
+ initial_lease_period = fields.Integer(string="初始租赁期限(<=)")
+ rent_comparison = fields.Selection([('red', '红'), ('green', ' 绿')], string="免租期结果")
+ lease_comparison = fields.Selection([('red', '红'), ('green', ' 绿')], string="租赁期限结果")
+ end_comparison = fields.Selection([('red', '红'), ('green', ' 绿')], string="初始底价结果")
+
@api.onchange('rent_period')
def _onchange_rent_period(self):
if self.initial_rent_period == 0:
@@ -90,15 +97,28 @@ class PropertyMeetingApproval(models.Model):
def _onchange_low_area_price(self):
if self.initial_low_area_price == 0:
# 如果是第一次输入,记录初始值
- self.initial_low_price = self.low_price
+ self.initial_low_area_price = self.low_price
else:
- if self.low_area_price > self.initial_low_price:
+ if self.low_area_price > self.initial_low_area_price:
self.end_comparison = 'red'
- elif self.low_area_price < self.initial_low_price:
+ elif self.low_area_price < self.initial_low_area_price:
self.end_comparison = 'green'
@api.depends('evaluation_area')
def _compute_low_price(self):
if self.evaluation_area and self.low_area_price:
- self.low_price = self.evaluation_area * self.low_area_price
\ No newline at end of file
+ self.low_price = self.evaluation_area * self.low_area_price
+
+
+ def property_meeting(self):
+ return {
+ "type": "ir.actions.act_window",
+ "name": "详情",
+ "res_model": "property.meeting.wizard",
+ "view_mode": "form",
+ "target": "new",
+ "context": {
+ "default_meeting_line_id": self.id,
+ }
+ }
\ No newline at end of file
diff --git a/yuthon_property_approval/security/ir.model.access.csv b/yuthon_property_approval/security/ir.model.access.csv
index 138204f61..1cd287127 100644
--- a/yuthon_property_approval/security/ir.model.access.csv
+++ b/yuthon_property_approval/security/ir.model.access.csv
@@ -93,5 +93,7 @@ access_property_accounts_approval, property_accounts_approval,model_property_acc
access_yuthon_property_line,yuthon_property_line,model_yuthon_property_line,base.group_user,1,1,1,1
access_property_tenant_line, property_tenant_line,model_property_tenant_line,base.group_user,1,1,1,1
access_property_meeting_approval,property_meeting_approval,model_property_meeting_approval,base.group_user,1,1,1,1
+access_property_meeting_wizard,property_meeting_wizard,model_property_meeting_wizard,base.group_user,1,1,1,1
+access_property_meeting_line,property_meeting_line,model_property_meeting_line,base.group_user,1,1,1,1
diff --git a/yuthon_property_approval/views/property_evaluate_application_views.xml b/yuthon_property_approval/views/property_evaluate_application_views.xml
index 0962eaf52..78515bbce 100644
--- a/yuthon_property_approval/views/property_evaluate_application_views.xml
+++ b/yuthon_property_approval/views/property_evaluate_application_views.xml
@@ -50,6 +50,8 @@
+
+
diff --git a/yuthon_property_approval/views/property_meeting_approval_views.xml b/yuthon_property_approval/views/property_meeting_approval_views.xml
index 8f1c5200f..315385afb 100644
--- a/yuthon_property_approval/views/property_meeting_approval_views.xml
+++ b/yuthon_property_approval/views/property_meeting_approval_views.xml
@@ -6,22 +6,6 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
@@ -61,45 +45,35 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/yuthon_property_approval/views/property_menu_all.xml b/yuthon_property_approval/views/property_menu_all.xml
index fa0da81d4..ff952ebdb 100644
--- a/yuthon_property_approval/views/property_menu_all.xml
+++ b/yuthon_property_approval/views/property_menu_all.xml
@@ -178,6 +178,12 @@
name="专项审批"
action="property_record_action"
sequence="11"/>
+