新增获取库区信息定时器

修改库存变更接口
This commit is contained in:
qihao.gong@jikimo.com
2024-02-23 15:31:25 +08:00
parent 99ba2d0a4d
commit c726bb614c
8 changed files with 57 additions and 14 deletions

View File

@@ -12,6 +12,7 @@
'website': 'https://www.sf.jikimo.com',
'depends': ['stock', 'web', 'sf_base'],
'data': [
'data/ir_cron_data.xml',
'security/sf_stock_security.xml',
'security/ir.model.access.csv',
'views/view.xml',

View File

@@ -0,0 +1,14 @@
<?xml version="1.0" encoding='UTF-8'?>
<odoo>
<record model="ir.cron" id="ir_cron_sf_shelf_location_datasync">
<field name="name">定时同步库区信息</field>
<field name="model_id" ref="model_sf_shelf_location_datasync"/>
<field name="state">code</field>
<field name="code">model._cron_shelf_location_datasync()</field>
<field name="interval_number">4</field>
<field name="interval_type">hours</field>
<field name="numbercall">-1</field>
<field name="doall" eval="False"/>
</record>
</odoo>

View File

@@ -1 +1,2 @@
from . import model
from . import sync_common

View File

@@ -398,12 +398,13 @@ class ShelfLocation(models.Model):
crea_url = 'https://x24467i973.zicp.fun/AutoDeviceApi/GetLocationInfos'
# objs_all = self.env['maintenance.equipment'].search([('id', '=', self.id)])
# machine_tool_list = []
params = {'DeviceId': 'Cabinet-AL'}
r = requests.get(crea_url, params=params, headers=headers)
r = requests.get(crea_url, headers=headers)
ret = r.json()
print(ret)
if ret['Succeed'] == True:
return '获取库位信息成功'
return ret['Datas']
else:
raise UserError("该库位无产品")

View File

@@ -0,0 +1,30 @@
# -*- coding: utf-8 -*-
import logging
import json
import base64
import requests
from odoo import models
from odoo.exceptions import ValidationError
_logger = logging.getLogger(__name__)
class MrsShelfLocationDataSync(models.Model):
_name = 'sf.shelf.location.datasync'
_description = '同步库存信息'
def _cron_shelf_location_datasync(self):
try:
shelfinfo = self.env['sf.shelf.location'].get_sf_shelf_location_info()
for item in shelfinfo:
location_id = self.env['sf.shelf.location'].search([('barcode', '=', item['Postion'])], limit=1)
if location_id:
workorder_id = self.env['mrp.workorder'].search([('rfid_code', '=', item['RfidCode'])], limit=1)
if workorder_id:
location_id.production_id = workorder_id.production_id.id
location_id.location_status = '占用'
logging.info('货架已获取信息:%s' % item)
except Exception as e:
logging.info("捕获错误信息:%s" % e)
raise ValidationError("数据错误导致同步失败,请联系管理员")

View File

@@ -119,8 +119,6 @@
<form string="Shelf Location">
<header>
<button type="object" class="oe_highlight" name='get_sf_shelf_location_info' string="获取货位信息"/>
<field name="location_status" invisible="1"/>
<button string="禁用货位" name="action_location_status_disable" type="object" class="oe_highlight"
attrs="{'invisible': [('location_status', '!=', '空闲')]}"/>