diff --git a/sf_base/models/base.py b/sf_base/models/base.py
index 966ccdc5..edc814bb 100644
--- a/sf_base/models/base.py
+++ b/sf_base/models/base.py
@@ -39,7 +39,7 @@ class MachineBrand(models.Model):
remark = fields.Text('备注')
active = fields.Boolean('有效', default=True)
-
+
# 机床
class MachineTool(models.Model):
_name = 'sf.machine_tool'
@@ -86,7 +86,7 @@ class MachineTool(models.Model):
state = fields.Selection(
[("正常", "正常"), ("故障", "故障"), ("不可用", "不可用")],
default='正常', string="机床状态")
- #0606新增字段
+ # 0606新增字段
machine_tool_picture = fields.Binary('图片')
heightened_way = fields.Selection([
('sifudianji', '伺服电机驱动'),
@@ -260,7 +260,7 @@ class MachineToolType(models.Model):
default="", string="刀把类型")
number_of_knife_library = fields.Integer('刀库数量')
rotate_speed = fields.Integer('转速')
- #0606新增字段
+ # 0606新增字段
created_user = fields.Many2one('res.users', string='创建人', default=lambda self: self.env.user)
machine_tool_picture = fields.Binary('图片')
heightened_way = fields.Selection([
@@ -326,5 +326,4 @@ class MachineToolCategory(models.Model):
remark = fields.Text('备注')
active = fields.Boolean('有效', default=True)
category = fields.Selection([('shukong', u'数控'), ('putong', u'普通')], string=u'机床类别',
- default='shukong')
-
+ default='shukong')
diff --git a/sf_bf_connect/models/jd_eclp.py b/sf_bf_connect/models/jd_eclp.py
index 030d3da2..6f6b4ab6 100644
--- a/sf_bf_connect/models/jd_eclp.py
+++ b/sf_bf_connect/models/jd_eclp.py
@@ -1,8 +1,8 @@
-#import cpca
-import logging
+# import cpca
import base64
-import requests
+import logging
from datetime import datetime
+import requests
from odoo.exceptions import UserError
from odoo.exceptions import ValidationError
from odoo import api, fields, models, SUPERUSER_ID, _
@@ -37,7 +37,7 @@ class JdEclp(models.Model):
deliveryType = fields.Selection([('6', '特快零担'), ('25', '特快重货')], string='运输类型', default='25')
# bill = fields.Char(string='物流面单')
- # bill = fields.Many2one('ir.attachment', string='物流面单', compute='query_bill_pdf')
+ # bill = fields.Many2one('ir.attachment', string='物流面单', compute='query_bill_pdf')
# bill_show = fields.Binary(string='物流面单展示', readonly=True, related='self.bill.datas')
bill_show = fields.Binary(string='物流面单展示', readonly=True)
@@ -48,10 +48,11 @@ class JdEclp(models.Model):
@api.depends('origin')
def _truck_info(self):
# if 'S' in self.origin:
- # if self.receiverName and self.receiverMobile and self.receiverProvinceName and self.receiverCityName and self.receiverCountyName and self.receiverTownName:
+ # if self.receiverName and self.receiverMobile and self.receiverProvinceName and self.receiverCityName and
+ # self.receiverCountyName and self.receiverTownName:
sale_order_id = self.env['sale.order'].search([('name', '=', self.origin)])
- # stock_picking_type_id = self.enc['stock.picking.type'].search([('picking_type_id', '=', '')])
- # if sale_order_id.address_of_delivery != False:
+ # stock_picking_type_id = self.enc['stock.picking.type'].search([('picking_type_id', '=', '')])
+ # if sale_order_id.address_of_delivery != False:
try:
if 'OUT' in self.name:
raw_addres = sale_order_id.address_of_delivery.split('这是一个标志位,用来不分隔字符串')
@@ -78,8 +79,6 @@ class JdEclp(models.Model):
print(f"Error address is none: {e}")
pass
-
-
def create_order(self):
# sale_order_id = self.env['sale.order'].search([('name', '=', self.origin)])
diff --git a/sf_bf_connect/models/process_status.py b/sf_bf_connect/models/process_status.py
index 0a18096b..069ef2d4 100644
--- a/sf_bf_connect/models/process_status.py
+++ b/sf_bf_connect/models/process_status.py
@@ -1,10 +1,10 @@
-from odoo import api, fields, models, SUPERUSER_ID, _
-from odoo.exceptions import ValidationError
-from collections import defaultdict, namedtuple
from datetime import datetime
import logging
-from odoo.exceptions import UserError
import requests
+from odoo import api, fields, models, SUPERUSER_ID, _
+from odoo.exceptions import UserError
+from odoo.exceptions import ValidationError
+from collections import defaultdict, namedtuple
_logger = logging.getLogger(__name__)
@@ -105,7 +105,6 @@ class StatusChange(models.Model):
#
# return True
-
# def action_cancel(self):
# """ Cancel SO after showing the cancel wizard when needed. (cfr `_show_cancel_wizard`)
#
@@ -205,12 +204,12 @@ class FinishStatusChange(models.Model):
[('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):
+ ('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
diff --git a/sf_machine_connect/models/ftp_client.py b/sf_machine_connect/models/ftp_client.py
index cc4d60e2..d1295217 100644
--- a/sf_machine_connect/models/ftp_client.py
+++ b/sf_machine_connect/models/ftp_client.py
@@ -1,22 +1,21 @@
# -*- coding: utf-8 -*-
-import base64
-import logging
import os
-import json
-import hashlib
import time
-import requests
-from datetime import datetime, timedelta
-from odoo.http import request
-from odoo import fields, models, api, _
-from odoo.exceptions import ValidationError
-from odoo.exceptions import UserError
-from odoo.addons.sf_machine_connect.models import py2opcua, ftp_operate
-
+import json
+import base64
import shutil
+import logging
+import hashlib
from io import BytesIO
from zipfile import ZipFile
+from datetime import datetime, timedelta
+import requests
+from odoo.http import request
+from odoo import fields, models, api, _
+from odoo.exceptions import UserError
from odoo.exceptions import MissingError
+from odoo.exceptions import ValidationError
+from odoo.addons.sf_machine_connect.models import py2opcua, ftp_operate
_logger = logging.getLogger(__name__)
@@ -514,7 +513,6 @@ class WorkCenterBarcode(models.Model):
print('111111111111111111111')
workorder_obj_target = self.env['mrp.workorder'].sudo().search([('tray_code', '=', barcode)])
workorder_obj_current = self.env['mrp.workorder'].sudo().search([('id', '=', kwargs['current_id'])])
- # workorder_cnc = self.env['mrp.workorder'].sudo().search(['&', ('production_id', '=', workorder_obj.production_id.id), ('name', '=', 'CNC加工')])
workorder_cnc = self.env['mrp.workorder'].sudo().search(
['&', ('production_id', '=', workorder_obj_target.production_id.id),
('name', '=', workorder_obj_current.name)])
diff --git a/sf_machine_connect/models/ftp_operate.py b/sf_machine_connect/models/ftp_operate.py
index 277851ff..a94824f2 100644
--- a/sf_machine_connect/models/ftp_operate.py
+++ b/sf_machine_connect/models/ftp_operate.py
@@ -49,7 +49,6 @@ class FtpController:
self.port = port
self.username = username
self.password = password
- # _logger.info("===================ftppppp==================%s,%s,%s,%s" % self.host, self.port, self.username, self.password)
# 测试
print("==============================================")
print(self.username, self.port, self.host, self.password)
diff --git a/sf_machine_connect/models/res_config_setting.py b/sf_machine_connect/models/res_config_setting.py
index bab85379..c8257bf8 100644
--- a/sf_machine_connect/models/res_config_setting.py
+++ b/sf_machine_connect/models/res_config_setting.py
@@ -33,4 +33,3 @@ class ResBFMConfigSettings(models.TransientModel):
super(ResBFMConfigSettings, self).set_values()
ir_config = self.env['ir.config_parameter'].sudo()
ir_config.set_param("bfm_url", self.bfm_url or "")
-
diff --git a/sf_machine_connect/static/src/js/barcode_button.js b/sf_machine_connect/static/src/js/barcode_button.js
index c6554598..a050b35a 100644
--- a/sf_machine_connect/static/src/js/barcode_button.js
+++ b/sf_machine_connect/static/src/js/barcode_button.js
@@ -1,29 +1,23 @@
/** @odoo-module **/
import { browser } from "@web/core/browser/browser";
-import { Dialog } from "@web/core/dialog/dialog";
-import { _lt } from "@web/core/l10n/translation";
-import { useChildRef, useOwnedDialogs, useService } from "@web/core/utils/hooks";
-import { sprintf } from "@web/core/utils/strings";
-import { isMobileOS } from "@web/core/browser/feature_detection";
import * as BarcodeScanner from "@web/webclient/barcode/barcode_scanner";
-const { useRef } = owl;
-const {xml, Component} = owl;
+const { Component } = owl;
import { standardFieldProps } from "@web/views/fields/standard_field_props";
import {registry} from "@web/core/registry";
import {useInputField} from "@web/views/fields/input_field_hook";
export class CodeField extends Component {
setup() {
- console.log('CodeField created')
- console.log('this',this)
- console.log('this.props',this.props)
- console.log('this.props.record',this.props.value)
+ // console.log('CodeField created')
+ // console.log('this',this)
+ // console.log('this.props',this.props)
+ // console.log('this.props.record',this.props.value)
useInputField({
getValue: () => this.props.value,
refName: "scan_code",
});
- console.log('我是setup1')
+ // console.log('我是setup1')
super.setup();
this.orm = this.env.services.orm;
this.record = this.props.record;
@@ -45,12 +39,12 @@ export class CodeField extends Component {
async search(barcode) {
// alert('我是search')
const domain = [["code", "=", barcode]];
- console.log(domain)
+ // console.log(domain)
const fields = ["id", "code", "name", "state"];
- console.log(fields)
+ // console.log(fields)
const results = await this.orm.call("sf.tray", "search_read", [domain, fields]);
const values = await this.orm.call("sf.tray", "search_read", [domain]);
- console.log(results)
+ // console.log(results)
return results.map((result) => {
return {
id: result.id,
@@ -63,16 +57,16 @@ export class CodeField extends Component {
}
async onBarcodeScanned(barcode) {
const results = await this.search(barcode);
- console.log(results)
+ // console.log(results)
const records = results.filter((r) => !!r.id);
- console.log(records)
+ // console.log(records)
if (records.length === 1) {
if (records[0].state === '空闲') {
- console.log('currentModel',this)
- console.log('this.record.data',this.record.data)
- console.log('this.record.data.id', this.record.data.id)
+ // console.log('currentModel',this)
+ // console.log('this.record.data',this.record.data)
+ // console.log('this.record.data.id', this.record.data.id)
const workorder = await this.orm.call('mrp.workorder', 'read', [this.record.data.id]);
- console.log('workorder', workorder[0])
+ // console.log('workorder', workorder[0])
const updatedRecord = await this.orm.call("sf.tray", "write", [
[records[0].id],
{
@@ -81,31 +75,32 @@ export class CodeField extends Component {
production_id: workorder[0].product_id[0],
// workorder_id: workorder.id,
}]);
- console.log(workorder[0].routing_type);
- console.log(workorder[0].production_id);
+ // console.log(workorder[0].routing_type);
+ // console.log(workorder[0].production_id);
// const productionIDS = await this.orm.call('mrp.production', 'search', [[['id', '=', workorder[0].production_id[0]]]]);
const productionIDS = await this.orm.call('mrp.workorder', 'search', [[["production_id", "=", workorder[0].production_id[0]]]]);
- console.log('prooooooo', productionIDS);
- console.log('values', records[0].values[0]);
+ // console.log('prooooooo', productionIDS);
+ // console.log('values', records[0].values[0]);
productionIDS.forEach(async (data) => {
// 处理每一个数据
- console.log(data);
+ // console.log(data);
const updatetrayRecord = await this.orm.call("mrp.workorder", "write", [
[data],
{
tray_id: records[0].values[0].id,
// tray_id: false,
}]);
- console.log(updatetrayRecord)
+ // console.log(updatetrayRecord)
});
this.props.update(records[0].code);
$('.o_form_button_save').click();
} else {
if (records[0].state === '占用') {
- console.log('此托盘已占用,请检查')
+ // console.log('此托盘已占用,请检查')
alert('此托盘已占用,请检查')
} else {
- console.log('此托盘已损坏,请登记')
+ // console.log('此托盘已损坏,请登记')
+ alert('此托盘已损坏,请登记')
}
}
diff --git a/sf_machine_connect/static/src/js/barcode_handler_field.js b/sf_machine_connect/static/src/js/barcode_handler_field.js
index 020cc5d4..6d24d4c6 100644
--- a/sf_machine_connect/static/src/js/barcode_handler_field.js
+++ b/sf_machine_connect/static/src/js/barcode_handler_field.js
@@ -8,10 +8,7 @@ const { Component, xml } = owl;
export class BarcodeHandlerField extends Component {
setup() {
- console.log('99999999111');
this.actionService = useService("action")
- console.log(this.actionService)
-
const barcode = useService("barcode");
// this.rpc = useService("rpc");
// useBus(barcode.bus, "barcode_scanned", this.onBarcodeScanned.bind(this));
@@ -20,9 +17,6 @@ export class BarcodeHandlerField extends Component {
async _rpc(params) {
// const { data } = await this.env.services.rpc('/web/dataset/call_kw', params);
const response = await this.env.services.rpc('/web/dataset/call_kw', params);
- console.log('response', response);
- console.log('response.result', response.result);
-
// return response
const responseObject = JSON.parse(response)
return responseObject;
@@ -33,8 +27,6 @@ export class BarcodeHandlerField extends Component {
this.props.update(barcode);
// const actionService = useService("action");
// const productId = 12345
- console.log('111222222222211111');
-
// 根据条形码获取相关数据,例如产品ID
const response = await this._rpc({
model: 'mrp.workorder',
@@ -42,11 +34,10 @@ export class BarcodeHandlerField extends Component {
args: [barcode],
kwargs:{},
});
- // console.log(productId.result)
if (response.result) {
- const action = response.result;
- console.log(action)
- console.log('11111111111111111111111111111111111');
+ // const action = response.result;
+ // console.log(action)
+ // console.log('11111111111111111111111111111111111');
// 通过产品ID执行操作并跳转到表单视图
// await this.actionService.doAction({
// // type: 'ir.actions.act_window',
diff --git a/sf_machine_connect/wizard/__init__.py b/sf_machine_connect/wizard/__init__.py
index 5faba653..e84f085d 100644
--- a/sf_machine_connect/wizard/__init__.py
+++ b/sf_machine_connect/wizard/__init__.py
@@ -1 +1 @@
-from . import action_up
\ No newline at end of file
+from . import action_up
diff --git a/sf_machine_connect/wizard/action_up.py b/sf_machine_connect/wizard/action_up.py
index ef4f860c..ffcb88ad 100644
--- a/sf_machine_connect/wizard/action_up.py
+++ b/sf_machine_connect/wizard/action_up.py
@@ -5,9 +5,8 @@ import os
import json
import hashlib
import time
-import requests
from datetime import datetime
-
+import requests
from odoo import fields, models, api, _
from odoo.exceptions import ValidationError
from odoo.exceptions import UserError
diff --git a/sf_manufacturing/models/mrp_workorder.py b/sf_manufacturing/models/mrp_workorder.py
index 1f304950..a2d81e68 100644
--- a/sf_manufacturing/models/mrp_workorder.py
+++ b/sf_manufacturing/models/mrp_workorder.py
@@ -165,7 +165,7 @@ class ResMrpWorkOrder(models.Model):
y0 = ((y3 - y4) * (y2 * x1 - y1 * x2) - (y1 - y2) * (y4 * x3 - y3 * x4)) / (
(y3 - y4) * (x1 - x2) - (y1 - y2) * (x3 - x4))
x1 = ((x7 - x8) * (x6 * y5 - x5 * y6) - (x5 - x6) * (x8 * y7 - x7 * y8)) / (
- (x7 - x8) * (y5 - y6) - (x5 - x6) * (y7 - y8));
+ (x7 - x8) * (y5 - y6) - (x5 - x6) * (y7 - y8))
y1 = ((y7 - y8) * (y6 * x5 - y5 * x6) - (y5 - y6) * (y8 * x7 - y7 * x8)) / (
(y7 - y8) * (x5 - x6) - (y5 - y6) * (x7 - x8))
x = (x0 + x1) / 2
@@ -189,19 +189,26 @@ class ResMrpWorkOrder(models.Model):
def json_workorder_str(self, k, production, route):
# 计算预计时长duration_expected
if route.routing_type == '切割':
- duration_expected = self.env['mrp.routing.workcenter'].sudo().search([('name', '=', '切割')]).time_cycle
+ duration_expected = self.env['mrp.routing.workcenter'].sudo().search(
+ [('name', '=', '切割')]).time_cycle
elif route.routing_type == '获取CNC加工程序':
- duration_expected = self.env['mrp.routing.workcenter'].sudo().search([('name', '=', '获取CNC加工程序')]).time_cycle
+ duration_expected = self.env['mrp.routing.workcenter'].sudo().search(
+ [('name', '=', '获取CNC加工程序')]).time_cycle
elif route.routing_type == '工件装夹':
- duration_expected = self.env['mrp.routing.workcenter'].sudo().search([('name', '=', '工件装夹')]).time_cycle
+ duration_expected = self.env['mrp.routing.workcenter'].sudo().search(
+ [('name', '=', '工件装夹')]).time_cycle
elif route.routing_type == '前置三元定位检测':
- duration_expected = self.env['mrp.routing.workcenter'].sudo().search([('name', '=', '前置三元定位检测')]).time_cycle
+ duration_expected = self.env['mrp.routing.workcenter'].sudo().search(
+ [('name', '=', '前置三元定位检测')]).time_cycle
elif route.routing_type == 'CNC加工':
- duration_expected = self.env['mrp.routing.workcenter'].sudo().search([('name', '=', 'CNC加工')]).time_cycle
+ duration_expected = self.env['mrp.routing.workcenter'].sudo().search(
+ [('name', '=', 'CNC加工')]).time_cycle
elif route.routing_type == '后置三元质量检测':
- duration_expected = self.env['mrp.routing.workcenter'].sudo().search([('name', '=', '后置三元质量检测')]).time_cycle
+ duration_expected = self.env['mrp.routing.workcenter'].sudo().search(
+ [('name', '=', '后置三元质量检测')]).time_cycle
elif route.routing_type == '解除装夹':
- duration_expected = self.env['mrp.routing.workcenter'].sudo().search([('name', '=', '解除装夹')]).time_cycle
+ duration_expected = self.env['mrp.routing.workcenter'].sudo().search(
+ [('name', '=', '解除装夹')]).time_cycle
else:
duration_expected = 60
workorders_values_str = [0, '', {
diff --git a/sf_manufacturing/models/stock.py b/sf_manufacturing/models/stock.py
index aaf261e8..8e5567eb 100644
--- a/sf_manufacturing/models/stock.py
+++ b/sf_manufacturing/models/stock.py
@@ -1,15 +1,15 @@
# -*- coding: utf-8 -*-
-from datetime import datetime
-import requests
-import logging
import base64
-from collections import defaultdict, namedtuple
+import logging
from re import findall as regex_findall
+from datetime import datetime
from re import split as regex_split
-from odoo.addons.stock.models.stock_rule import ProcurementException
-from odoo.addons.sf_base.commons.common import Common
+import requests
from odoo import SUPERUSER_ID, _, api, fields, models
from odoo.tools import float_compare
+from collections import defaultdict, namedtuple
+from odoo.addons.stock.models.stock_rule import ProcurementException
+from odoo.addons.sf_base.commons.common import Common
from odoo.exceptions import UserError
diff --git a/sf_manufacturing/static/src/js/kanban_change.js b/sf_manufacturing/static/src/js/kanban_change.js
index 2ef6cb4b..1f25caf4 100644
--- a/sf_manufacturing/static/src/js/kanban_change.js
+++ b/sf_manufacturing/static/src/js/kanban_change.js
@@ -16,12 +16,12 @@ class CustomKanbanController extends KanbanController {
console.log('99999999111');
this.workOrders = await this.getAllWorkOrders();
this.workOrdersNew = this.workOrders;
- console.log('lines222222222', this.workOrders);
-
- console.log(typeof this.workOrders);
- console.log(Array.isArray(this.workOrders));
-
- console.log(this.workOrders.every(order => typeof order === 'object' && order.id !== undefined));
+ // console.log('lines222222222', this.workOrders);
+ //
+ // console.log(typeof this.workOrders);
+ // console.log(Array.isArray(this.workOrders));
+ //
+ // console.log(this.workOrders.every(order => typeof order === 'object' && order.id !== undefined));
diff --git a/sf_manufacturing/views/mrp_production_addional_change.xml b/sf_manufacturing/views/mrp_production_addional_change.xml
index 345e5f38..3f16b734 100644
--- a/sf_manufacturing/views/mrp_production_addional_change.xml
+++ b/sf_manufacturing/views/mrp_production_addional_change.xml
@@ -133,6 +133,10 @@