Merge pull request !300 from 李鹏宇/dev_zhou
This commit is contained in:
李鹏宇
2024-10-17 11:39:27 +00:00
committed by Gitee
12 changed files with 190 additions and 65 deletions
-8
View File
@@ -191,14 +191,6 @@
</field>
</group>
</page>
<page string="关联流程">
<group>
<group>
<field name="relevancy_type"/>
</group>
<group/>
</group>
</page>
<page name="meeting_html" string="会议说明">
<button name="button_meeting_data" string="座位排列" type="object" class="oe_highlight"/>
<field name="meeting_data" widget="tinymce"/>
@@ -1,5 +1,24 @@
<?xml version="1.0" encoding="UTF-8" ?>
<odoo>
<record id="view_yuthon_holiday_allocation_tree" model="ir.ui.view">
<field name="name">yuthon.holiday.allocation.tree</field>
<field name="model">hr.leave.allocation</field>
<field name="inherit_id" ref="hr_holidays.hr_leave_allocation_view_tree"/>
<field name="arch" type="xml">
<xpath expr="//tree/field[@name='duration_display']" position="attributes">
<attribute name="string">假期余额</attribute>
</xpath>
<xpath expr="//tree/field[@name='holiday_status_id']" position="attributes">
<attribute name="optional">hide</attribute>
</xpath>
<xpath expr="//tree/field[@name='date_from']" position="attributes">
<attribute name="string">开始时间</attribute>
</xpath>
<xpath expr="//tree/field[@name='date_to']" position="attributes">
<attribute name="string">结束时间</attribute>
</xpath>
</field>
</record>
<record id="view_yuthon_holiday_allocation_form" model="ir.ui.view">
<field name="name">yuthon.holiday.allocation.form</field>
<field name="model">hr.leave.allocation</field>
+1 -1
View File
@@ -24,7 +24,7 @@ class CardApprovalsLine(models.Model):
_description = "补卡人明细"
card_id = fields.Many2one('card.approval', string="补卡审批")
overtime_people = fields.Char( string="补卡人")
overtime_people = fields.Many2one('hr.employee',string="补卡人")
replacement_time = fields.Datetime(string="补卡时间")
actual_punch = fields.Datetime(string="实际打卡")
reason = fields.Char(string="补卡原因")
+1
View File
@@ -17,6 +17,7 @@
'views/issue_library_views.xml',
'views/issue_type_views.xml',
'views/issue_approval_views.xml',
'views/inherit_room_booking.xml',
# 'views/issue_approval_party_views.xml',
# 'views/issue_approval_class_views.xml',
# 'views/issue_approval_boss_views.xml',
+1 -1
View File
@@ -5,7 +5,7 @@ from . import issue_type
# from . import inherit_room_booking
from . import issue_approval_decision
from . import issue_approval_decision_type
from . import inherit_room_booking
from . import issue_approval
# from . import issue_approval_party
@@ -0,0 +1,13 @@
import qrcode
import base64
from io import BytesIO
from odoo import api, fields, models, _
from odoo.exceptions import ValidationError, UserError
import os
from datetime import timedelta
class InheritRoomBooking(models.Model):
_inherit = 'room.booking'
room_booking_library_ids = fields.One2many('issue.library','room_booking_id')
+42 -23
View File
@@ -10,20 +10,24 @@ class IssueLibrary(models.Model):
_rec_name = 'name'
name = fields.Char(string='议题事项')
code = fields.Char(string='编号', required=True, copy=False, default=lambda self: self.env['ir.sequence'].next_by_code('issue_library_code'))
statu = fields.Selection([('draft', '待提交'), ('approval', '审批中'), ('on_meet', '已上会'), ('cancel', '已取消')], default='draft', string="议题状态")
code = fields.Char(string='编号', required=True, copy=False,
default=lambda self: self.env['ir.sequence'].next_by_code('issue_library_code'))
state = fields.Selection([('draft', '待提交'), ('approval', '审批中'), ('on_meet', '已上会'), ('cancel', '已取消')],
default='draft', string="议题状态")
is_party = fields.Boolean(string="党之委会", default=False, compute='_compute_issue_library_line_ids')
is_class = fields.Boolean(string="班子会", default=False, compute='_compute_issue_library_line_ids')
is_boss = fields.Boolean(string="董事会", default=False, compute='_compute_issue_library_line_ids')
is_note = fields.Boolean(string="上级单位", default=False, compute='_compute_issue_library_line_ids')
creart_datetime = fields.Datetime(string="创建时间", default=fields.Datetime.now)
creart_datetime = fields.Date(string="创建日期", default=fields.Datetime.now)
notice_documents_ids = fields.Many2many('ir.attachment', string='议题附件')
issue_type_id = fields.Many2one('issue.type', string="议题类型")
relevancy_type = fields.Selection([('none', '无')], string="关联流程类型")
issue_approval_id = fields.Many2one('issue.approval', string="关联议题审批")
issue_library_line_ids = fields.One2many('issue.library.line', 'issue_library_id', string="决策明细")
issue_library_approval_line_ids = fields.One2many('issue.library.approval.line', 'issue_approval_id', string='流程记录')
issue_library_approval_line_ids = fields.One2many('issue.library.approval.line', 'issue_approval_id',
string='流程记录')
room_booking_id = fields.Many2one('room.booking', string="会议室")
# 审批中
# ☑
@@ -41,46 +45,60 @@ class IssueLibrary(models.Model):
# self.json_display = False
def issue_pull(self):
for record in self:
if record.state == 'approval':
raise UserError("当前议题已提交审批,不可重复提交")
form_id = self.env.ref("yuthon_issue.issue_library_approval_form").id
self.write({"state": "approval"})
return {
"type": "ir.actions.act_window",
"name": "提交",
"res_model": "issue.approval",
"target": 'new',
"views": [[form_id, "form"]],
}
"context": {
'default_issue_library_ids': [(6, 0, self.ids)],
'default_approval_decision_ids': [(6, 0, self.issue_library_line_ids.ids)],
}}
# @api.Onchange('state'):
# def _onchange_state(self):
# if self.state == 'approval':
def issue_cancel(self):
self.write({"statu": "cancel"})
self.write({"state": "cancel"})
def all_issue_pull(self):
issue_active_ids = self.env["issue.library"].browse(self._context.get('active_ids', self._context.get('active_id')))
issue_library_data = [(0, 0, {'name': issue.name}) for issue in issue_active_ids]
form_id = self.env.ref("yuthon_issue.issue_library_approval_form").id
self.write({"statu": "approval"})
self.write({"state": "approval"})
return {
"type": "ir.actions.act_window",
"name": "提交",
"name": "批量提交",
"res_model": "issue.approval",
"target": 'new',
"views": [[form_id, "form"]],
"context": {
'default_issue_library_ids': [(6, 0, issue_active_ids.ids)],
'default_issue_approval_decision_ids': [(6, 0, issue_active_ids.issue_library_line_ids.ids)],
}
}
def all_meeting_issue(self):
for meet in self:
if meet.statu == 'done':
if meet.state == 'on_meet':
raise UserError('不可重复上会')
meet.write({"statu": "done"})
issue_active_ids = self.env["issue.library"].browse(self._context.get('active_ids', self._context.get('active_id')))
issue_library_data = [(0, 0, {'name': issue.name}) for issue in issue_active_ids]
meet.write({"state": "on_meet"})
issue_active_ids = self.env["issue.library"].browse(
self._context.get('active_ids', self._context.get('active_id')))
form_id = self.env.ref("room.room_booking_view_form").id
return {
"type": "ir.actions.act_window",
"name": "会议安排",
"res_model": "room.booking",
"target": 'new',
"views": [[form_id, "form"]],
"context": {
'default_name': '',
'default_room_booking_library_ids': [(6, 0, issue_active_ids.ids)],
}
}
@api.depends('issue_library_line_ids')
@@ -91,6 +109,12 @@ class IssueLibrary(models.Model):
line.is_boss = bool(line.issue_library_line_ids.filtered('board_meet'))
line.is_note = bool(line.issue_library_line_ids.filtered('district_bureau'))
def unlink(self):
for i in self:
if i.state == 'on_meet':
raise UserError('议题已上会,不能删除')
return super().unlink()
class IssueLibraryLine(models.Model):
_name = "issue.library.line"
@@ -101,7 +125,7 @@ class IssueLibraryLine(models.Model):
council = fields.Selection(related='issue_approval_decision_id.council', string='党总委员会')
team_meet = fields.Selection(related='issue_approval_decision_id.team_meet', string='经营班子会')
board_meet = fields.Selection(related='issue_approval_decision_id.board_meet', string='董事会')
district_bureau = fields.Selection(related='issue_approval_decision_id.district_bureau', string='区政府、区财政局')
district_bureau = fields.Selection(related='issue_approval_decision_id.district_bureau', string='上级单位')
class IssueLibraryApprovalLine(models.Model):
@@ -122,8 +146,3 @@ class IssueLibraryApprovalLine(models.Model):
"name": self.workflow_record_id.name,
"view_mode": "form",
}
@@ -0,0 +1,24 @@
<?xml version="1.0" encoding="UTF-8" ?>
<odoo>
<record id="view_room_booking_form" model="ir.ui.view">
<field name="name">room.booking.form</field>
<field name="model">room.booking</field>
<field name="inherit_id" ref="room.room_booking_view_form"/>
<field name="arch" type="xml">
<xpath expr="//page[@name='sign']" position="after">
<page string="关联议题">
<field name="room_booking_library_ids">
<tree>
<field name="room_booking_id" column_invisible="1"/>
<field name="name"/>
<field name="is_party"/>
<field name="is_class"/>
<field name="is_boss"/>
<field name="is_note"/>
</tree>
</field>
</page>
</xpath>
</field>
</record>
</odoo>
@@ -8,7 +8,7 @@
<field name="sequence"/>
<field name="decision_type_id"/>
<!-- <field name="decision_id"/>-->
<field name="specifics"/>
<field name="specifics" required="1"/>
<field name="council"/>
<field name="team_meet"/>
<field name="board_meet"/>
@@ -42,7 +42,7 @@
<field name="council"/>
</group>
<group>
<field name="specifics"/>
<field name="specifics" required="1"/>
<field name="team_meet"/>
</group>
<group>
+58 -19
View File
@@ -5,9 +5,9 @@
<field name="model">issue.library</field>
<field name="arch" type="xml">
<tree string="议题库">
<!-- decoration-info="statu == 'will'"-->
<!-- decoration-success="statu == 'done'"-->
<!-- decoration-muted="statu == 'cancel'">-->
<!-- decoration-info="state == 'will'"-->
<!-- decoration-success="state == 'done'"-->
<!-- decoration-muted="state == 'cancel'">-->
<field name="name"/>
<field name="code"/>
<field name="creart_datetime"/>
@@ -15,9 +15,10 @@
<field name="is_class"/>
<field name="is_boss"/>
<field name="is_note"/>
<field name="statu"/>
<field name="state"/>
<button name="issue_pull" string="提交" type="object" class="oe_highlight"/>
<button name="issue_cancel" string="取消" type="object" class="oe_highlight"/>
<button name="unlink" string="删除" type="object" class="oe_highlight"/>
<!-- <field name="json_display" widget="json_template"/>-->
</tree>
</field>
@@ -29,7 +30,7 @@
<field name="arch" type="xml">
<form string="议题库">
<header>
<field name="statu" widget="statusbar"/>
<field name="state" widget="statesbar"/>
</header>
<sheet>
<div class="oe_title">
@@ -100,10 +101,10 @@
<field name="model">issue.library</field>
<field name="arch" type="xml">
<search string="议题">
<filter string="待上会" name="statu" domain="[('statu', '=', 'will')]"/>
<filter string="已上会" name="statu" domain="[('statu', '=', 'on_meet')]"/>
<filter string="待上会" name="state" domain="[('state', '=', 'will')]"/>
<filter string="已上会" name="state" domain="[('state', '=', 'on_meet')]"/>
<group expand="0">
<filter name="group_manager" string="会议状态" domain="[]" context="{'group_by': 'statu'}"/>
<filter name="group_manager" string="会议状态" domain="[]" context="{'group_by': 'state'}"/>
</group>
</search>
</field>
@@ -122,15 +123,16 @@
<field name="name">issue.library.tree</field>
<field name="model">issue.library</field>
<field name="arch" type="xml">
<tree string="议题库"
create="false" edit="false" delete="false">
<tree string="议题库">
<field name="name"/>
<field name="code"/>
<field name="creart_datetime"/>
<field name="is_party"/>
<field name="is_class"/>
<field name="is_note"/>
<field name="creart_datetime"/>
<field name="statu"/>
<field name="is_boss"/>
<field name="state"/>
<button name="issue_pull" string="提交" type="object" class="oe_highlight"/>
<button name="issue_cancel" string="取消" type="object" class="oe_highlight"/>
</tree>
</field>
</record>
@@ -142,7 +144,7 @@
<form string="议题库">
<header>
<button name="issue_cancel" string="取消" type="object" class="oe_highlight"/>
<field name="statu" widget="statusbar"/>
<field name="state" widget="statesbar"/>
</header>
<sheet>
<div class="oe_title">
@@ -160,7 +162,6 @@
</group>
<group>
<field name="is_boss"/>
<field name="is_note"/>
<field name="notice_documents_ids">
<tree>
<field name="name"/>
@@ -193,7 +194,7 @@
<field name="name">待上会</field>
<field name="res_model">issue.library</field>
<field name="view_mode">tree,form</field>
<field name="domain">[('statu','=','will')]</field>
<field name="domain">[('state','=','will')]</field>
<field name="view_ids" eval="[(5, 0, 0),
(0, 0, {'view_mode': 'tree', 'view_id': ref('yuthon_issue.view_issue_library_tree2')}),
(0, 0, {'view_mode': 'form', 'view_id': ref('yuthon_issue.view_issue_library_form2')})]"/>
@@ -204,21 +205,21 @@
<field name="name">审批中</field>
<field name="res_model">issue.library</field>
<field name="view_mode">tree,form</field>
<field name="domain">[('statu','=','approval')]</field>
<field name="domain">[('state','=','approval')]</field>
</record>
<record id="issue_library_action_done" model="ir.actions.act_window">
<field name="name">已上会</field>
<field name="res_model">issue.library</field>
<field name="view_mode">tree,form</field>
<field name="domain">[('statu','=','on_meet')]</field>
<field name="domain">[('state','=','on_meet')]</field>
</record>
<record id="issue_library_action_cancel" model="ir.actions.act_window">
<field name="name">已取消</field>
<field name="res_model">issue.library</field>
<field name="view_mode">tree,form</field>
<field name="domain">[('statu','=','cancel')]</field>
<field name="domain">[('state','=','cancel')]</field>
<!-- <field name="view_ids" eval="[(5, 0, 0),-->
<!-- (0, 0, {'view_mode': 'tree', 'view_id': ref('yuthon_issue.view_issue_library_tree2')}),-->
<!-- (0, 0, {'view_mode': 'form', 'view_id': ref('yuthon_issue.view_issue_library_form2')})]"/>-->
@@ -231,4 +232,42 @@
<field name="state">code</field>
<field name="code">action = model.all_meeting_issue()</field>
</record>
<record id="all_issue_pull" model="ir.actions.server">
<field name="name">批量提交</field>
<field name="model_id" ref="yuthon_issue.model_issue_library"/>
<field name="binding_model_id" ref="yuthon_issue.model_issue_library"/>
<field name="state">code</field>
<field name="code">action = model.all_issue_pull()</field>
</record>
<record id="issue_library_action_will2" model="ir.actions.act_window">
<field name="name">审批中</field>
<field name="res_model">issue.library</field>
<field name="view_mode">tree,form</field>
<field name="domain">[('state','=','approval')]</field>
<field name="view_ids" eval="[(5, 0, 0),
(0, 0, {'view_mode': 'tree', 'view_id': ref('yuthon_issue.view_issue_library_tree2')}),
(0, 0, {'view_mode': 'form', 'view_id': ref('yuthon_issue.view_issue_library_form2')})]"/>
</record>
<record id="issue_library_action_done2" model="ir.actions.act_window">
<field name="name">已上会</field>
<field name="res_model">issue.library</field>
<field name="view_mode">tree,form</field>
<field name="domain">[('state','=','on_meet')]</field>
<field name="view_ids" eval="[(5, 0, 0),
(0, 0, {'view_mode': 'tree', 'view_id': ref('yuthon_issue.view_issue_library_tree2')}),
(0, 0, {'view_mode': 'form', 'view_id': ref('yuthon_issue.view_issue_library_form2')})]"/>
</record>
<record id="issue_library_action_cancel2" model="ir.actions.act_window">
<field name="name">已取消</field>
<field name="res_model">issue.library</field>
<field name="view_mode">tree,form</field>
<field name="domain">[('state','=','cancel')]</field>
<field name="view_ids" eval="[(5, 0, 0),
(0, 0, {'view_mode': 'tree', 'view_id': ref('yuthon_issue.view_issue_library_tree2')}),
(0, 0, {'view_mode': 'form', 'view_id': ref('yuthon_issue.view_issue_library_form2')})]"/>
</record>
</odoo>
+18
View File
@@ -41,6 +41,24 @@
name="子公司议题库"
sequence="8"/>
<menuitem id="tianhe_other_issue_library_will"
parent="tianhe_other_issue_library_menu"
name="审批中"
action="issue_library_action_will2"
sequence="2"/>
<menuitem id="tianhe_other_issue_library_done"
parent="tianhe_other_issue_library_menu"
name="已上会"
action="issue_library_action_done2"
sequence="3"/>
<menuitem id="tianhe_other_issue_library_cancel"
parent="tianhe_other_issue_library_menu"
name="已取消"
action="issue_library_action_cancel2"
sequence="5"/>
<menuitem id="tianhe_issue_library_all2"
parent="tianhe_other_issue_library_menu"
name="全部"
@@ -1,14 +1,14 @@
<?xml version="1.0" encoding="UTF-8" ?>
<odoo>
<record id="room_booking_form_inherit" model="ir.ui.view">
<field name="name">room.booking.form.inherit</field>
<field name="model">room.booking</field>
<field name="inherit_id" ref="room.room_booking_view_form"/>
<field name="arch" type="xml">
<xpath expr="//field[@name='relevancy_type']" position="after">
<field name="yuthon_official_id" invisible="relevancy_type != 'yuthon_official'"/>
<field name="incoming_normal_id" invisible="relevancy_type != 'yuthon_official_incoming_normal'"/>
</xpath>
</field>
</record>
<!-- <record id="room_booking_form_inherit" model="ir.ui.view">-->
<!-- <field name="name">room.booking.form.inherit</field>-->
<!-- <field name="model">room.booking</field>-->
<!-- <field name="inherit_id" ref="room.room_booking_view_form"/>-->
<!-- <field name="arch" type="xml">-->
<!-- <xpath expr="//field[@name='relevancy_type']" position="after">-->
<!-- <field name="yuthon_official_id" invisible="relevancy_type != 'yuthon_official'"/>-->
<!-- <field name="incoming_normal_id" invisible="relevancy_type != 'yuthon_official_incoming_normal'"/>-->
<!-- </xpath>-->
<!-- </field>-->
<!-- </record>-->
</odoo>