补充Odoo v8 与 Magento整合的情况
与 Odoo v7和Magento 整合基本过程一样,安装成功后,数据同步正常, 其中有些问题列在下面, 仅供参考.
1.
问题: Odoo v8 中sale中取消了res.shop, 如仍使用magento_integration目前的版本安装时会报错.
解决: 可将magento_integration的代码中res.shop直接替换为product.pricelist,从代码来看,与产品价格表有关,目前这个只是临时的处理方法,仅做测试.
安装设置过程与v7不同的,是在Import Orders 前在Website Store 中修改 Pricelist,然后执行导入.
2.
问题:执行Import Orders 报错,提示partner.py 225行错误,从分析来看,应该与客户地址相关
解决:将 for address in parent.child_ids + [parent]: 修改为for address in parent.child_ids: 这是临时解决,待改进,仅供测试.
3. 待改进: magento_integration目前的版本在到产品数据时,没有与Odoo v8中Product Variants 功能结合, 这方面需要改进.
顺便赞一下,@wangbuke 做的GreenOpenERP 绿色安装版,真心不错,这次测试过程很顺畅.
http://sourceforge.net/projects/greenopenerp/
xuxudodo
-
新人贴:有哪位大侠成功安装OpenLabs的magento integration模块呀(已解决) -
新人贴:有哪位大侠成功安装OpenLabs的magento integration模块呀(已解决)按照楼主描述尝试做了安装测试,最后按照按照下述文档完成Odoo7.0与Magento(1.9 并导入演示数据)的整合,测试通过. 小结如下,给后来的小伙伴,可以少走些弯路.
Welcome to Magento OpenERP Integration’s documentation!
https://openerp-magento-connector.readthedocs.org/en/develop/index.html
Contents:
Introduction
Installation
Configuration
Magento Instance
Magento Website
Website Store
Store View
Create Sale Orders in Magento
How it Works
Orders are imported as Sales
Cancellation Of Sale Order
Exporting Order Status from OpenERP to Magento
Handle Taxes When Importing Orders From Magento
Handle Taxes On Shipping
About Openlabs Technologies and Consulting Private Limited
Technical Support
按照上述链接步骤进行,需要安装pycountry,下面记录了些问题,可供参考.
1.Import Catalog 报错(bug): magento_instance_website 提示没有设置缺省UOM
解决:
update magento_instance_website set default_product_uom=1
默认计量单位 "件"
2.Import Orders 报错(bug):
1)Magento Store Madison Island should have a shop configured.
解决:
在Website Store >> 修改 Sales Shop
2)提示产品不存在, Magento 产品500多(1.9演示数据), 导入产品308,部分产品未导入
测试在Magento上新增订单(新建订单选项中的运费未选时不能保存.)
然后在Import Orders中设置导入时间限制
Last Export / Import Time
Last Order Import Time
04/01/2015 17:38:10
Last Order Export Time
04/01/2015 17:37:48
Last Shipment Export Time
04/01/2015 17:37:53
=>然后执行Import Orders 提示成功,一个订单导入.
Last Order Import Time 更新为:
04/06/2015 17:38:10 -
Ubuntu利用bzr源码安装OpenERP7.0[quote author=佛山-姜 link=topic=4649.msg12916#msg12916 date=1357745703]
2、是没有创建openerp-server.conf ,每次都要到server/7.0目录然后
python openerp-server --addons-path=../../addons/7.0/,../../web/7.0/addons
很麻烦,有更好的方法吗??
[/quote]
参考: [检测到链接无效,已移除] br />* 创建OPENERP插件目录的硬链接:
$> cd server/openerp/addons
$> ln -s ../../../addons/* .
$> ln -s ../../../web/addons/* . -
Openerp 7.0 beta Allinone 安装的问题linux下的研究比windows下的顺利的许多,7.0安装基本没有问题,关键就是参照老肖的书来做数据演示了。哈哈
-
OpenERP 源码安装一招鲜我这边还ok吧, addons 是比较慢, 放着跑一晚上就好了. 之后bzr pull 就非常方便了.
-
OpenERP 源码安装一招鲜也可以进行分解动作
创建一个工作目录:
$> mkdir /opt/openerp/trunk/
$> cd /opt/openerp/trunk/
获取最新版本的源代码 :
$> bzr clone lp:openobject-server/trunk server
$> bzr clone lp:openobject-addons/trunk addons
$> bzr clone lp:openerp-web/trunk web
获得额外插件:
$> bzr clone lp:~openerp-commiter/openobject-addons/trunk-extra-addons extra-addons
创建OPENERP插件目录的硬链接:
$> cd server/openerp/addons
$> ln -s ../../../addons/* .
$> ln -s ../../../web/addons/* .
从服务器增量方式拉回更新的文件
$> cd ./trunk/server
$> bzr pull
$> cd ./trunk/addons
$> bzr pull
$> cd ./trunk/web
$> bzr pull
源码运行:
$> cd server/
$> ./openerp-server -
Openerp 7.0 beta Allinone 安装的问题也可以下载最新的 [检测到链接无效,已移除] br />win 7 x64 目前安装正常,可用.
-
Windows 下 OE 6.2dev trunk 安装的一个问题建议在Ubuntu上安装吧,这样体验会好些. v7还很糙啊,继续体验.
-
OpenERP基础篇-新手入门-帐套环境配置-OpenERPV6-适用多公司,POS[quote author=pingwe link=topic=4187.msg11384#msg11384 date=1340124602]
[quote author=xuxudodo link=topic=4187.msg11289#msg11289 date=1338968381]
[quote author=Jeff link=topic=4187.msg11284#msg11284 date=1338967758]
项目实施的范围是,POS为主,还有生产?
不知道OpenERP的POS完全不开发适用于哪类门店?
[/quote]
以POS为主,实现总部,多店集中管理。
POS的触摸屏中暂时没有客户可以选择,适合小超市,零售用。
不过可以与POS订单模块搭配着用,同时安装会员模块,设置不同的价格表,可以灵活设定会员价格吧。
没有实际的生产过程, 只是超市有些促销方案,会打包多个产品一起销售,所以用了其中一个功能.
[/quote]
这pos的会员模块如何安装?
[/quote]
POS本身没有会员模块, 可以参看文档中安装说明. -
OpenERP的MRP运算的核心对象--Procurement Order值得一看,看完后继续实践.
发现一个笔误:
[quote]
需求的来源和转化
==========
.....
再来看看需求类型的问题。其实对于类型的划分按照不同的标准划分就有不同的答案。我这里所想要涉及的Proc的类型划分是在产品定义和Proc定义上都出现的一个字段:Procurement Method. 这里有两个可选项:Make To Order(MTS) 和 Make To Stock(MTO)。
[/quote]
应该是:
Make To Order(MTO) 和 Make To Stock(MTS)。
学习,收集,PDF归档 -
实用脚本:OpenERP基础篇-新手入门-语言翻译-批量替换翻译-OpenERPV6看的累了,可以下载文档查看PDF
[attach=1] -
实用脚本:OpenERP基础篇-新手入门-语言翻译-批量替换翻译-OpenERPV6在OpenERP的实施过程中,会遇到想对某些翻译进行定制,但有时要全部手工改过来,挺费时间的. 为了省时省力,所以我们可以...
[color=red][b]申明:
使用有风险,操作需谨慎。
操作前先备份数据!!![/b][/color]
如 "登账" 的翻译都调整为 "记账",则可以:
--登账 => 记账
update ir_translation set value = replace(value,'登账','记账')
-- select replace(value,'登账','记账'),value,* from ir_translation
where 1=1
and value like '%登账%'
执行前,可以先select 确认下.
其它同理,如 账簿明细 => 会计凭证分录
update ir_translation set value = replace(value,'账簿明细','会计凭证分录')
-- select replace(value,'账簿明细','会计凭证分录'),value,* from ir_translation
where 1=1
and value like '%账簿明细%'
虽然简单,但是常用. -
实用脚本:OpenERP基础篇-新手入门-业务模拟-清除模拟数据反复测试-OpenERPV6[quote author=mrshelly link=topic=4190.msg11309#msg11309 date=1338991829]
不错.... 能给贴子加上标签(Tag) 就更棒了哇. ....
[/quote]
已添加 -
用最笨的办法保持领先加一个,不知是否合适, 熟悉数据库,了解数据之间关系,这样也能"看透"她.
-
贸易术语;D 收下了
-
新手问题,关于OE6.1rc中POS模块订单确认后对应产品库存没有变化的问题[已解决][quote author=mrshelly link=topic=2743.msg11297#msg11297 date=1338973067]
嗯. 还是不推荐在数据库上面玩这些.... 理论上, 应该可以二次开发, 修改 pos.order 的 create write 方法来实现...
[/quote]
确实是这样, 主要当时为了解决这个问题,而又不想去改动代码, 感觉通过数据触发器实现就能解决.
所以官方不费吹灰之力,版本升级后就解决了.
现在是用不到了,这里只做个记录. -
实用工具-OpenERP基础篇-新手入门-数据导入-产品图片看累了,可以下载文档,有图有真相.
[attach=1]
附上程序
[attach=2] -
实用工具-OpenERP基础篇-新手入门-数据导入-产品图片OpenERP基础篇-新手入门-数据导入-产品图片
使用场景:
OpenERP导入产品时,目前只能导入产品的基础信息,但有些时候,我们希望也能批量导入产品图片数据.
申明:
使用有风险,操作需谨慎。
操作前先备份数据!!!
by xuxudodo
[openforge.cn]
2012-06
一. 准备工作
1. 环境准备
此工具需要LAMP环境, 即需要运行php, 且php.ini需要将以下这行;去掉. 这样就能连接postgres 数据库并操作了.
extension=php_pgsql.dll
2. 产品数据准备
假设你产品已经导入, 产品都有型号,接下来需要将产品图片名称都修改为对应的型号.
例子: 产品茶杯的型号为 10001,则图片名称需要修改为 10001.jpg.
把所有准备好的产品图片按照上述要求放到img目录中
二.导入数据
假设你已经完成上述准备工作,下载到了程序如下:
运行之后,会自动生成缩略图,并自动更新OpenERP相应帐套中产品的图片数据.
product_img_import.php 代码如下:
<?php
/
OpenERP产品图片数据
by xuxudodo [OpenForge.cn] 2012.06
****/
error_reporting(E_ERROR);
ini_set("arg_seperator.output", "&");
ini_set("magic_quotes_runtime", 0);
define('MAGIC_QUOTES_GPC', get_magic_quotes_gpc());
//帐套数据库连接
$conn_string = "host=192.168.1.1 port=5432 dbname=demo user=openerp password=postgres";
$conn = pg_connect($conn_string);
//系统路径
$filepath="E:/wwwroot/openerp/";
//图片目录名
$filepathimg="img";
//获取所有图片文件
$filelist = get_filetree($filepath.$filepathimg);
foreach($filelist as $value){
//echo "文件名 :\t\t".$value . "\n\r<br>";
if(strpos($value,"_thumb")>0) continue;
//图片类型
$filetype = strtolower(end(explode('.', $value)));
//echo $filetype . "\n\r<br>";
//图片文件名称(包含后缀)
$image_file = $value; //basename($value);
//图片文件名称(不包含后缀)
$image_file_name = basename($value,'.'.$filetype);
//echo $filename . "\n\r<br>";
//缩略图名称
$image_file_small = $filepath.$filepathimg.'/'.$image_file_name.'_thumb.'.$filetype;
list($image_width,$image_height,$image_type,$image_attr) = getimagesize($image_file);
$thumbwidth = min(120,$image_width);
$thumbheight = min(100,$image_width);
$maxw = 200;
$maxh = 200;
$result = makethumb($image_file, $image_file_small, $thumbwidth, $thumbheight, $maxw, $maxh);
if($image_width != $image_height)
{
$iw = $image_width;
$ih = $image_height;
if($maxw > 200 && $maxh > 200 && ($iw > $maxw || $ih > $maxh))
{
list($iw, $ih) = getimagesize($image_file);
}
$src_x = $src_y = 0;
$src_w = $src_h = min($iw, $ih);
if($iw > $ih)
{
$src_x = round(($iw - $ih) / 2);
}
else
{
$src_y = round(($ih - $iw) / 2);
}
$result = makethumb($image_file, $image_file_small, $thumbwidth, $thumbheight, 0, 0, $src_x, $src_y, $src_w, $src_h);
}
$thumbwidth2 = min(420,$image_width);
$thumbheight2 = min(300,$image_width);
$maxw2 = 500;
$maxh2 = 500;
//对原图继续进行减肥
if($image_width> $maxw2 || $image_height > $maxw2)
{
$result = makethumb($image_file, $image_file, $thumbwidth2, $thumbheight2, $maxw2, $maxh2);
}
if (!$result && !is_file($image_file_small))
{
@copy($image_file,$image_file_small);
}
$base64_image_file = base64_encode(file_get_contents($image_file));
//echo '原图转换:<br>'.$base64_image_file.'<br><br>';
$base64_image_file_small = base64_encode(file_get_contents($image_file_small));
//echo '缩略图转换:<br>'.$base64_image_file_small.'<br><br>';
//echo '数据库更新:<br>';
echo '-- 图片:'.basename($value).'<br>';
echo "update product_product set product_image='".$base64_image_file."' <br> where default_code='".$image_file_name."';<br>";
echo "update product_product set product_image_small='".$base64_image_file_small."' <br> where default_code='".$image_file_name."';<br><br>";
//数据导入
$data = array('product_image'=>$base64_image_file, 'product_image_small'=>$base64_image_file_small);
$condition = array('default_code'=>$image_file_name);
$res = pg_update($conn, 'product_product', $data, $condition);
if ($res) {
echo '-- 图片:'.basename($image_file)." 导入成功 $res\n<br><br>";
}
else {
echo '-- 图片:'.basename($image_file)." 警告:导入失败!\n<br><br>";
}
}
echo '-- 图片数据导入完成!\n<br><br>";
function get_filetree($path){
$tree = array();
foreach(glob($path . '/') as $single){
if(is_dir($single)){
$tree = array_merge($tree,get_filetree($single));
} else {
$tree[] = $single;
}
}
return $tree;
}
function makethumb($srcfile,$dstfile,$thumbwidth,$thumbheight,$maxthumbwidth=0,$maxthumbheight=0,$src_x=0,$src_y=0,$src_w=0,$src_h=0) {
if (!is_file($srcfile)) {
return '';
}
$tow = (int) $thumbwidth;
$toh = (int) $thumbheight;
if($tow < 30) {
$tow = 30;
}
if($toh < 30) {
$toh = 30;
}
$make_max = 0;
$maxtow = (int) $maxthumbwidth;
$maxtoh = (int) $maxthumbheight;
if($maxtow >= 300 && $maxtoh >= 300)
{
$make_max = 1;
}
$im = '';
if(false != ($data = getimagesize($srcfile))) {
if($data[2] == 1) {
$make_max = 0;
if(function_exists("imagecreatefromgif")) {
$im = imagecreatefromgif($srcfile);
}
} elseif($data[2] == 2) {
if(function_exists("imagecreatefromjpeg")) {
$im = imagecreatefromjpeg($srcfile);
}
} elseif($data[2] == 3) {
if(function_exists("imagecreatefrompng")) {
$im = imagecreatefrompng($srcfile);
}
}
}
if(!$im) return '';
$srcw = ($src_w ? $src_w : imagesx($im));
$srch = ($src_h ? $src_h : imagesy($im));
$towh = $tow/$toh;
$srcwh = $srcw/$srch;
if($towh <= $srcwh)
{
$ftow = $tow;
$ftoh = round($ftow($srch/$srcw),2);
}
else
{
$ftoh = $toh;
$ftow = round($ftoh*($srcw/$srch),2);
}
if($make_max)
{
$maxtowh = $maxtow/$maxtoh;
if($maxtowh <= $srcwh)
{
$fmaxtow = $maxtow;
$fmaxtoh = round($fmaxtow*($srch/$srcw),2);
}
else
{
$fmaxtoh = $maxtoh;
$fmaxtow = round($fmaxtoh*($srcw/$srch),2);
}
if($srcw <= $maxtow && $srch <= $maxtoh)
{
$make_max = 0; }
}
$maxni = '';
if($srcw >= $tow || $srch >= $toh) {
if(function_exists("imagecreatetruecolor") && function_exists("imagecopyresampled") && ($ni = imagecreatetruecolor($ftow, $ftoh))) {
imagecopyresampled($ni, $im, 0, 0, $src_x, $src_y, $ftow, $ftoh, $srcw, $srch);
if($make_max && ($maxni = imagecreatetruecolor($fmaxtow, $fmaxtoh))) {
imagecopyresampled($maxni, $im, 0, 0, $src_x, $src_y, $fmaxtow, $fmaxtoh, $srcw, $srch);
}
} elseif(function_exists("imagecreate") && function_exists("imagecopyresized") && ($ni = imagecreate($ftow, $ftoh))) {
imagecopyresized($ni, $im, 0, 0, $src_x, $src_y, $ftow, $ftoh, $srcw, $srch);
if($make_max && ($maxni = imagecreate($fmaxtow, $fmaxtoh))) {
imagecopyresized($maxni, $im, 0, 0, $src_x, $src_y, $fmaxtow, $fmaxtoh, $srcw, $srch);
}
} else {
return '';
}
if(function_exists('imagejpeg')) {
imagejpeg($ni, $dstfile, 100);
if($make_max && $maxni) {
imagejpeg($maxni, $srcfile, 100);
}
} elseif(function_exists('imagepng')) {
imagepng($ni, $dstfile);
if($make_max && $maxni) {
imagepng($maxni, $srcfile);
}
}
imagedestroy($ni);
if($make_max && $maxni) {
imagedestroy($maxni);
}
}
imagedestroy($im);
if(!is_file($dstfile)) {
return '';
} else {
return $dstfile;
}
}
?>
代码一般,请各位高人不必纠结. 如果感觉似乎哪里看过,不用犹豫,一些函数确实不是我原创的. -
实用脚本:OpenERP基础篇-新手入门-业务模拟-清除模拟数据反复测试-OpenERPV6主要是自己经常用,希望对大家有所帮助.
-
实用脚本:OpenERP基础篇-新手入门-业务模拟-清除模拟数据反复测试-OpenERPV6OpenERP基础篇-新手入门-业务模拟-数据清除
使用场景:
建好了一个帐套,做了很多业务模拟,现在想重新开始,又不想再重新建帐套.
其中,只想清除销售,采购,库存,会计模块的一些业务数据,产品、客户、供应商和基础配置保留,如果是这样,就可以使用下面的SQL脚本。
[b]
[size=14pt][color=red]申明:
使用有风险,操作需谨慎。
操作前先备份数据!!![/color][/size][/b]
--会计部分
TRUNCATE table account_invoice CASCADE;
TRUNCATE table account_invoice_line CASCADE;
TRUNCATE table account_invoice_line_tax CASCADE;
TRUNCATE table account_invoice_tax CASCADE;
TRUNCATE table account_move CASCADE;
TRUNCATE table account_move_line CASCADE;
TRUNCATE table account_move_reconcile CASCADE;
TRUNCATE table account_balance_report_journal_rel CASCADE;
TRUNCATE table account_bank_accounts_wizard CASCADE;
TRUNCATE table account_bank_statement CASCADE;
TRUNCATE table account_bank_statement_line CASCADE;
TRUNCATE table account_bank_statement_line_move_rel CASCADE;
TRUNCATE table account_cashbox_line CASCADE;
TRUNCATE table account_invoice CASCADE;
TRUNCATE table account_invoice_line CASCADE;
TRUNCATE table account_invoice_refund CASCADE;
TRUNCATE table account_voucher CASCADE;
TRUNCATE table account_voucher_line CASCADE;
TRUNCATE table payment_order CASCADE;
--POS模块
TRUNCATE table pos_order CASCADE;
TRUNCATE table pos_order_line CASCADE;
TRUNCATE table pos_make_payment CASCADE;
TRUNCATE table pos_close_statement CASCADE;
TRUNCATE table pos_box_entries CASCADE;
TRUNCATE table pos_receipt CASCADE;
TRUNCATE table pos_confirm CASCADE;
TRUNCATE table pos_details CASCADE;
TRUNCATE table pos_open_statement CASCADE;
--采购模块
TRUNCATE table purchase_order CASCADE;
TRUNCATE table purchase_order_line CASCADE;
TRUNCATE table purchase_order_taxe CASCADE;
--销售模块
TRUNCATE table sale_order CASCADE;
TRUNCATE table sale_order_invoice_rel CASCADE;
TRUNCATE table sale_order_line CASCADE;
TRUNCATE table sale_order_line_invoice_rel CASCADE;
TRUNCATE table sale_order_line_property_rel CASCADE;
TRUNCATE table sale_order_tax CASCADE;
--库存模块
TRUNCATE table stock_inventory CASCADE;
TRUNCATE table stock_inventory_line CASCADE;
TRUNCATE table stock_inventory_move_rel CASCADE;
TRUNCATE table stock_move CASCADE;
TRUNCATE table stock_move_history_ids CASCADE;
TRUNCATE table stock_picking CASCADE;
TRUNCATE table procurement_order CASCADE;
TRUNCATE table procurement_order_compute CASCADE;
TRUNCATE table procurement_order_compute_all CASCADE;
TRUNCATE table procurement_orderpoint_compute CASCADE;
TRUNCATE table procurement_property_rel CASCADE;
TRUNCATE table res_log CASCADE;
TRUNCATE table mail_message CASCADE;
--CRM模块
TRUNCATE table crm_lead CASCADE;
TRUNCATE table crm_meeting CASCADE;
TRUNCATE table crm_make_sale CASCADE;
TRUNCATE table crm_phonecall CASCADE;
TRUNCATE table crm_segmentation_line CASCADE;
TRUNCATE table edi_document CASCADE;
TRUNCATE table detail_ledger CASCADE;
--HR模块
TRUNCATE table hr_sign_in_out CASCADE;
TRUNCATE table hr_sign_in_out_ask CASCADE;
TRUNCATE table hr_sign_in_project CASCADE;
TRUNCATE table hr_sign_out_project CASCADE;
看累了,可以下载文档PDF
[attach=1]