【odoo14】经典好书学习没有烂尾,主体已完成,可移步了解。https://www.cnblogs.com/xushuotec/p/14428210.html

背景

近期,有朋友打算上odoo系统。目前已有一套ERP系统了,由于是标准化产品,所以用起来各种不爽,终于在使用了两年后打算迁移。PS,我接的时候已经有一家odoo二开公司在做了,名气还是比较大的,我原本以为开发的东西还是蛮好的。但从朋友的反应及二开出来的代码质量看来,确实名不副实。至少给他们做二开的技术人员有点砸招牌的感觉。

所以,请各位打算上odoo的朋友要仔细甄别哦。odoo虽好,但是二开市场差异性还是蛮大的,别只看公司名气,要看来实际负责的技术哦

数据迁移

数据迁移是所有打算从老系统迁移至odoo的朋友所面对的一大难题,这里的道道就比较多了。

方案

  1. 新建模块

    这种事最简单的了。就是将现有数据直接导入到新的模块,数据与odoo其实中的业务流程模块基本上是数据分割的,历史数据仅做查询时候。

    优点:迁移简单,开发量根据数据原型设计即可,开发周期相对较短,保持原始数据的真实性。

    缺点:与odoo系统业务流程分割,无法实现在相关模块的集成,比如采购、销售等数据要到单独的模块进行查询。
  2. 深度集成

    这种就复杂多了,对于数据迁移人员的要求会很高,将历史数据集成到odoo的业务中去。简单讲就是,将历史数据在odoo中走一遍。

    优点:对于用户而言,可专注于系统本身的业务逻辑,数据更加完整。

    缺点:工作量大,需要技术人员对于数据细致的拆分,对于odoo现有模块有深入理解,否则会出现数据丢失或者不准确的情况。

基于以上,我个人建议做方案二,虽然工作量大很多,但是对于用户而言更加友好。

实施

由于朋友是做跨境电商服务,涉及几个odoo中核心的模块包括:采购、库存、销售、会计、汇率、联系人等。历史数据包括:采购订单、内部调拨、销售、商品报损、商品报溢、退款等。

以上在做数据迁移的时候,需要重点注意的是:时间和金额。这两点是重中之重,不然对于最后的期末估值会有很大影响。

  1. 新建数据迁移模块

    为什么此处又写新建模块了呢?因为这是实现数据录入odoo系统最快的方式了(别问我怎么知道的,说多都是泪)。这里要注意,是录入。并未与odoo系统的业务逻辑做任何的继承。

  2. 数据转odoo模型数据

    对于原始数据而言,odoo是不知道它的真实意义的。所以我们要做的是将这些数据分解到各个模块中去。比如,采购数据其中就涉及到采购单(purchase.order、purchase.order.line)、采购员(res.users、res.partner)、供应商(res.partner)、商品(product.template、product.prodcut)等,这些内容分属于不同的模块。

    坑位: 1) 产品的唯一标识(SKU)不唯一, 2) 采购单后续是库存,这对于原始数据是隐藏的信息,需我们自己分析并添加数据源

  3. 基于odoo原生业务的流程数据处理

    在上面我们将原始数据导入odoo模型后,其实我的做法是所有数据都处于draft阶段,这个阶段的数据对于系统而言类似于草稿箱数据。本阶段,我们要做的就是将草稿箱数据转正。

    此处又有两种转正的方式:

    1)最业务简单开发复杂的是,按照原始数据的时间顺序,开发处理逻辑。比如,处理方式的是 时间1的采购、时间2的到货、时间3的销售、时间4的发货。其中穿插着新的采购销售的流程。

    2)也是我采用的方式,下面重点介绍。

    对于库存而言,只有两种方式,入和出;内部调拨想怎么玩怎么玩。因此,我首先梳理了,包括采购、退货、报溢。,包括销售、报损。

    我首先将所有的采购、退货、报溢进行数据处理,实现库存数量的最大化;然后将内部调拨处理,将商品分配到各自的仓库;最后处理的问题,实现库存的减操作。

    数据源完整的情况下,以上流程最后的数据是对的起来的。至于如何批量实现基于odoo流程的数据处理,就需要我们针对每个阶段做定制化的处理了。

坑一,必要的流程数据对不上

上面情况处理完后,总数最后虽然对上了,但是缺少部分流程数据。比如,商品A在仓库A发货,但是整个业务数据中并没有发往仓库A的内部调拨,因此商品A理论上发不出的货。这种情况,没好办法,找甲方吧。

坑二,时间修正

不管采用哪种方式进行数据迁移,在数据进odoo的那个瞬间,就已经决定了原始时间数据变了。比如采购商品的到货时间变成了我们在odoo中操作的时间、基于到货的库存价值(stock.valuation.layer)也是错。

因此,我进行时间的修正,包括采购时间、到货时间、销售时间等内容。以上通过odoo模块实现修正可以实现,但是效率不高,且create_datetime是修正不过来的,odoo底层做了限制。因此我在修正库存价值的时候发现时间一直都是错误的,是当前操作的确认收货时的时间。最后,解决方案,直接到postgresql中去操作数据库吧。这操作比较危险,但是是效率最高,准确性最高的方式了。此处,再次强调,对于odoo结构不了解的朋友,别直接去碰数据库,这将绕过很多odoo为了安全而做的限制哦。

现在回头看看,似乎也没那么复杂嘛。,哎。

