odoo二次开发和实施服务,深圳创新联合科技有限公司(http://www.innovunion.com),有需求或项目欢迎来聊。
chengwenge
-
odoo二次开发和实施服务,深圳创新联合科技有限公司 -
邀请合作二次开发管理系统@balanta 此人是骗子,大家不要上当
-
招odoo+iot开发人员合作我们是 深圳创新联合科技有限公司(www.innovunion.com), 做 odoo二次开发和实施,如果有需要请联系:18603036679(微信同号)。
-
邀请合作二次开发管理系统我们是 深圳创新联合科技有限公司(www.innovunion.com), 做 odoo二次开发和实施,如果有需要请联系:18603036679(微信同号)。
-
招聘odoo开发人员我们有odoo开发团队,如果有意向合作,深圳创新联合科技有限公司(www.innovunion.com), 请联系:18603036679(微信同号)。
-
Odoo 服务商招标我们有兴趣,是否有联系方式?
-
公司内部项目管理系统开发QQ:26868578,深圳公司
-
是否有和实现好的,符合中国会计政策的 资产负债表、损益表及现金流量表我是这样想,如果有现成的,我可以购买,如果没有,那就自己开发。
-
是否有和实现好的,符合中国会计政策的 资产负债表、损益表及现金流量表问题如题,希望是在6.1下可用,如果有实现的,请和我联系,QQ:26868578,注明:OpenERP
-
Web端增加 addons的方法分享继承report我开始就是这么想,但是比较复杂,就没有用这个办法,report有很多处理rml的方法和替换render
-
Web端增加 addons的方法分享原有报表的 xmlrpc 数据接口没有用,我现在直接用新的接口返回报表(mako文件)需要的数据,
其实现在只是用到了原来报表的名称定义,以便模块的 报表部分有链接,让后我把连接调跳转到我需要处理的 controllers上 -
Web端增加 addons的方法分享本人最近通过 web实现打印功能,先整理我的处理办法,供需要的人参考。
一.抓包分析 report调用的数据:
_terp_selection:[68]
_terp_action:400
terp_id:68
terp_model:sale.order
datas:{'groups_id': [], 'multi': False, 'report_xsl': False, 'name': u'\u62a5\u4ef7\u5355/\u8ba2\u5355',
'string': u'\u62a5\u4ef7\u5355/\u8ba2\u5355', 'auto': False, 'report_name': u'sale.order',
'header': True, 'attachment_use': False, 'report_type': u'html',
'usage': False, 'model': u'sale.order', 'type': u'ir.actions.report.xml',
'id': 400, 'report_xml': False, 'attachment': False}
二.处理方法:
1.拦截actions,修改 openerp/controllers/actions,如果报表是 type='ir.actions.report.xml' and report_type='html' 调转到 xxx controllers
2.新增加 xxx web addons
1) openerp/controllers/增加具体的controller代码 ,增加文件 xxx.py,下控制代码,代码通过xmlrpc访问 server,返回数据在xxx.mako中使用
2) 在openerp/controllers/templates 增加 xxx 对应的 templates ,xxx.mako文件
3) openerp/controllers/root 增加 xxx = controllers.xxx.Xxx()
4) openerp/controllers 下的__init.py 增加 对 xxx 的 import
3.如果需要,在 server addons下增加 可以供 xmlrpc调用的代码,比如产生报表数据。
三.中文处理注意事项:
1).controller 的py 用utf-8编码
文件第一行
# -- encoding: utf-8 --
2).mako用utf-8编码
文件第一行
## -- coding: utf-8 --
四.方法作用
调用或跳转到自己controllers如果用其它通用的办法,比如菜单,那么这样的模式可以增加自己想增加的任何 web 端的功能,数据源还是访问 oe server. -
为有计划的人喝彩!学习了
-
为什么要坚持做不赚钱的云团队而不是去开一家赚钱的咨询公司?[quote author=wjfonhand link=topic=2548.msg8467#msg8467 date=1313162564]
中国有句古话叫作“秀才造反,三年不成。”。为什么会“三年不成”呢?有人归结为胆小,有人归结为背景不足。其实,关键是“秀才”往往思考太多、太复杂。比如一个秀才,他要造反了,那么他可能要考虑以下几个方便:
1、“造反”开始如何筹备?谁出钱谁出力?兵器打造多少?粮食准备多少?先攻打哪里?再攻打哪里?如果攻不下来怎么办?如果事先被官军发现了怎么办?如果家属受到牵连怎么办?
2、“造反”小胜后如何巩固根基?如何安排家属随军?如何安抚民心?如果被官军围剿该怎么办?打不过怎么办?被抓了该怎么办?如何分配谁负责哪一块?打到一半粮草不济怎么办?有人叛变怎么办?
3、“造反”成功后成果该如何分配?推举谁为首领?每个人担任何种职务?以后加入的人如何分配成果?推行怎样的政策?如何处置抓住的官员贵族?在什么地方定都?去哪里找美女?要找几个美女?美女有主了怎么办?美女不依怎么办?
秀才们满脑袋的“怎么办”,八字还没有一撇,就恨不得把后面所有的事情都计划周详,这样永远也迈不出行动的第一步。
季文子三思而后行。子闻之,曰:“再,斯可矣。”。孔子也认为季文子的“三思”过了点,小心谨慎是必要的,但考虑得太多就可能犹豫不决,然后就放弃了。做企业也是这样,总希望每走一步都能考虑周全,总希望每走一步都不会有任何风险,那么永远都不会进步。
[/quote]
赞同,我个人前面一年多可能就是这个状态,通过一年多的摸索已经在改变自己的创业思路。
创业是很难的,只要不断思考,坚持一定可以成功的。 -
一个个人网上零售店的OpenERP非专业实施记录我已经整合好了 zencart和OpenERP,供在线零售客户使用,希望有需要的和我联系。由于没有解决php接口和OpenERP的中文问题,zencart端重新开发的接口。
www.incsaas.com -
Report report error,helpmrshelly 二楼回答是正解。
我在 report/init.py 不正确,需要 import report目录下的所有 py文件。
靠,确实走了弯路,谢谢大家。 -
Report report error,help我做成功过好几个报表,不过都是单据。
我这次实行的是对报表的打印,报表的模型不是自动建立,通过视图实现的模式。
跟踪了下,还是不知道如何解决。我看了代码,系统会自动增加 report.object
web_service.py
def go(id, uid, ids, datas, context):
cr = pooler.get_db(db).cursor()
import traceback
import sys
try:
obj = netsvc.LocalService('report.'+object) -
Report report error,helphttp://www.openerp.com/forum/topic21552.html
I need to print a report,below is the code,but Run Error
error(debug_rpc):
[2010-12-27 22:51:03,375][?] Level 9:service:'report'
[2010-12-27 22:51:03,375][?] Level 9:method:'report'
[2010-12-27 22:51:03,375][?] Level 9:params:[01]: ('retail_demo',
[2010-12-27 22:51:03,375][?] Level 9:params:[02]: 1,
[2010-12-27 22:51:03,375][?] Level 9:params:[03]: 'admin',
[2010-12-27 22:51:03,375][?] Level 9:params:[04]: u'report.sale.order.product.2',
[2010-12-27 22:51:03,390][?] Level 9:params:[05]: [1, 2, 3, 4, 99999999],
[2010-12-27 22:51:03,390][?] Level 9:params:[06]: {'context': {},
[2010-12-27 22:51:03,390][?] Level 9:params:[07]: 'id': 1,
[2010-12-27 22:51:03,390][?] Level 9:params:[08]: 'model': 'report.sale.order.product.2',
[2010-12-27 22:51:03,390][?] Level 9:params:[09]: 'report_type': 'pdf'},
[2010-12-27 22:51:03,390][?] Level 9:params:[10]: {'client': 'web', 'lang': u'zh_CN', 'tz': False})
[2010-12-27 22:51:03,390][?] Level 9:result:2
[2010-12-27 22:51:03,390][?] Level 9:service:'report'
[2010-12-27 22:51:03,390][?] Level 9:method:'report_get'
[2010-12-27 22:51:03,390][?] Level 9:params:('retail_demo', 1, 'admin', 2)
[2010-12-27 22:51:03,390][?] Level 9:result:{'state': False}
[2010-12-27 22:51:03,562][retail_demo] ERROR:module:[01]:
[2010-12-27 22:51:03,562][retail_demo] ERROR:module:[02]: Environment Information :
[2010-12-27 22:51:03,562][retail_demo] ERROR:module:[03]: System : Windows-XP-5.1.2600-SP3
[2010-12-27 22:51:03,562][retail_demo] ERROR:module:[04]: OS Name : nt
[2010-12-27 22:51:03,562][retail_demo] ERROR:module:[05]: Operating System Release : XP
[2010-12-27 22:51:03,562][retail_demo] ERROR:module:[06]: Operating System Version : 5.1.2600
[2010-12-27 22:51:03,562][retail_demo] ERROR:module:[07]: Operating System Architecture : 32bit
[2010-12-27 22:51:03,562][retail_demo] ERROR:module:[08]: Operating System Locale : zh_CN.cp936
[2010-12-27 22:51:03,562][retail_demo] ERROR:module:[09]: Python Version : 2.5.2
[2010-12-27 22:51:03,562][retail_demo] ERROR:module:[10]: OpenERP-Server Version : 5.0.15
[2010-12-27 22:51:03,562][retail_demo] ERROR:module:[11]: Last revision No. & ID :
[2010-12-27 22:51:03,562][retail_demo] ERROR:module:[12]: This service does not exists: u'report.report.sale.order.product.2'
[2010-12-27 22:51:03,703][retail_demo] ERROR:web-services:[01]:
[2010-12-27 22:51:03,717][retail_demo] ERROR:web-services:[02]: Environment Information :
[2010-12-27 22:51:03,717][retail_demo] ERROR:web-services:[03]: System : Windows-XP-5.1.2600-SP3
[2010-12-27 22:51:03,717][retail_demo] ERROR:web-services:[04]: OS Name : nt
[2010-12-27 22:51:03,717][retail_demo] ERROR:web-services:[05]: Operating System Release : XP
[2010-12-27 22:51:03,717][retail_demo] ERROR:web-services:[06]: Operating System Version : 5.1.2600
[2010-12-27 22:51:03,717][retail_demo] ERROR:web-services:[07]: Operating System Architecture : 32bit
[2010-12-27 22:51:03,717][retail_demo] ERROR:web-services:[08]: Operating System Locale : zh_CN.cp936
[2010-12-27 22:51:03,717][retail_demo] ERROR:web-services:[09]: Python Version : 2.5.2
[2010-12-27 22:51:03,717][retail_demo] ERROR:web-services:[10]: OpenERP-Server Version : 5.0.15
[2010-12-27 22:51:03,717][retail_demo] ERROR:web-services:[11]: Last revision No. & ID :
[2010-12-27 22:51:03,717][retail_demo] ERROR:web-services:[12]: Exception: u'report.report.sale.order.product.2'
[2010-12-27 22:51:03,717][retail_demo] ERROR:web-services:[13]: Traceback (most recent call last):
[2010-12-27 22:51:03,717][retail_demo] ERROR:web-services:[14]: File "service\web_services.pyo", line 682, in go
[2010-12-27 22:51:03,717][retail_demo] ERROR:web-services:[15]: File "netsvc.pyo", line 70, in init
[2010-12-27 22:51:03,717][retail_demo] ERROR:web-services:[16]: KeyError: u'report.report.sale.order.product.2'
error code web_service.py
def go(id, uid, ids, datas, context):
cr = pooler.get_db(db).cursor()
import traceback
import sys
try:
obj = netsvc.LocalService('report.'+object)
code:
model,
import string
import sys
import netsvc
from osv import fields,osv
class report_report_sale_order_product_2(osv.osv):
_name = "report.report.sale.order.product.2"
_description = "Sales Orders by Products"
_auto = True
_columns = {
'memo': fields.char(u'说明', size=64,readonly=True),
'month': fields.date('月份', readonly=True),
'product_name':fields.char(u'产品名称',size=128, readonly=True),
'quantity': fields.float('销售数量', readonly=True),
'price_total': fields.float('销售金额', readonly=True),
'price_average': fields.float('平均售价', readonly=True)
}
report_report_sale_order_product_2()
class report_sale_order_product_2(osv.osv):
_name = "report.sale.order.product.2"
_description = "Sales Orders by Products"
_auto = False
_columns = {
'memo': fields.char(u'说明', size=64,readonly=True),
'month': fields.date('月份', readonly=True),
'product_name':fields.char(u'产品名称',size=128, readonly=True),
'quantity': fields.float('销售数量', readonly=True),
'price_total': fields.float('销售金额', readonly=True),
'price_average': fields.float('平均售价', readonly=True)
}
_order = 'id,month desc,product_name'
def init(self, cr):
cr.execute("""
create or replace view report_sale_order_product_2 as (
select
min(b.id) as id,
' ' as memo,
to_char(a.date_order, 'YYYY-MM-01') as month,
e.name as product_name,
sum(b.product_uom_qtyu.factor) as quantity,
sum(b.product_uom_qtyb.price_unit) as price_total,
(sum(b.product_uom_qtyb.price_unit)/sum(b.product_uom_qtyu.factor))::decimal(16,2) as price_average
from sale_order a right join sale_order_line b on (a.id=b.order_id)
left join product_uom u on (u.id=b.product_uom)
left join product_product d on (b.product_id=d.id)
left join product_template e on (d.product_tmpl_id=e.id)
group by to_char(a.date_order, 'YYYY-MM-01'),product_name ) """
)
def search(self, cr, user, args, offset=0, limit=None, order=None,
context=None, count=False):
if not context:
context = {}
filter=""
logger = netsvc.Logger()
logger.notifyChannel('app', netsvc.LOG_ERROR, args)
firstflag=True
for arg in args:
afield=arg[0]
if arg[0]=="product_name":
afield="e.name"
if arg[0]=="month":
afield="to_char(a.date_order, 'YYYY-MM-01')"
if firstflag:
filter+=afield+" "+arg[1]+" '"+str(arg[2])+"' "
firstflag=False
else:
filter+=" and "+afield+" "+arg[1]+" '"+str(arg[2])+"' "
if len(filter)>0:
wherestr=" where "
else:
wherestr=" "
try:
cr.execute("""drop view report_sale_order_product_2 """)
except TypeError :
pass
sql="create or replace view report_sale_order_product_2 as ( <br />select <br />min(b.id) as id, <br />' ' as memo, <br />to_char(a.date_order, 'YYYY-MM-01') as month,<br />e.name as product_name,<br />sum(b.product_uom_qtyu.factor) as quantity, <br />sum(b.product_uom_qtyb.price_unit) as price_total, <br />(sum(b.product_uom_qtyb.price_unit)/sum(b.product_uom_qtyu.factor))::decimal(16,2) as price_average <br />from sale_order a right join sale_order_line b on (a.id=b.order_id) <br />left join product_uom u on (u.id=b.product_uom) <br />left join product_product d on (b.product_id=d.id) <br />left join product_template e on (d.product_tmpl_id=e.id) "<br />+wherestr+filter +" group by to_char(a.date_order, 'YYYY-MM-01'),product_name <br />union all <br />select <br />99999999 as id, <br />'合计' as memo,<br />min(to_char(a.date_order, 'YYYY-MM-01')) as month,<br />' ' as product_name,<br />sum(b.product_uom_qtyu.factor) as quantity, <br />sum(b.product_uom_qtyb.price_unit) as price_total, <br />(sum(b.product_uom_qtyb.price_unit)/sum(b.product_uom_qtyu.factor))::decimal(16,2) as price_average <br />from sale_order a right join sale_order_line b on (a.id=b.order_id) <br />left join product_uom u on (u.id=b.product_uom) <br />left join product_product d on (b.product_id=d.id) <br />left join product_template e on (d.product_tmpl_id=e.id) "<br />+wherestr + filter + " ) "
logger.notifyChannel('app', netsvc.LOG_ERROR, sql)
print sql
cr.execute(sql)
cr.execute("""
select * from report_sale_order_product_2 order by id,month desc,product_name
""")
res = cr.fetchall()
return [x[0] for x in res]
report_sale_order_product_2()
report:
import pooler
import time
from report import report_sxw
class glass_saleorder_product_2(report_sxw.rml_parse):
def init(self, cr, uid, name, context):
super(glass_saleorder_product_2, self).init(cr, uid, name, context)
self.ret_list = []
self.localcontext.update({
'time': time,
'rpt_datas':self.create_sum_data
})
def create_sum_data(self):
cr=pooler.get_db(self.cr.dbname).cursor()
cr.execute(
"select * from report_sale_order_product_2 " )
sum_lines = cr.dictfetchall()
for line in sum_lines:
ret_dict={
'memo':line['memo'],
'month':line['month'],
'product_name':line['product_name'],
'quantity':line['quantity'],
'price_total':line['price_total'],
'price_average':line['price_average']
}
self.ret_list.append(ret_dict)
return self.ret_list
report_sxw.report_sxw('report.report.sale.order.product.2', 'report.sale.order.product.2',
'addons/report_sale_xlscan/report/rpt_sale_product_2.rml',
parser=glass_saleorder_product_2, header=False)
report xml:
<?xml version="1.0" encoding="utf-8"?>
<openerp>
<data>
<report auto="False" id="report_report_sale_order_product_2" model="report.sale.order.product.2" name="report.sale.order.product.2" rml="report_sale_xlscan/report/rpt_sale_product_2.rml" string="打印报表" header="False"/>
</data>
</openerp
Please Help me. -
发现 web客户端一个严重错误没有仔细研究,我原来的 web是 5.0.6版本,
现在升级到 web 5.0.14版本,就没有这个问题。