修复进度不更新到bfm的问题,在sf的设置处增加bfm环境选择(正式、测试、开发)

This commit is contained in:
mgw
2023-05-23 10:41:10 +08:00
parent 19531bba04
commit 92cbdfd4f5
5 changed files with 181 additions and 65 deletions

View File

@@ -15,99 +15,148 @@ class StatusChange(models.Model):
default_code = fields.Char(string='内部编码') default_code = fields.Char(string='内部编码')
def action_confirm(self): def action_confirm(self):
# 在原有方法执行前记录日志和执行其他操作
logging.info('函数已经执行=============') logging.info('函数已经执行=============')
if self._get_forbidden_state_confirm() & set(self.mapped('state')):
raise UserError(_(
"It is not allowed to confirm an order in the following states: %s",
", ".join(self._get_forbidden_state_confirm()),
))
logging.info('函数已经执行=============1')
for order in self:
if order.partner_id in order.message_partner_ids:
logging.info('函数已经执行=============2')
continue
order.message_subscribe([order.partner_id.id])
logging.info('函数已经执行=============3')
self.write(self._prepare_confirmation_values())
# Context key 'default_name' is sometimes propagated up to here. # 使用super()来调用原始方法(在本例中为'sale.order'模型的'action_confirm'方法)
# We don't need it and it creates issues in the creation of linked records. res = super(StatusChange, self).action_confirm()
context = self._context.copy()
context.pop('default_name', None) # 原有方法执行后进行额外的操作如调用外部API
logging.info('函数已经执行=============4')
self.with_context(context)._action_confirm()
if self.env.user.has_group('sale.group_auto_done_setting'):
logging.info('函数已经执行=============5')
self.action_done()
process_start_time = str(datetime.now()) process_start_time = str(datetime.now())
config = self.env['res.config.settings'].get_values()
json1 = { json1 = {
'params': { 'params': {
'model_name': 'jikimo.process.order', 'model_name': 'jikimo.process.order',
'field_name': 'name', 'field_name': 'name',
# 'default_code': 'PO-2022-1214-0022',
'default_code': self.default_code, 'default_code': self.default_code,
# 'default_code': self.name,
'state': '加工中', 'state': '加工中',
'process_start_time': process_start_time, 'process_start_time': process_start_time,
}, },
} }
url1 = 'https://bfm.cs.jikimo.com/api/get/state/get_order' url1 = config['bfm_url'] + '/api/get/state/get_order'
requests.post(url1, json=json1, data=None) requests.post(url1, json=json1, data=None)
logging.info('接口已经执行=============') logging.info('接口已经执行=============')
return True return res
def action_cancel(self): def action_cancel(self):
""" Cancel SO after showing the cancel wizard when needed. (cfr `_show_cancel_wizard`) # 在原有方法执行前记录日志和执行其他操作
For post-cancel operations, please only override `_action_cancel`.
note: self.ensure_one() if the wizard is shown.
"""
logging.info('函数已经执行=============') logging.info('函数已经执行=============')
cancel_warning = self._show_cancel_wizard()
# 使用super()来调用原始方法(在本例中为'sale.order'模型的'action_cancel'方法)
res = super(StatusChange, self).action_cancel()
# 原有方法执行后进行额外的操作如调用外部API
logging.info('函数已经执行=============2') logging.info('函数已经执行=============2')
config = self.env['res.config.settings'].get_values()
json1 = { json1 = {
'params': { 'params': {
'model_name': 'jikimo.process.order', 'model_name': 'jikimo.process.order',
'field_name': 'name', 'field_name': 'name',
'default_code': self.default_code, 'default_code': self.default_code,
# 'default_code': self.name,
'state': '待派单', 'state': '待派单',
}, },
} }
url1 = 'https://bfm.cs.jikimo.com/api/get/state/cancel_order' url1 = config['bfm_url'] + '/api/get/state/cancel_order'
requests.post(url1, json=json1, data=None) requests.post(url1, json=json1, data=None)
if cancel_warning:
logging.info('函数已经执行=============3') return res
self.ensure_one()
logging.info('函数已经执行=============4') # def action_confirm(self):
template_id = self.env['ir.model.data']._xmlid_to_res_id( # logging.info('函数已经执行=============')
'sale.mail_template_sale_cancellation', raise_if_not_found=False # if self._get_forbidden_state_confirm() & set(self.mapped('state')):
) # raise UserError(_(
lang = self.env.context.get('lang') # "It is not allowed to confirm an order in the following states: %s",
template = self.env['mail.template'].browse(template_id) # ", ".join(self._get_forbidden_state_confirm()),
if template.lang: # ))
lang = template._render_lang(self.ids)[self.id] # logging.info('函数已经执行=============1')
ctx = { # for order in self:
'default_use_template': bool(template_id), # if order.partner_id in order.message_partner_ids:
'default_template_id': template_id, # logging.info('函数已经执行=============2')
'default_order_id': self.id, # continue
'mark_so_as_canceled': True, # order.message_subscribe([order.partner_id.id])
'default_email_layout_xmlid': "mail.mail_notification_layout_with_responsible_signature", # logging.info('函数已经执行=============3')
'model_description': self.with_context(lang=lang).type_name, # self.write(self._prepare_confirmation_values())
} #
return { # # Context key 'default_name' is sometimes propagated up to here.
'name': _('Cancel %s', self.type_name), # # We don't need it and it creates issues in the creation of linked records.
'view_mode': 'form', # context = self._context.copy()
'res_model': 'sale.order.cancel', # context.pop('default_name', None)
'view_id': self.env.ref('sale.sale_order_cancel_view_form').id, # logging.info('函数已经执行=============4')
'type': 'ir.actions.act_window', # self.with_context(context)._action_confirm()
'context': ctx, # if self.env.user.has_group('sale.group_auto_done_setting'):
'target': 'new' # logging.info('函数已经执行=============5')
} # self.action_done()
else: # process_start_time = str(datetime.now())
return self._action_cancel() # json1 = {
# 'params': {
# 'model_name': 'jikimo.process.order',
# 'field_name': 'name',
# # 'default_code': 'PO-2022-1214-0022',
# 'default_code': self.default_code,
# # 'default_code': self.name,
# 'state': '加工中',
# 'process_start_time': process_start_time,
# },
# }
# url1 = 'https://bfm.cs.jikimo.com/api/get/state/get_order'
# requests.post(url1, json=json1, data=None)
# logging.info('接口已经执行=============')
#
# return True
# def action_cancel(self):
# """ Cancel SO after showing the cancel wizard when needed. (cfr `_show_cancel_wizard`)
#
# For post-cancel operations, please only override `_action_cancel`.
#
# note: self.ensure_one() if the wizard is shown.
# """
# logging.info('函数已经执行=============')
# cancel_warning = self._show_cancel_wizard()
# logging.info('函数已经执行=============2')
# json1 = {
# 'params': {
# 'model_name': 'jikimo.process.order',
# 'field_name': 'name',
# 'default_code': self.default_code,
# # 'default_code': self.name,
# 'state': '待派单',
# },
# }
# url1 = 'https://bfm.cs.jikimo.com/api/get/state/cancel_order'
# requests.post(url1, json=json1, data=None)
# if cancel_warning:
# logging.info('函数已经执行=============3')
# self.ensure_one()
# logging.info('函数已经执行=============4')
# template_id = self.env['ir.model.data']._xmlid_to_res_id(
# 'sale.mail_template_sale_cancellation', raise_if_not_found=False
# )
# lang = self.env.context.get('lang')
# template = self.env['mail.template'].browse(template_id)
# if template.lang:
# lang = template._render_lang(self.ids)[self.id]
# ctx = {
# 'default_use_template': bool(template_id),
# 'default_template_id': template_id,
# 'default_order_id': self.id,
# 'mark_so_as_canceled': True,
# 'default_email_layout_xmlid': "mail.mail_notification_layout_with_responsible_signature",
# 'model_description': self.with_context(lang=lang).type_name,
# }
# return {
# 'name': _('Cancel %s', self.type_name),
# 'view_mode': 'form',
# 'res_model': 'sale.order.cancel',
# 'view_id': self.env.ref('sale.sale_order_cancel_view_form').id,
# 'type': 'ir.actions.act_window',
# 'context': ctx,
# 'target': 'new'
# }
# else:
# return self._action_cancel()
class FinishStatusChange(models.Model): class FinishStatusChange(models.Model):