【odoo】[经验分享]数据迁移注意事项的更多相关文章

  1. Oracle中exp,imp(导入导出)数据迁移注意事项

    这几天做开发库schema备份,出现些问题,记录一下.一,exp时,os语言环境和数据库不同时会自动发生转换.   如果操作系统的字符集小于数据库字符集,就可能出现乱码现象.imp时,同理,也是有可能 ...

  2. Elastic数据迁移方法及注意事项

    需求 ES集群Cluster_A里的数据(某个索引或某几个索引),需要迁移到另外一个ES集群Cluster_B中. 环境 Linux:Centos7 / Centos6.5/ Centos6.4Ela ...

  3. 【干货】Kaggle 数据挖掘比赛经验分享(mark 专业的数据建模过程)

    简介 Kaggle 于 2010 年创立,专注数据科学,机器学习竞赛的举办,是全球最大的数据科学社区和数据竞赛平台.笔者从 2013 年开始,陆续参加了多场 Kaggle上面举办的比赛,相继获得了 C ...

  4. 如何进行大规模在线数据迁移(来自Stripe公司的经验)

    首发于笔者的微信公众号:技术心流FollowFlows 原文地址:Stripe Engineering Blog   各工程团队常面临一项共同挑战:重新设计数据模型以支持清晰准确的抽象和更复杂的功能. ...

  5. SQL SERVER几种数据迁移/导出导入的实践

    SQLServer提供了多种数据导出导入的工具和方法,在此,分享我实践的经验(只涉及数据库与Excel.数据库与文本文件.数据库与数据库之间的导出导入). (一)数据库与Excel 方法1: 使用数据 ...

  6. 关于启用 HTTPS 的一些经验分享(一)

    转载: 关于启用 HTTPS 的一些经验分享(一) 随着国内网络环境的持续恶化,各种篡改和劫持层出不穷,越来越多的网站选择了全站 HTTPS.就在今天,免费提供证书服务的 Let's Encrypt ...

  7. ASP.NET 5探险(1):Azure中配置连接字符串、独立项目执行EF7数据迁移

    (此文章同时发表在本人微信公众号“dotNET每日精华文章”,欢迎右边二维码来关注.) 题记:我开始把ASP.NET 5用于生产系统开发已经有1个多月了,也填了一些坑积累了一些经验,从今天开始会陆陆续 ...

  8. 在Entity Framework 7中进行数据迁移

    (此文章同时发表在本人微信公众号“dotNET每日精华文章”,欢迎右边二维码来关注.) 题记:虽然EF7重新设计了Entity Framework,不过也还是能够支持数据迁移的. Entity Fra ...

  9. oracle 数据库数据迁移解决方案

    大部分系统由于平台和版本的原因,做的是逻辑迁移,少部分做的是物理迁移,接下来把心得与大家分享一下   去年年底做了不少系统的数据迁移,大部分系统由于平台和版本的原因,做的是逻辑迁移,少部分做的是物理迁 ...

随机推荐

  1. 2019HDU多校第一场 6582 Path 【最短路+最大流最小割】

    一.题目 Path 二.分析 首先肯定要求最短路,然后如何确定所有的最短路其实有多种方法. 1 根据最短路,那么最短路上的边肯定是可以满足$dist[from] + e.cost = dist[to] ...

  2. linuxc语言图形化编程包含gtk/gtk.h编译总是报错找不到该文件的解决方法

    在编译时输入gcc file.c `pkg-config --libs --cflags gtk+-2.0` 注意`不是单引号,和--前均有一个字符 这样问题就结局啦

  3. 网络对抗技术Exp2-后门原理与实践

    后门概念 后门就是不经过正常认证流程而访问系统的通道. 哪里有后门呢? 编译器留后门 操作系统留后门 最常见的当然还是应用程序中留后门 还有就是潜伏于操作系统中或伪装为特定应用的专用后门程序. 下面是 ...

  4. 创建ortools的Dockerfile

    技术背景 基于已有的Docker容器镜像,去创建一个本地的镜像,有两种方法:一种是在之前的博客中提到过的,使用docker commit的方案,也就是先进去基础系统镜像内部完成所需的修改,然后comm ...

  5. Python脚本打包成exe执行文件

    需求 一个教辅目录结构检查工具,目录结构是[书籍]-[章节]-[题目|答案]-[*.jpg],后台有个异步处理的服务,需要强依赖这个目录结构. 书籍解析是单独的pipeline,日志对用户不可见,这里 ...

  6. java面试-Java内存模型(JMM)

    p.p1 { margin: 0; font: 15px Helvetica } 一.并发编程两个关键问题 线程之间如何通信.同步.java并发采用的是共享内存模型 二.JMM内存模型的抽象结构 描述 ...

  7. odoo视图入门学习- tree视图的使用

    上一篇内容:如何快速在odoo中创建自己的菜单 前言 上面的内容我们已经学会了如何去创建odoo的菜单,下面我们要学习的是odoo的基础视图tree视图,我们的目标是实现型号管理的列表页面 创建mod ...

  8. 2018年block3学习计划

    还是要给自己制定一个block的计划,希望自己的技术能有更进一步的提升 1. 算法/数学 随着学习的进一步深入,愈发认识到了算法的重要性,这个block给自己定下的计划就是 1)把introducti ...

  9. SpringBoot+Gradle构建多模块项目

    1 概述 Gradle由于构建速度比Maven快,且比Maven灵活,因此很多后端的应用都使用了Gradle进行构建,但一个问题是,Gradle的多模块项目比较难构建,再加上Gradle的更新非常快, ...

  10. 解决SQLPLUS无法使用上下箭头

    1 问题描述 SQLPLUS中使用上下箭头无法获取历史命令,如下图所示: 按上下箭头会显示^[[A/^[[B. 2 解决方案 需要安装rlwrap,可以的话可以用包管理器安装,笔者环境CentOS,这 ...