Merge branch 'develop' of https://e.coding.net/jikimo-hn/jikimo_sfs/jikimo_sf into feature/优化货架货位-新增打印条码

This commit is contained in:
jinling.yang
2024-04-17 17:05:36 +08:00
4 changed files with 34 additions and 8 deletions

View File

@@ -364,6 +364,7 @@ class ResMrpWorkOrder(models.Model):
y7 = self.Y7_axis y7 = self.Y7_axis
y8 = self.Y8_axis y8 = self.Y8_axis
z1 = self.Z9_axis z1 = self.Z9_axis
z2 = self.Z10_axis
x0 = ((x3 - x4) * (x2 * y1 - x1 * y2) - (x1 - x2) * (x4 * y3 - x3 * y4)) / ( x0 = ((x3 - x4) * (x2 * y1 - x1 * y2) - (x1 - x2) * (x4 * y3 - x3 * y4)) / (
(x3 - x4) * (y1 - y2) - (x1 - x2) * (y3 - y4)) (x3 - x4) * (y1 - y2) - (x1 - x2) * (y3 - y4))
y0 = ((y3 - y4) * (y2 * x1 - y1 * x2) - (y1 - y2) * (y4 * x3 - y3 * x4)) / ( y0 = ((y3 - y4) * (y2 * x1 - y1 * x2) - (y1 - y2) * (y4 * x3 - y3 * x4)) / (
@@ -374,7 +375,7 @@ class ResMrpWorkOrder(models.Model):
(y7 - y8) * (x5 - x6) - (y5 - y6) * (x7 - x8)) (y7 - y8) * (x5 - x6) - (y5 - y6) * (x7 - x8))
x = (x0 + x1) / 2 x = (x0 + x1) / 2
y = (y0 + y1) / 2 y = (y0 + y1) / 2
z = z1 / 2 z = (z1 + z2) / 2
jd = math.atan2((x5 - x6), (y5 - y6)) jd = math.atan2((x5 - x6), (y5 - y6))
jdz = jd * 180 / math.pi jdz = jd * 180 / math.pi
@@ -992,6 +993,7 @@ class SfWorkOrderBarcodes(models.Model):
work_state = {'done': '已完工'} work_state = {'done': '已完工'}
raise UserError('装夹%s,请勿重复扫码' % work_state.get(workorder.state)) raise UserError('装夹%s,请勿重复扫码' % work_state.get(workorder.state))
lots = self.env['stock.lot'].sudo().search([('rfid', '=', barcode)]) lots = self.env['stock.lot'].sudo().search([('rfid', '=', barcode)])
logging.info("托盘信息:%s" % lots)
if lots: if lots:
for lot in lots: for lot in lots:
if lot.product_id.categ_type == '夹具': if lot.product_id.categ_type == '夹具':
@@ -1010,6 +1012,7 @@ class SfWorkOrderBarcodes(models.Model):
if workorder_rfid: if workorder_rfid:
for item in workorder_rfid: for item in workorder_rfid:
item.write({'rfid_code': barcode}) item.write({'rfid_code': barcode})
logging.info("Rfid绑定成功")
else: else:
embryo_stock_lot = self.env['stock.lot'].search([('name', '=', barcode)]) embryo_stock_lot = self.env['stock.lot'].search([('name', '=', barcode)])
if embryo_stock_lot: if embryo_stock_lot:
@@ -1043,7 +1046,7 @@ class SfWorkOrderBarcodes(models.Model):
for item in workorder_rfid: for item in workorder_rfid:
if item.state == "progress": if item.state == "progress":
item.write({'rfid_code': barcode}) item.write({'rfid_code': barcode})
raise UserError('该托盘信息不存在!!!') # raise UserError('该托盘信息不存在!!!')
# stock_move_line = self.env['stock.move.line'].search([('lot_name', '=', barcode)]) # stock_move_line = self.env['stock.move.line'].search([('lot_name', '=', barcode)])
# if stock_move_line.product_id.categ_type == '夹具': # if stock_move_line.product_id.categ_type == '夹具':
# workorder.write({ # workorder.write({

View File

