Files
test/sf_bf_connect/models/process_status.py
2023-11-27 21:30:45 +08:00

231 lines
9.9 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

from datetime import datetime
import logging
import requests
from odoo import fields, models
_logger = logging.getLogger(__name__)
class StatusChange(models.Model):
_inherit = 'sale.order'
default_code = fields.Char(string='内部编码')
def action_confirm(self):
# 在原有方法执行前记录日志和执行其他操作
logging.info('函数已经执行=============')
# 使用super()来调用原始方法(在本例中为'sale.order'模型的'action_confirm'方法)
res = super(StatusChange, self).action_confirm()
# 原有方法执行后进行额外的操作如调用外部API
process_start_time = str(datetime.now())
config = self.env['res.config.settings'].get_values()
json1 = {
'params': {
'model_name': 'jikimo.process.order',
'field_name': 'name',
'default_code': self.default_code,
'state': '加工中',
'process_start_time': process_start_time,
},
}
url1 = config['bfm_url'] + '/api/get/state/get_order'
requests.post(url1, json=json1, data=None)
logging.info('接口已经执行=============')
return res
def action_cancel(self):
# 在原有方法执行前记录日志和执行其他操作
logging.info('函数已经执行=============')
# 使用super()来调用原始方法(在本例中为'sale.order'模型的'action_cancel'方法)
res = super(StatusChange, self).action_cancel()
# 原有方法执行后进行额外的操作如调用外部API
logging.info('函数已经执行=============2')
config = self.env['res.config.settings'].get_values()
json1 = {
'params': {
'model_name': 'jikimo.process.order',
'field_name': 'name',
'default_code': self.default_code,
'state': '待派单',
},
}
url1 = config['bfm_url'] + '/api/get/state/cancel_order'
requests.post(url1, json=json1, data=None)
return res
# def action_confirm(self):
# 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.
# # We don't need it and it creates issues in the creation of linked records.
# context = self._context.copy()
# context.pop('default_name', None)
# 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())
# 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):
_inherit = 'stock.picking'
# default_code = fields.Char(string='内部编码')
def button_validate1(self):
# Clean-up the context key at validation to avoid forcing the creation of immediate
# transfers.
ctx = dict(self.env.context)
ctx.pop('default_immediate_transfer', None)
self = self.with_context(ctx)
# Sanity checks.
if not self.env.context.get('skip_sanity_check', False):
self._sanity_check()
self.message_subscribe([self.env.user.partner_id.id])
# Run the pre-validation wizards. Processing a pre-validation wizard should work on the
# moves and/or the context and never call `_action_done`.
if not self.env.context.get('button_validate_picking_ids'):
self = self.with_context(button_validate_picking_ids=self.ids)
res = self._pre_action_done_hook()
if res is not True:
return res
# Call `_action_done`.
pickings_not_to_backorder = self.filtered(lambda p: p.picking_type_id.create_backorder == 'never')
if self.env.context.get('picking_ids_not_to_backorder'):
pickings_not_to_backorder |= self.browse(self.env.context['picking_ids_not_to_backorder']).filtered(
lambda p: p.picking_type_id.create_backorder != 'always'
)
pickings_to_backorder = self - pickings_not_to_backorder
pickings_not_to_backorder.with_context(cancel_backorder=True)._action_done()
pickings_to_backorder.with_context(cancel_backorder=False)._action_done()
if self.user_has_groups('stock.group_reception_report') \
and self.picking_type_id.auto_show_reception_report:
lines = self.move_ids.filtered(lambda
m: m.product_id.type == 'product' and m.state != 'cancel'
and m.quantity_done and not m.move_dest_ids)
if lines:
# don't show reception report if all already assigned/nothing to assign
wh_location_ids = self.env['stock.location']._search(
[('id', 'child_of', self.picking_type_id.warehouse_id.view_location_id.id),
('usage', '!=', 'supplier')])
if self.env['stock.move'].search([
('state', 'in', ['confirmed', 'partially_available', 'waiting', 'assigned']),
('product_qty', '>', 0),
('location_id', 'in', wh_location_ids),
('move_orig_ids', '=', False),
('picking_id', 'not in', self.ids),
('product_id', 'in', lines.product_id.ids)], limit=1):
action = self.action_view_reception_report()
action['context'] = {'default_picking_ids': self.ids}
return action
# out_start_time = str(datetime.now())
json2 = {
'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': out_start_time,
},
}
url1 = 'https://bfm.cs.jikimo.com/api/get/state/get_order'
requests.post(url1, json=json2, data=None)
logging.info('接口已经执行=============')
return True