1
This commit is contained in:
@@ -67,6 +67,7 @@
|
||||
'wizard/electric_water_wizard_views.xml',
|
||||
'wizard/meter_price_wizard.xml',
|
||||
'wizard/property_statements_wizard_views.xml',
|
||||
'wizard/utility_meter_wizard_views.xml',
|
||||
'views/menuitem.xml',
|
||||
],
|
||||
'assets': {
|
||||
|
||||
@@ -227,6 +227,7 @@ class MeterArchivesLine(models.Model):
|
||||
last_read = fields.Float(string="上次读数", store=True, group_operator=None, compute="_compute_last")
|
||||
meter_date = fields.Date(string="任务日期")
|
||||
meter_date_month = fields.Char(string="任务日期月份", compute="_compute_meter_date_month", store=True, index=True,)
|
||||
|
||||
def _compute_meter_date_month(self):
|
||||
for rec in self:
|
||||
if rec.meter_date:
|
||||
|
||||
@@ -176,32 +176,18 @@ class MeterWaterLine(models.Model):
|
||||
_order = "number asc, sequence asc"
|
||||
|
||||
# name = fields.Char(string='仪表编号')
|
||||
water_id = fields.Many2one(
|
||||
"property.meter.water", string="水表库", required=True, ondelete="cascade"
|
||||
)
|
||||
water_id = fields.Many2one("property.meter.water", string="水表库", required=True, ondelete="cascade")
|
||||
initial_value = fields.Float(string="初始值")
|
||||
number = fields.Integer(
|
||||
related="epitope_values_id.sequence", string="序号", store=True
|
||||
)
|
||||
number = fields.Integer(related="epitope_values_id.sequence", string="序号", store=True)
|
||||
sequence = fields.Integer(related="water_id.sequence1", string="表序号", store=True)
|
||||
epitope_values_id = fields.Many2one("yuthon.epitope.values", string="表位置")
|
||||
lessee_id = fields.Many2one("property.tenant.information", string="承租方")
|
||||
yuthon_property_ids = fields.Many2many("yuthon.property", string="物业信息")
|
||||
last_meter = fields.Date(string="上次抄表日期", compute="_compute_last")
|
||||
last_dosage = fields.Float(
|
||||
string="上次用量", store=True, group_operator=None, compute="_compute_last"
|
||||
)
|
||||
last_read = fields.Float(
|
||||
string="上次读数", group_operator=None, compute="_compute_last"
|
||||
)
|
||||
last_dosage = fields.Float(string="上次用量", store=True, group_operator=None, compute="_compute_last")
|
||||
last_read = fields.Float(string="上次读数", group_operator=None, compute="_compute_last")
|
||||
meter_date = fields.Date(string="任务日期")
|
||||
|
||||
meter_date_month = fields.Char(
|
||||
string="任务日期月份",
|
||||
compute="_compute_meter_date_month",
|
||||
store=True,
|
||||
index=True,
|
||||
)
|
||||
meter_date_month = fields.Char(string="任务日期月份", compute="_compute_meter_date_month", store=True, index=True)
|
||||
current_meter = fields.Float(string="本次用量", group_operator=None, compute="_compute_current_meter")
|
||||
current_read = fields.Float(string='本次读数', group_operator=None)
|
||||
unit_number = fields.Char(string='单元编号/用途')
|
||||
@@ -336,3 +322,5 @@ class MeterWaterLine(models.Model):
|
||||
"default_water_ids": water_ids.ids,
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -190,25 +190,56 @@ class YuthonProperty(models.Model):
|
||||
'company_id': False,
|
||||
})
|
||||
|
||||
# 物业关联电表按钮
|
||||
def add_archives_meter_button(self):
|
||||
"""
|
||||
关联水电表按钮
|
||||
:return:
|
||||
"""
|
||||
return {
|
||||
'name': '物业关联电表弹窗',
|
||||
'type': 'ir.actions.act_window',
|
||||
'res_model': 'utility.meter.wizard',
|
||||
'view_mode': 'form',
|
||||
'target': 'new',
|
||||
'context': {
|
||||
'default_property_id': self.id,
|
||||
'default_meter_type': 'archives',
|
||||
}
|
||||
}
|
||||
|
||||
@api.onchange('energy_meter_ids')
|
||||
def _onchange_energy_meter_ids(self):
|
||||
if not hasattr(self.id, 'origin') or not self.id.origin:
|
||||
return
|
||||
target_property_id = self.id.origin
|
||||
meter_model = self.env['property.meter.archives']
|
||||
related_meters = meter_model.search([
|
||||
('yuthon_property_ids', 'in', [target_property_id])
|
||||
])
|
||||
if related_meters:
|
||||
related_meters.write({
|
||||
'yuthon_property_ids': [(6, 0, [])]
|
||||
})
|
||||
for rec in self.energy_meter_ids:
|
||||
meter_id = meter_model.browse(rec.property_meter_archives_id.id)
|
||||
meter_id.write({
|
||||
'yuthon_property_ids': [(6, 0, [target_property_id])]
|
||||
})
|
||||
# 物业关联水表按钮
|
||||
def add_water_meter_button(self):
|
||||
return {
|
||||
'name': '物业关联水表弹窗',
|
||||
'type': 'ir.actions.act_window',
|
||||
'res_model': 'utility.meter.wizard',
|
||||
'view_mode': 'form',
|
||||
'target': 'new',
|
||||
'context': {
|
||||
'default_property_id': self.id,
|
||||
'default_meter_type': 'water',
|
||||
}
|
||||
}
|
||||
|
||||
# @api.onchange('energy_meter_ids')
|
||||
# def _onchange_energy_meter_ids(self):
|
||||
# if not hasattr(self.id, 'origin') or not self.id.origin:
|
||||
# return
|
||||
# target_property_id = self.id.origin
|
||||
# meter_model = self.env['property.meter.archives']
|
||||
# related_meters = meter_model.search([
|
||||
# ('yuthon_property_ids', 'in', [target_property_id])
|
||||
# ])
|
||||
# if related_meters:
|
||||
# related_meters.write({
|
||||
# 'yuthon_property_ids': [(6, 0, [])]
|
||||
# })
|
||||
# for rec in self.energy_meter_ids:
|
||||
# meter_id = meter_model.browse(rec.property_meter_archives_id.id)
|
||||
# meter_id.write({
|
||||
# 'yuthon_property_ids': [(6, 0, [target_property_id])]
|
||||
# })
|
||||
|
||||
@api.onchange('water_meter_ids')
|
||||
def _onchange_water_meter_idss(self):
|
||||
@@ -552,6 +583,17 @@ class YuthonPropertyWater(models.Model):
|
||||
epitope_values_id = fields.Many2one(related='property_meter_water_id.epitope_values_id', string="位置")
|
||||
yuthon_property_id = fields.Many2one('yuthon.property', string="物业管理")
|
||||
|
||||
# 水表跳转
|
||||
def detail(self):
|
||||
return {
|
||||
"type": "ir.actions.act_window",
|
||||
"name": "水表库",
|
||||
"res_model": "property.meter.water",
|
||||
"res_id": self.property_meter_water_id.id,
|
||||
"view_mode": "form",
|
||||
"target": "new"
|
||||
}
|
||||
|
||||
|
||||
class YuthonPropertyEnergy(models.Model):
|
||||
_name = 'yuthon.property.energy'
|
||||
@@ -565,6 +607,17 @@ class YuthonPropertyEnergy(models.Model):
|
||||
epitope_values_id = fields.Many2one(related='property_meter_archives_id.epitope_values_id', string="位置")
|
||||
yuthon_property_id = fields.Many2one('yuthon.property', string="物业管理")
|
||||
|
||||
# 水表跳转
|
||||
def detail(self):
|
||||
return {
|
||||
"type": "ir.actions.act_window",
|
||||
"name": "电表库",
|
||||
"res_model": "property.meter.archives",
|
||||
"res_id": self.property_meter_archives_id.id,
|
||||
"view_mode": "form",
|
||||
"target": "new"
|
||||
}
|
||||
|
||||
|
||||
class TitleInformationLine(models.Model):
|
||||
_name = 'title.information.line'
|
||||
|
||||
@@ -100,4 +100,5 @@ access_receivable_modify_line, receivable.modify.line,model_receivable_modify_li
|
||||
access_meter_archives_line, meter.archives.line,model_meter_archives_line,base.group_user,1,1,1,1
|
||||
access_meter_water_line, meter.water.line,model_meter_water_line,base.group_user,1,1,1,1
|
||||
access_yuthon_epitope_values, yuthon.epitope.values,model_yuthon_epitope_values,base.group_user,1,1,1,1
|
||||
access_task_push_wizard,task.push.wizard,model_task_push_wizard,base.group_user,1,1,1,1
|
||||
access_task_push_wizard,task.push.wizard,model_task_push_wizard,base.group_user,1,1,1,1
|
||||
access_utility_meter_wizard,utility.meter.wizard,model_utility_meter_wizard,base.group_user,1,1,1,1
|
||||
|
@@ -40,7 +40,6 @@
|
||||
<field name="name"/>
|
||||
<field name="unit_number"/>
|
||||
<field name="type"/>
|
||||
<field name="lessee_id" options="{'no_create': True}" />
|
||||
<field name="epitope_values_id" domain="[('type', '=', 'ammeter')]" options="{'no_open': True}"/>
|
||||
<field name="gauge_magnification"/>
|
||||
<field name="maximum_count"/>
|
||||
@@ -59,7 +58,6 @@
|
||||
<tree editable="bottom">
|
||||
<field name="archives_id" options="{'no_open': True}"/>
|
||||
<field name="epitope_values_id" domain="[('type', '=', 'ammeter')]" options="{'no_open': True}"/>
|
||||
<field name="lessee_id" options="{'no_create': True, 'no_open': True}"/>
|
||||
<field name="yuthon_property_ids" string="物业信息" widget="many2many_tags" options="{'no_open': True}"/>
|
||||
<field name="last_meter" />
|
||||
<field name="last_dosage"/>
|
||||
|
||||
@@ -116,7 +116,6 @@
|
||||
<page string="产权信息" name="information_info">
|
||||
<field name="title_information_ids">
|
||||
<tree editable="bottom">
|
||||
<button name="message_record" string="详情" type="object" class="btn-primary"/>
|
||||
<field name="yuthon_property_id" column_invisible="1"/>
|
||||
<field name="property_message_id" options="{'no_open': True}"/>
|
||||
<field name="owner_id" options="{'no_open': True}"/>
|
||||
@@ -125,6 +124,7 @@
|
||||
<field name="registered_id" options="{'no_open': True}"/>
|
||||
<field name="start_time"/>
|
||||
<field name="end_date"/>
|
||||
<button name="message_record" string="详情" type="object" class="btn-primary"/>
|
||||
</tree>
|
||||
</field>
|
||||
</page>
|
||||
@@ -145,45 +145,46 @@
|
||||
</tree>
|
||||
</field>
|
||||
</page>
|
||||
<page string="招商信息">
|
||||
<group>
|
||||
<group>
|
||||
<field name="ame"/>
|
||||
</group>
|
||||
<group>
|
||||
<field name="decoration_type"/>
|
||||
</group>
|
||||
</group>
|
||||
</page>
|
||||
<page string="其他信息">
|
||||
<group>
|
||||
<group>
|
||||
<field name="remark"/>
|
||||
<field name="is_confirm_authorization"/>
|
||||
<field name="is_handle_land"/>
|
||||
</group>
|
||||
<group>
|
||||
<field name="vr_link"/>
|
||||
<field name="is_hvac"/>
|
||||
</group>
|
||||
</group>
|
||||
</page>
|
||||
<page string="评估">
|
||||
<field name="assessment_ids">
|
||||
<tree editable="bottom">
|
||||
<field name="yuthon_property_id" column_invisible="1"/>
|
||||
<field name="name"/>
|
||||
</tree>
|
||||
</field>
|
||||
</page>
|
||||
<page string="维修">
|
||||
<field name="repair_ids">
|
||||
<tree editable="bottom">
|
||||
<field name="yuthon_property_id" column_invisible="1"/>
|
||||
<field name="name"/>
|
||||
</tree>
|
||||
</field>
|
||||
</page>
|
||||
<!-- 暂时注释 -->
|
||||
<!-- <page string="招商信息">-->
|
||||
<!-- <group>-->
|
||||
<!-- <group>-->
|
||||
<!-- <field name="ame"/>-->
|
||||
<!-- </group>-->
|
||||
<!-- <group>-->
|
||||
<!-- <field name="decoration_type"/>-->
|
||||
<!-- </group>-->
|
||||
<!-- </group>-->
|
||||
<!-- </page>-->
|
||||
<!-- <page string="其他信息">-->
|
||||
<!-- <group>-->
|
||||
<!-- <group>-->
|
||||
<!-- <field name="remark"/>-->
|
||||
<!-- <field name="is_confirm_authorization"/>-->
|
||||
<!-- <field name="is_handle_land"/>-->
|
||||
<!-- </group>-->
|
||||
<!-- <group>-->
|
||||
<!-- <field name="vr_link"/>-->
|
||||
<!-- <field name="is_hvac"/>-->
|
||||
<!-- </group>-->
|
||||
<!-- </group>-->
|
||||
<!-- </page>-->
|
||||
<!-- <page string="评估">-->
|
||||
<!-- <field name="assessment_ids">-->
|
||||
<!-- <tree editable="bottom">-->
|
||||
<!-- <field name="yuthon_property_id" column_invisible="1"/>-->
|
||||
<!-- <field name="name"/>-->
|
||||
<!-- </tree>-->
|
||||
<!-- </field>-->
|
||||
<!-- </page>-->
|
||||
<!-- <page string="维修">-->
|
||||
<!-- <field name="repair_ids">-->
|
||||
<!-- <tree editable="bottom">-->
|
||||
<!-- <field name="yuthon_property_id" column_invisible="1"/>-->
|
||||
<!-- <field name="name"/>-->
|
||||
<!-- </tree>-->
|
||||
<!-- </field>-->
|
||||
<!-- </page>-->
|
||||
<page string="安全生产">
|
||||
<field name="produce_ids">
|
||||
<tree editable="bottom">
|
||||
@@ -240,21 +241,9 @@
|
||||
<page string="被合并信息" invisible="not is_done_merge">
|
||||
<field name="property_merge_approval_id"/>
|
||||
</page>
|
||||
<page string="水表列表" invisible="is_meter == False">
|
||||
<field name="water_meter_ids">
|
||||
<tree editable="bottom">
|
||||
<field name="yuthon_property_id" column_invisible="1"/>
|
||||
<field name="property_meter_water_id" options="{'no_open': True}"/>
|
||||
<field name="rate"/>
|
||||
<field name="standard_id" options="{'no_open': True}"/>
|
||||
<field name="installation_date"/>
|
||||
<field name="demolition_date"/>
|
||||
<field name="epitope_values_id"/>
|
||||
</tree>
|
||||
</field>
|
||||
</page>
|
||||
<page string="电表列表" invisible="is_electricity_meter == False">
|
||||
<field name="energy_meter_ids">
|
||||
<button name="add_archives_meter_button" type="object" class="btn btn-success" string="关联电表"/>
|
||||
<field name="energy_meter_ids" readonly="1">
|
||||
<tree editable="bottom">
|
||||
<field name="yuthon_property_id" column_invisible="1"/>
|
||||
<field name="property_meter_archives_id" options="{'no_open': True}"/>
|
||||
@@ -263,17 +252,33 @@
|
||||
<field name="installation_date"/>
|
||||
<field name="demolition_date"/>
|
||||
<field name="epitope_values_id"/>
|
||||
<button name="detail" type="object" class="btn btn-secondary" string="详情"/>
|
||||
</tree>
|
||||
</field>
|
||||
</page>
|
||||
<page string="水表列表" invisible="is_meter == False">
|
||||
<button name="add_water_meter_button" type="object" class="btn btn-success" string="关联水表"/>
|
||||
<field name="water_meter_ids" readonly="1">
|
||||
<tree editable="bottom">
|
||||
<field name="yuthon_property_id" column_invisible="1"/>
|
||||
<field name="property_meter_water_id" options="{'no_open': True}"/>
|
||||
<field name="rate"/>
|
||||
<field name="standard_id" options="{'no_open': True}"/>
|
||||
<field name="installation_date"/>
|
||||
<field name="demolition_date"/>
|
||||
<field name="epitope_values_id"/>
|
||||
<button name="detail" type="object" class="btn btn-secondary" string="详情"/>
|
||||
</tree>
|
||||
</field>
|
||||
</page>
|
||||
</notebook>
|
||||
</sheet>
|
||||
<div class="oe_chatter">
|
||||
<field name="message_follower_ids" groups="base.group_user"
|
||||
options="{'post_refresh': 'recipients'}"/>
|
||||
<field name="activity_ids"/>
|
||||
<field name="message_ids"/>
|
||||
</div>
|
||||
<!-- <div class="oe_chatter">-->
|
||||
<!-- <field name="message_follower_ids" groups="base.group_user"-->
|
||||
<!-- options="{'post_refresh': 'recipients'}"/>-->
|
||||
<!-- <field name="activity_ids"/>-->
|
||||
<!-- <field name="message_ids"/>-->
|
||||
<!-- </div>-->
|
||||
</form>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
@@ -10,3 +10,4 @@ from . import water_price_wizard
|
||||
from . import initialize_wizard
|
||||
from . import electric_water_wizard
|
||||
from . import task_push_wizard
|
||||
from . import utility_meter_wizard
|
||||
|
||||
@@ -0,0 +1,33 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
from odoo import models, fields, api, _, SUPERUSER_ID
|
||||
from odoo.exceptions import ValidationError, UserError
|
||||
from pypinyin import pinyin, Style
|
||||
import xlrd
|
||||
import base64
|
||||
import datetime
|
||||
from datetime import datetime
|
||||
|
||||
|
||||
class UtilityMeterWizard(models.TransientModel):
|
||||
_name = 'utility.meter.wizard'
|
||||
_description = '物业关联水电表弹窗'
|
||||
|
||||
property_id = fields.Many2one('yuthon.property', string="物业信息")
|
||||
meter_type = fields.Selection([('archives', '电表'), ('water', '水表')], string="表类型")
|
||||
epitope_values_archives_id = fields.Many2one("yuthon.epitope.values", string="电表位置")
|
||||
epitope_values_water_id = fields.Many2one("yuthon.epitope.values", string="水表位置")
|
||||
archives_ids = fields.Many2many('property.meter.archives', string="电表库")
|
||||
water_ids = fields.Many2many('property.meter.water', string="水表库")
|
||||
|
||||
def confirm(self):
|
||||
if self.meter_type == 'archives':
|
||||
for archives in self.archives_ids:
|
||||
archives.yuthon_property_ids |= self.property_id
|
||||
|
||||
# self.archives_ids.write({'yuthon_property_ids': [(4, self.property_id.id)]})
|
||||
if self.meter_type == 'water':
|
||||
for water in self.water_ids:
|
||||
# 使用 |= 操作符来追加到 Many2many 字段
|
||||
water.yuthon_property_ids |= self.property_id
|
||||
|
||||
# self.water_ids.write({'yuthon_property_ids': [(4, self.property_id.id)]})
|
||||
@@ -0,0 +1,25 @@
|
||||
<?xml version="1.0" encoding="UTF-8" ?>
|
||||
<odoo>
|
||||
<record id="utility_meter_wizard_form" model="ir.ui.view">
|
||||
<field name="name">utility.meter.wizard.form</field>
|
||||
<field name="model">utility.meter.wizard</field>
|
||||
<field name="arch" type="xml">
|
||||
<form sting="物业关联水电表">
|
||||
<group>
|
||||
<field name="property_id" invisible="1"/>
|
||||
<field name="meter_type" invisible="1"/>
|
||||
<field name="epitope_values_archives_id" domain="[('type', '=', 'ammeter')]" invisible="meter_type == 'water'" string="电表位置"/>
|
||||
<field name="archives_ids" domain="[('epitope_values_id', '=', epitope_values_archives_id)]" invisible="meter_type == 'water'" widget="many2many_tags"/>
|
||||
<field name="epitope_values_water_id" domain="[('type', '=', 'watermeter')]" invisible="meter_type == 'archives'" string="水表位置"/>
|
||||
<field name="water_ids" domain="[('epitope_values_id', '=', epitope_values_water_id)]" invisible="meter_type == 'archives'" widget="many2many_tags"/>
|
||||
</group>
|
||||
<footer>
|
||||
<button name="confirm" string="确定" type="object" class="oe_highlight"/>
|
||||
<button string="取消" class="oe_link" special="cancel"/>
|
||||
</footer>
|
||||
</form>
|
||||
</field>
|
||||
</record>
|
||||
</odoo>
|
||||
|
||||
|
||||
@@ -1,15 +1,15 @@
|
||||
<?xml version="1.0" encoding="UTF-8" ?>
|
||||
<odoo>
|
||||
<record id ="inherit_property_meter_archives_form" model="ir.ui.view">
|
||||
<field name="name">inherit.property.meter.archives.form</field>
|
||||
<field name="model">property.meter.archives</field>
|
||||
<field name="inherit_id" ref="yuthon_property.property_meter_archives_form"/>
|
||||
<field name="arch" type="xml">
|
||||
<xpath expr="//field[@name='yuthon_property_ids']" position="after">
|
||||
<field name="contract_id"/>
|
||||
</xpath>
|
||||
</field>
|
||||
</record>
|
||||
<!-- <record id ="inherit_property_meter_archives_form" model="ir.ui.view">-->
|
||||
<!-- <field name="name">inherit.property.meter.archives.form</field>-->
|
||||
<!-- <field name="model">property.meter.archives</field>-->
|
||||
<!-- <field name="inherit_id" ref="yuthon_property.property_meter_archives_form"/>-->
|
||||
<!-- <field name="arch" type="xml">-->
|
||||
<!-- <xpath expr="//field[@name='yuthon_property_ids']" position="after">-->
|
||||
<!-- <field name="contract_id"/>-->
|
||||
<!-- </xpath>-->
|
||||
<!-- </field>-->
|
||||
<!-- </record>-->
|
||||
<record id="inherit_property_meter_water_form" model="ir.ui.view">
|
||||
<field name="name">inherit.property.meter.water.form</field>
|
||||
<field name="model">property.meter.water</field>
|
||||
|
||||
@@ -285,11 +285,11 @@
|
||||
parent="yuthon_property.yuthon_property_meter_menu"
|
||||
action="yuthon_property.view_yuthon_epitope_values_action"/>
|
||||
|
||||
<menuitem id="yuthon_property_water_list"
|
||||
sequence="30"
|
||||
name="水费列表"
|
||||
parent="yuthon_property.yuthon_property_fee_management"
|
||||
action="view_property_water_list_action"/>
|
||||
<!-- <menuitem id="yuthon_property_water_list"-->
|
||||
<!-- sequence="30"-->
|
||||
<!-- name="水费列表"-->
|
||||
<!-- parent="yuthon_property.yuthon_property_fee_management"-->
|
||||
<!-- action="view_property_water_list_action"/>-->
|
||||
<menuitem id="yuthon_property_deposit_list"
|
||||
sequence="40"
|
||||
name="押金列表"
|
||||
|
||||
@@ -131,10 +131,7 @@ class YuthonWillTask(models.Model):
|
||||
hour_from = float(task.request_hour_from)
|
||||
start_hour = int(hour_from)
|
||||
start_minute = int((hour_from - start_hour) * 60)
|
||||
start_datetime = datetime.combine(
|
||||
fields.Date.from_string(task.start_date),
|
||||
time(start_hour, start_minute)
|
||||
) + timedelta(hours=8)
|
||||
start_datetime = datetime.combine(fields.Date.from_string(task.start_date), time(start_hour, start_minute))
|
||||
if task.request_hour_to:
|
||||
hour_to = float(task.request_hour_to)
|
||||
end_hour = int(hour_to)
|
||||
@@ -146,16 +143,14 @@ class YuthonWillTask(models.Model):
|
||||
if now > end_datetime:
|
||||
task.write({'task_state': 'done'})
|
||||
continue
|
||||
_logger.info("定时任务执行中")
|
||||
_logger.info(f"判断前 now:{now} --- start:{start_datetime}")
|
||||
_logger.info(f"日程消息提醒定时任务判断\n当前时间:{now} --- 任务开始时间:{start_datetime}")
|
||||
if now <= start_datetime:
|
||||
if task.task_time_ids:
|
||||
for task_time in task.task_time_ids:
|
||||
duration = self._compute_duration(task_time)
|
||||
trigger_time = now + duration
|
||||
if (trigger_time.day == start_datetime.day and
|
||||
trigger_time.hour == start_datetime.hour and
|
||||
trigger_time.minute == start_datetime.minute):
|
||||
_logger.info(f"判断可否发送消息\n任务天:-{trigger_time.day}时:-{trigger_time.hour}分:-{trigger_time.minute}\n当前天:-{start_datetime.day}时:-{start_datetime.hour}分:-{start_datetime.minute}")
|
||||
if (trigger_time.day == start_datetime.day and trigger_time.hour == start_datetime.hour and trigger_time.minute == start_datetime.minute):
|
||||
task.add_comment()
|
||||
|
||||
def _compute_duration(self, task_time):
|
||||
@@ -176,18 +171,12 @@ class YuthonWillTask(models.Model):
|
||||
raise UserError("请同步{}的企业微信".format(employee_id.name))
|
||||
url = f'http:://oa.thtzjt.com/webh5#/journey?id={self.id}'
|
||||
data_name = "事项名称: " + self.name + '\n'
|
||||
# data_start_time = '开始时间:' + str(self.start_time + timedelta(hours=8)) + '\n'
|
||||
data_user_ids = '参与人: ' + ', '.join(self.employee_ids.mapped('name')) + '\n'
|
||||
data_employee_id = ('司机:' + ', '.join(self.employee_ids2.mapped('name')) + '\n') if self.employee_ids2 else ''
|
||||
data_nota = ('备注:' + self.remarks) if self.remarks else ('') + '\n'
|
||||
# data = data_name + data_start_time + data_user_ids + data_nota + data_employee_id
|
||||
data = data_name + data_user_ids + data_nota + data_employee_id
|
||||
self.sudo().env["wecom.apps"].sync_send_message_textcard(category='task', user_id=employee_id.wecom_userid,
|
||||
title="日程事项提醒", description=data,
|
||||
self.sudo().env["wecom.apps"].sync_send_message_textcard(category='task', user_id=employee_id.wecom_userid,title="日程事项提醒", description=data,
|
||||
url=url, btntxt="详细信息")
|
||||
# for record in self:
|
||||
# partner_ids = record.employee_ids.user_id.partner_id.ids
|
||||
# record.with_context(lang=record.env.lang)._message_auto_subscribe_notify(partner_ids,'yuthon_will_task.mail_action_yuthon_will_task_add_comment')
|
||||
|
||||
def button_add_comment(self):
|
||||
self.add_comment()
|
||||
|
||||
@@ -783,7 +783,7 @@
|
||||
sequence="5"/>
|
||||
<menuitem id="yuthon_accounts_receivable_menu"
|
||||
sequence="1"
|
||||
name="应收账单(明细)"
|
||||
name="应收账单(明细)"
|
||||
parent="yuthon_financial_management_menu"
|
||||
action="yuthon_property_approval.property_accounts_receivable_action"/>
|
||||
<menuitem
|
||||
|
||||
Reference in New Issue
Block a user