@@ -591,6 +591,7 @@ class MachineBrand(models.Model):
if not brand: if not brand:
self.create({ self.create({
"name": item['name'], "name": item['name'],
"active": item['active'],
"code": item['code'], "code": item['code'],
"remark": item['remark'], "remark": item['remark'],
"image_brand": '' if not item['image_brand'] else base64.b64decode(item['image_brand']), "image_brand": '' if not item['image_brand'] else base64.b64decode(item['image_brand']),
@@ -599,6 +600,7 @@ class MachineBrand(models.Model):
}) })
else: else:
brand.name = item['name'] brand.name = item['name']
brand.active = item['active']
brand.remark = item['remark'] brand.remark = item['remark']
brand.image_brand = '' if not item['image_brand'] else base64.b64decode(item['image_brand']) brand.image_brand = '' if not item['image_brand'] else base64.b64decode(item['image_brand'])
brand.tag_ids = self.env['sf.machine.brand.tags'].search( brand.tag_ids = self.env['sf.machine.brand.tags'].search(

View File

@@ -227,6 +227,7 @@ class SfShelf(models.Model):
_order = 'create_date desc' _order = 'create_date desc'
name = fields.Char('货架名称', required=True, size=20) name = fields.Char('货架名称', required=True, size=20)
active = fields.Boolean("有效", default=True)
barcode = fields.Char('编码', copy=False, size=15, required=True) barcode = fields.Char('编码', copy=False, size=15, required=True)
# 货位 # 货位
@@ -335,6 +336,7 @@ class ShelfLocation(models.Model):
_name = 'sf.shelf.location' _name = 'sf.shelf.location'
_inherit = ['printing.utils'] _inherit = ['printing.utils']
_description = '货位' _description = '货位'
_rec_name = 'barcode'
_order = 'id asc, create_date asc' _order = 'id asc, create_date asc'
# current_location_id = fields.Many2one('sf.shelf.location', string='当前位置') # current_location_id = fields.Many2one('sf.shelf.location', string='当前位置')
@@ -344,6 +346,7 @@ class ShelfLocation(models.Model):
destination_move_ids = fields.One2many('stock.move.line', 'destination_location_id', '目标位置调拨单') destination_move_ids = fields.One2many('stock.move.line', 'destination_location_id', '目标位置调拨单')
storage_time = fields.Datetime('入库时间', compute='_compute_location_status') storage_time = fields.Datetime('入库时间', compute='_compute_location_status')
production_id = fields.Many2one('mrp.production', string='制造订单') production_id = fields.Many2one('mrp.production', string='制造订单')
active = fields.Boolean("有效", default=True)
@api.depends('location_status') @api.depends('location_status')
def _compute_location_status(self): def _compute_location_status(self):
@@ -529,6 +532,12 @@ class Sf_stock_move_line(models.Model):
there_is_no_sn = fields.Boolean('是否有序列号', default=False) there_is_no_sn = fields.Boolean('是否有序列号', default=False)
rfid = fields.Char('Rfid', readonly=True) rfid = fields.Char('Rfid', readonly=True)
rfid_barcode = fields.Char('Rfid', compute='_compute_rfid')
@api.depends('lot_id')
def _compute_rfid(self):
for item in self:
item.rfid_barcode = item.lot_id.rfid
def action_revert_inventory(self): def action_revert_inventory(self):
# 检查用户是否有执行操作的权限 # 检查用户是否有执行操作的权限
@@ -949,15 +958,27 @@ class SfProcurementGroup(models.Model):
return res return res
# class SfPickingType(models.Model):
# _inherit = 'stock.picking.type'
#
# def _default_show_operations(self):
# return self.user_has_groups('stock.group_production_lot,'
# 'stock.group_stock_multi_locations,'
# 'stock.group_tracking_lot',
# 'sf_warehouse.group_sf_stock_user',
# 'sf_warehouse.group_sf_stock_manager')
class SfPickingType(models.Model): class SfPickingType(models.Model):
_inherit = 'stock.picking.type' _inherit = 'stock.picking.type'
def _default_show_operations(self): def _default_show_operations(self):
return self.user_has_groups('stock.group_production_lot,' return self.user_has_groups(
'stock.group_production_lot,'
'stock.group_stock_multi_locations,' 'stock.group_stock_multi_locations,'
'stock.group_tracking_lot', 'stock.group_tracking_lot,'
'sf_warehouse.group_sf_stock_user', 'sf_warehouse.group_sf_stock_user,'
'sf_warehouse.group_sf_stock_manager') 'sf_warehouse.group_sf_stock_manager'
)
class CustomStockMove(models.Model): class CustomStockMove(models.Model):

View File

@@ -20,7 +20,7 @@
<field name="destination_location_id" domain="[('location_id', '=', location_dest_id_value), '|', <field name="destination_location_id" domain="[('location_id', '=', location_dest_id_value), '|',
('location_status', '=', '空闲'), ('product_id', '=', current_product_id), ('product_sn_id', ('location_status', '=', '空闲'), ('product_id', '=', current_product_id), ('product_sn_id',
'=', there_is_no_sn)]"/> '=', there_is_no_sn)]"/>
<field name="rfid_barcode" string="Rfid"/>
<!-- <field name="location_dest_id_product_type"/> --> <!-- <field name="location_dest_id_product_type"/> -->
<!-- <field name="location_dest_id"/> --> <!-- <field name="location_dest_id"/> -->