View File

@@ -29,6 +29,7 @@
'views/machine_monitor.xml', 'views/machine_monitor.xml',
'views/machine_info_present.xml', 'views/machine_info_present.xml',
'views/delivery_record.xml', 'views/delivery_record.xml',
'views/res_config_settings_views.xml',
], ],
'assets': { 'assets': {

View File

@@ -1,3 +1,4 @@
from . import ftp_client from . import ftp_client
from . import ftp_operate from . import ftp_operate
from . import py2opcua from . import py2opcua
from . import res_config_setting

View File

@@ -0,0 +1,36 @@
# -*- coding: utf-8 -*-
import logging
from odoo import api, fields, models, _
_logger = logging.getLogger(__name__)
class ResBFMConfigSettings(models.TransientModel):
_inherit = 'res.config.settings'
bfm_url = fields.Selection(
[("https://bfm.cs.jikimo.com", "开发环境(https://bfm.cs.jikimo.com)"),
("https://bfm.r.jikimo.com", "测试环境(https://bfm.r.jikimo.com)"),
# ("正式环境", "https://bfm.jikimo.com")], string='bfm环境', store=True)
("https://bfm.jikimo.com", "正式环境(https://bfm.jikimo.com)")], string='bfm环境', store=True)
@api.model
def get_values(self):
"""
重载获取参数的方法,参数都存在系统参数中
:return:
"""
values = super(ResBFMConfigSettings, self).get_values()
config = self.env['ir.config_parameter'].sudo()
bfm_url = config.get_param('bfm_url', default='')
values.update(
bfm_url=bfm_url,
)
return values
def set_values(self):
super(ResBFMConfigSettings, self).set_values()
ir_config = self.env['ir.config_parameter'].sudo()
ir_config.set_param("bfm_url", self.bfm_url or "")

View File

@@ -0,0 +1,29 @@
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<data>
<record id="res_config_settings_jd_view_form_inherit" model="ir.ui.view">
<field name="name">res.config.settings.jd.view.form.inherit.bpm</field>
<field name="model">res.config.settings</field>
<field name="inherit_id" ref="base.res_config_settings_view_form"/>
<field name="arch" type="xml">
<xpath expr="//div[hasclass('app_settings_block')]/div" position="before">
<div>
<h2>bfm环境配置</h2>
<div class="row mt16 o_settings_container" id="jd_api">
<div class="col-12 col-lg-6 o_setting_box">
<div class="o_setting_left_pane"/>
<div class="o_setting_right_pane">
<div class="text-muted">
<label for="bfm_url"/>
<field name="bfm_url"/>
</div>
</div>
<!-- </div> -->
</div>
</div>
</div>
</xpath>
</field>
</record>
</data>
</odoo>