Odoo仓库移动端批量拣货扫码的两种方式

近期一直在为客户提供系统维护工作,随手把一些内容分享出来,用同样问题的Odoo用户,就省了请人的成本了。哈哈。

如题,移动端扫码拣货,每一页上的产品汇集方式有两种方式:

1、按产品

相同的产品,不同的调拨单,显示在一个扫码页面上。

2、按库位

相同的库位,不同的产品,不同的调拨单,显示在一个扫码页面上。
在这里插入图片描述
Odoo默认是第一种方式,如果你需要第二种方式,把_sortProductLines这个方法改一下就行。

这两天没少在扫码拣货这里折腾:

自动下一页
显示额外信息
超扫

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Odoo中实现批量新增功能,需要注意以下逻辑: 1. 数据导入:需要提供数据导入的功能,允许用户上传 Excel 或 CSV 格式的数据文件,并提供数据校验和数据重复性检查。 2. 数据校验:需要对上传的数据进行校验,确保数据符合要求,避免因为数据错误导致新增失败或者出现脏数据的情况。 3. 批量处理:使用循环语句进行批量处理,避免单条数据新增的效率低下。 4. 数据回滚:如果在批量新增过程中出现异常或者新增失败,需要对已经新增的数据进行回滚,避免出现脏数据。 5. 日志记录:在批量新增的过程中,需要记录相应的日志信息,方便查找问题和进行数据分析。 以下是一个简单的示例代码,实现在Odoo批量新增产品的功能: ```python import base64 import io import pandas as pd from odoo import models, fields, api class Product(models.Model): _name = 'product.product' _description = 'Product' name = fields.Char(string='Name', required=True) description = fields.Text(string='Description') list_price = fields.Float(string='Price') class ProductBatchInsertWizard(models.TransientModel): _name = 'product.batch_insert_wizard' _description = 'Product Batch Insert Wizard' data_file = fields.Binary(string='Data File', required=True) @api.multi def batch_insert(self): # 读取数据文件 data = pd.read_excel(io.BytesIO(base64.b64decode(self.data_file)), sheet_name='Sheet1') # 数据校验 if not self.validate_data(data): return {'type': 'ir.actions.act_window_close'} # 批量新增 for index, row in data.iterrows(): product = self.env['product.product'].create({ 'name': row['Name'], 'description': row['Description'], 'list_price': row['Price'] }) return {'type': 'ir.actions.act_window_close'} @api.model def validate_data(self, data): # 数据去重 existing_data = self.env['product.product'].search([('name', 'in', data['Name'].tolist())]) if existing_data: existing_names = existing_data.mapped('name') data = data[~data['Name'].isin(existing_names)] self.env['product.batch_insert.log'].create({ 'message': f'以下产品名称已存在,已被过滤:{", ".join(existing_names)}' }) # 数据校验 if not data.empty: missing_fields = data.isna().any() if missing_fields.any(): missing_fields_str = ", ".join(missing_fields.index[missing_fields]) self.env['product.batch_insert.log'].create({ 'message': f'以下字段缺失,请补充:{missing_fields_str}' }) invalid_prices = data['Price'] <= 0 if invalid_prices.any(): invalid_prices_str = ", ".join(data.loc[invalid_prices, 'Name'].tolist()) self.env['product.batch_insert.log'].create({ 'message': f'以下产品价格不合法,请检查:{invalid_prices_str}' }) return not data.empty class ProductBatchInsertLog(models.Model): _name = 'product.batch_insert.log' _description = 'Product Batch Insert Log' message = fields.Char(string='Message', required=True) date = fields.Datetime(string='Date', default=fields.Datetime.now()) ``` 在以上示例代码中,我们定义了一个产品模型 Product 和一个批量新增向导 ProductBatchInsertWizard。批量新增向导中包含一个数据文件字段 data_file,用于上传批量新增的数据文件,和一个批量新增函数 batch_insert,用于执行批量新增操作。 在批量新增函数中,我们使用 pandas 库读取上传的 Excel 文件,并使用 iterrows() 方法遍历每一行数据,依次调用 create() 方法创建产品,并将产品数据存储到数据库中。同时,我们也定义了一个 validate_data 函数,用于对上传的数据进行校验。在校验函数中,我们先使用 search() 方法查询已存在的产品数据,去重并记录日志。然后,我们对数据进行校验,检查缺失字段和不合法价格,并记录日志。最后,我们返回一个布尔值,表示是否校验通过。 需要注意的是,以上代码仅为示例代码,实际应用中需要根据具体业务需求进行适当修改。同时,我们也定义了一个 ProductBatchInsertLog 模型,用于记录批量新增日志。这样可以方便我们查找问题和进行数据分析。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值