在调拨的tree视图中添加收货人姓名电话和地址,怎么添加?
-
出库单上有Partner对象,也就是收货人。收货人上有对应的名称,电话,地址。如果要在picking对象上显示Partner对象上的字段,可以定义related字段,然后在tree视图中指定显示这些字段就可以了。
-
对Odoo的修改是不建议在Odoo已有代码中修改的。我们需要用创建自己的模块,并继承原有的Model,这样就可以做修改了。所以对你的第二个问题的回答是:“不是,你需要创建你自己的addon”
-
我在addons_path添加了custom-addons,然后在里边建了sale_my文件夹,这个文件夹包含的文件结构如下:
models ---- __init__.py ----sale_order_extension.py views ----sale_order_extension.xml __manifest__.py
各自代码如下,基本按照https://www.cnblogs.com/SamNicole1809/archive/2019/06/03/10968113.html里边说明填入代码,后边我在对应的位置看不到新加的字段,,**是哪里出问题了吗?:anguished_face: **(下边图片中红圈的都点击过了)
__init__.py代码如下:
# -*- coding: utf-8 -*- from . import sale_order_extension
sale_order_extension.py代码如下
# -*- coding:utf-8 -*- """销售模块扩展""" from odoo import fields, models # 销售模块扩展 class SaleOrderExtension(models.Model): """销售模块扩展""" _inherit = 'sale.order' # 销售员 x_salesman = fields.Many2one( 'res.users', string='销售员', related='partner_id.user_id' )
sale_order_extension.xml代码如下:
<?xml version="1.0" encoding="UTF-8" ?> <odoo> <record id="view_order_form_modify" model="ir.ui.view"> <field name="name">view.order.form.modify</field> <field name="model">sale.order</field> <field name="inherit_id" ref="sale.view_order_form"/> <field name="arch" type="xml"> <!-- 增加``销售员``字段 --> <xpath expr="//group/group/field[@name='partner_id']" position="after" > <field name="x_salesman" /> </xpath> </field> </record> <record id="view_order_tree_modify" model="ir.ui.view"> <field name="name">view.order.form.modify</field> <field name="model">sale.order</field> <field name="inherit_id" ref="sale.view_quotation_tree_with_onboarding"/> <field name="arch" type="xml"> <!-- 增加``创建人``字段 --> <xpath expr="//field[@name='date_order']" position="after" > <field name="create_uid" /> </xpath> </field> </record> </odoo>
__manifest__.py代码如下:
# -*- coding: utf-8 -*- { 'version': '0.1', # any module necessary for this one to work correctly 'depends': ['base', 'sale',], # always loaded 'data': [ # 'security/ir.model.access.csv', 'sale_order_extension.xml', ], }
-
你的
sale_my/__init__.py
有这样的内容吗?from . import models
你的
sale_order_extension.xml
是在views目录下,在manifest文件里没有指定views
路径 -
@风飞花 在 在调拨的tree视图中添加收货人姓名电话和地址,怎么添加? 中说:
文件结构如下:models models/__init__.py models/sale_order_extension.py views views/sale_order_extension.xml __init__.py __manifest__.py
各自代码如下,然后还是按照上贴途中那几个都点击一下,也是没有结果显示:anguished_face: :
models/ __init__.py代码如下:
# -*- coding: utf-8 -*- from . import sale_order_extension
models/ sale_order_extension.py代码如下:
# -*- coding:utf-8 -*- """销售模块扩展""" from odoo import fields, models # 销售模块扩展 class SaleOrderExtension(models.Model): """销售模块扩展""" _inherit = 'sale.order' # 销售员 x_salesman = fields.Many2one( 'res.users', string='销售员', related='partner_id.user_id' )
views/sale_order_extension.xml代码如下:
<?xml version="1.0" encoding="UTF-8" ?> <odoo> <record id="view_order_form_modify" model="ir.ui.view"> <field name="name">view.order.form.modify</field> <field name="model">sale.order</field> <field name="inherit_id" ref="sale.view_order_form"/> <field name="arch" type="xml"> <!-- 增加``销售员``字段 --> <xpath expr="//group/group/field[@name='partner_id']" position="after" > <field name="x_salesman" /> </xpath> </field> </record> <record id="view_order_tree_modify" model="ir.ui.view"> <field name="name">view.order.form.modify</field> <field name="model">sale.order</field> <field name="inherit_id" ref="sale.view_quotation_tree_with_onboarding"/> <field name="arch" type="xml"> <!-- 增加``创建人``字段 --> <xpath expr="//field[@name='date_order']" position="after" > <field name="create_uid" /> </xpath> </field> </record> </odoo>
__manifest__.py代码如下:
# -*- coding: utf-8 -*- { 'version': '0.1', 'depends': ['base', 'sale',], 'data': [ 'views/sale_order_extension.xml', ], }
__init__.py代码如下
from . import models
-
好象,似乎,你没有安装自己的模块啊。你的__manifest__.py里缺少类似
'name': 'My Sale Extension'
-
__manifest__.py代码修改如下,不过还是看不到效果,在应用里边也没有增加东西
# -*- coding: utf-8 -*- { 'name':'测试', 'description':'sale的form、tree、kanban模块显示内容的扩展', 'version': '1.0', 'license': 'LGPL-3', 'depends': ['base', 'sale',], 'data': [ 'views/sale_order_extension.xml', ], }
-
所以你的模块的路径是
custom-addons/sale_my
custom-addons
添加到了odoo的配置文件中的addons_path
中了?你是如何启动Odoo的,在启动参数中有没有用
-c xxxxx.conf
指向你上面的配置文件?如果代码和配置都对的情况下,点击
刷新本地模块列表
按钮后,去掉默认的应用(App)
过滤条件后就可以搜索sale_my
(你的Odoo模块名)找到模块后点击“安装”按钮,没有报错的话,你就应该成功了,检查你的修改结果。
-
@digitalsatori 在 在调拨的tree视图中添加收货人姓名电话和地址,怎么添加? 中说:
你是如何启动Odoo的,在启动参数中有没有用-c xxxxx.conf指向你上面的配置文件?
我就是在windows中下载官网一健安装程序安装,这样启动参数怎么修改
-
我在addons_path添加了custom-addons,然后在里边建了sale_my文件夹
你是这样说的,所以你将custom-addons添加在哪里了?
我没有在Windows下装过Odoo,不太清楚默认的配置文件的位置,网上说是在
C:\Program Files (x86)\Odoo 11.0\server\odoo.conf
不知道对不对。 -
就是下边这么配置的,,后边那个是添加的,前边那个是默认的
custom-addons文件夹也是放在server文件夹下边
addons_path = d:\Program Files\Odoo12\server\odoo\addons,d:\Program Files\Odoo12\server\custom-addons -
你的设置应该都没问题。搜你的模块:
sale_my
的时候需要去掉那个默认的“应用”过滤规则,如下图: -
@digitalsatori
不知道什么问题,第三方APP都刷出来了,,sale_my就是没出来,我就算吧这个文件夹放到程序默认的odoo\addons里边也刷不出来(估计应该是哪里有问题)先不管了,,也就是说要想https://www.cnblogs.com/SamNicole1809/archive/2019/06/03/10968113.html里边说的增加字段,或者是说想在库存的tree中增加收货人姓名、电话、地址等都是要自定义一个模块,然后related字段,并显示的吧?(没办法在视图字段那边直接添加是吧)
-
建议你还是看官方文档吧:
https://www.odoo.com/documentation/12.0/howtos/backend.html网上东一块西一块的文章好多都有问题的。
-
@digitalsatori
老是看到教材中用命令行创建模块,,Windows中怎么用命令行,我输入odoo-bin等,都说不是内部命令什么的是直接打开windows的cmd,输入下边代码就可执行吗?
比如下边代码:
$ odoo-bin scaffold <module name> <where to put it>
-
windows下的
odoo-bin
是在d:\Program Files\Odoo12\server\
目录下的。你可以把这个目录加到环境目录下,这样就不需要每次都要输入完整路径了。另外Windows下建议使用PowerShell。不过最好还是在Linux下搞开发。
-
windows下应该是odoo-bin.exe吧,你要看这个执行文件在windows下的名字啊。
-
做个完结吧,odoo-bin.exe好像已经是删除了的(安装好后就是没有的)
sale_my用不了的问题,估计是我用记事本编辑的问题,编码格式不是utf8
用python编辑软件后就好了(编辑软件打开前边sale_my里的文件,,中文都是乱码)# -*- coding: utf-8 -*- # Part of Odoo. See LICENSE file for full copyright and licensing details. { 'name': 'sale_extension', 'version': '12.0.1.0.0', 'category': 'sale_extension', 'description':'sale的from、tree模块显示内容的扩展', 'sequence': 32, 'license': 'AGPL-3', 'depends': [ 'sale', ], 'data': [ 'views/sale_order_extension.xml' ], 'demo': [ ], 'installable': True, 'auto_install': False, 'application': False, }