修复进度不更新到bfm的问题,在sf的设置处增加bfm环境选择(正式、测试、开发)
This commit is contained in:
@@ -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):
|
||||||
|
|||||||
@@ -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': {
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
36
sf_machine_connect/models/res_config_setting.py
Normal file
36
sf_machine_connect/models/res_config_setting.py
Normal 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 "")
|
||||||
|
|
||||||
29
sf_machine_connect/views/res_config_settings_views.xml
Normal file
29
sf_machine_connect/views/res_config_settings_views.xml
Normal 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>
|
||||||
Reference in New Issue
Block a user