• 版块
  • 标签
  • 热门
  • 用户
  • 群组
皮肤
  • Light
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • 默认(Flatly)
  • 不使用皮肤
折叠

Odoo 中文社区

[求助]如何用csv批量导入产品库存

已定时 已固定 已锁定 已移动 Odoo 新手求助
10 帖子 3 发布者 13375 浏览
    • 从旧到新
    • 从新到旧
    • 最多赞同
回复
  • 在新帖中回复
登录后回复
此主题已被删除。只有拥有主题管理权限的用户可以查看。
  • A 离线
    A 离线
    ajax79
    写于 最后由 编辑
    #1

    在产品物料列表看到有个“实际库存”项,便想入非非,看在csv导入产品时能否一同导入产品实际库存数。

    在csv里添加“实际库存”字段,导入提示unknow,添加“库存”仍然unknow,难道真的没有办法了吗?

    1 条回复 最后回复
    0
  • digitalsatoriD 离线
    digitalsatoriD 离线
    digitalsatori 管理员
    写于 最后由 编辑
    #2

    点击库存管理-库存盘点,使用所附的模板导入货品期初库存。注意时间的格式。

    【上海先安科技】(tony AT openerp.cn)

    1 条回复 最后回复
    0
  • A 离线
    A 离线
    ajax79
    写于 最后由 编辑
    #3

    tong 谢谢你的附件。还有个问题:csv里只有产品名称一项,如果系统里产品名称重复的话,我试过,默认导入的是同样名称产品中的第一种产品。能否解决?

    1 条回复 最后回复
    0
  • A 离线
    A 离线
    ajax79
    写于 最后由 编辑
    #4

    详细情况是这样的,导入盘点单的时候只有一项产品物料名称,但是我的系统里有很多相同名称的产品,导入时默认导入到第一个该名称的产品上去,我希望导入的时候不仅仅指用一个产品物料名称在加上产品编码和产品物料系列,这样导入后就tiny不会区分不出来了

    1 条回复 最后回复
    0
  • digitalsatoriD 离线
    digitalsatoriD 离线
    digitalsatori 管理员
    写于 最后由 编辑
    #5

    在不改源代码的前提下建议你为这些有相同的Code和Name的产品定义不同的条形码(EAN),在准备导入资料时产品名称部分填条形码(EAN)。事实上产品名称部分可以填产品的Code,Name或者EAN,三者之一,可以混用。

    实际操作中,每个产品的Code应该还是唯一比较合理。

    [[i] 本帖最后由 digitalsatori 于 2008-5-10 23:06 编辑 [/i]]

    【上海先安科技】(tony AT openerp.cn)

    1 条回复 最后回复
    0
  • digitalsatoriD 离线
    digitalsatoriD 离线
    digitalsatori 管理员
    写于 最后由 编辑
    #6

    把代码分析的过程说一下(有兴趣的话就可以按这个思路去修改代码来达到你的目的):
    数据的导入操作实际上最终是由服务器目录下/osv/orm.py中的import_data函数,在其下还有process_liness函数。仔细看的话下面这段代码是我们上述问题的关键:

    res2 = self.pool.get(relation).name_search(cr, uid, line[i], [], operator='=')
    

    它的意思是通过调用对象所定义的name_search函数并将结果存在res2变量中,对于我们这里的例子这个对象就是product.product. 所以我们打开product.py文件(你应该知道在哪里的吧)
    看到name_search是这样的:
    [code]def name_search(self, cr, user, name='', args=None, operator='ilike', context=None, limit=80):
    if not args:
    args=[]
    if not context:
    context={}
    ids = self.search(cr, user, [('default_code','=',name)]+ args, limit=limit, context=context)
    if not len(ids):
    ids = self.search(cr, user, [('ean13','=',name)]+ args, limit=limit, context=context)
    if not len(ids):
    ids = self.search(cr, user, [('default_code',operator,name)]+ args, limit=limit, context=context)
    ids += self.search(cr, user, [('name',operator,name)]+ args, limit=limit, context=context)
    result = self.name_get(cr, user, ids, context)
    return result[/code]
    这段代码的意思应该不难懂,由此得出了我上贴所诉的内容。

    【上海先安科技】(tony AT openerp.cn)

    1 条回复 最后回复
    0
  • wjfonhandW 离线
    wjfonhandW 离线
    wjfonhand
    写于 最后由 编辑
    #7

    不懂python,粗略看了一下,看来所有导入的数据都得有一个不重复字段了,否则就会出现问题。也就是说,虽然系统里未规定必须有主键字段(GUID是内部使用的),但是要想用导入功能,某个“导入”字段必须能唯一确定一条数据库记录。

    可以这样理解么?

    GoodERP -- Odoo China fork

    1 条回复 最后回复
    0
  • ? 离线
    ? 离线
    游客
    写于 最后由 编辑
    #8

    完全可以改写一下name_search函数,让他来匹配 code+Name+Variant。ajax79有没有兴趣做点尝试。

    1 条回复 最后回复
    0
  • A 离线
    A 离线
    ajax79
    写于 最后由 编辑
    #9

    我更不懂python,按照我的胡乱理解,现在的tiny是通过'default_code''ean13'与'name'来确认产品?

    至于如何改为code+Name+Variant就完全没有想法,不会是简单的把'ean13'改为'Variant'吧。

    还请admin好人做到底吧。

    1 条回复 最后回复
    0

  • 登录

  • 没有帐号? 注册

  • 登录或注册以进行搜索。
  • 第一个帖子
    最后一个帖子
0
  • 版块
  • 标签
  • 热门
  • 用户
  • 群组
  • 登录

  • 没有帐号? 注册

  • 登录或注册以进行搜索。