python - OpenERP-v7 : Add custom field to delivery order from sale order

标签 python odoo openerp-7

我已经在我的 sale_order 表单中添加了一个自定义字段,现在我希望它显示在销售订单确认后生成的相应交货订单上。在 v8 中可能有一种更简单的方法来执行此操作,但我必须在 v7 中执行此操作,因此请只回复适用于 OpenERP v7 的答案。

在尝试了许多其他方法来完成此操作后,我在 odoo.com 上发现了一个建议,有人说您应该尝试覆盖“_prepare_order_picking”函数,因为它实际上是根据销售订单中的值创建交货订单的,通过返回要在交货单上显示的值的字典。我已获取该链接提供的代码,但它对我不起作用。这是link 。非常感谢任何帮助,我已尽力使所有内容清晰,但如果我需要澄清任何内容,请告诉我,我将编辑我的问题。

我修改了代码以使其更易于阅读,并将需要从销售订单中获取的自定义字段数量限制为一个字段,当实际工作时我需要多个字段,但应该很容易一旦正确实现,就可以扩展。

我修改后的代码如下:

__openerp__.py:

{
"name"        : "Nick's Sale order/delivery order form fields",
"version"     : "1.0",
"author"      : "Nick",
"category"    : "Custom",
"depends"     : ['sale', 'stock'],
"description" : """ Sale and delivery order customizations by Nick """,
'data'        : ['nicks_sale_fields.xml', 'nicks_delivery_fields.xml'],
'installable' : True,
}

nicks_sale_fields.py:

from openerp.osv import fields,osv
class nicks_sale_fields(osv.Model):
    _inherit='sale.order'
    def _prepare_order_picking(self, cr, uid, order, context=None):
        vals=super(sale_order, self)._prepare_order_picking(cr, uid, order, context=context)
        vals.update({'my_custom_field': 'my_custom_field_value'})
        return vals

    _columns={
        'my_custom_field': fields.char('field description', required=True, store=True, size=3, help='field help text',),
    }
    _defaults={
        'my_custom_field': 'yes'
    }

nicks_sale_fields.xml:

<?xml version="1.0" encoding="utf-8"?>
<openerp>
<data>
    <record model="ir.ui.view" id="nicks_sale_order_fields">
        <field name="name">sale.order.form</field>
        <field name="model">sale.order</field>
        <field name="inherit_id" ref="sale.view_order_form"/>
        <field name="arch" type="xml">
            <xpath expr="/form/sheet/notebook/page[1]/group" position="after">
                <group string="Sales order: custom fields">
                    <field name="my_custom_field" string="Sale form descriptor" class="oe_inline"/>
                </group>
            </xpath>
        </field>
</record>
</data>
</openerp>

nicks_delivery_fields.xml:

<?xml version="1.0" encoding="utf-8"?>
<openerp>
<data>
    <record model="ir.ui.view" id="nicks_deliv_order_fields">
        <field name="name">stock.picking.out.form</field>
        <field name="model">sale.order</field>
        <field name="inherit_id" ref="stock.view_picking_out_form"/>
        <field name="arch" type="xml">
            <xpath expr="/form/sheet/group/group[2]/field[@name='origin']" position="after">
                <group string="Delivery order: custom fields">
                    <field name="my_custom_field" string="Delivery form descriptor" class="oe_inline"/>
                </group>
            </xpath>
        </field>
    </record>
</data>
</openerp>

最佳答案

您需要在__openerp__.py文件中添加sale_stock(依赖于销售和库存)模块的依赖项。喜欢

"depends"     : ['sale_stock'],

并且在 nicks_delivery_fields.xml 中,您提供了错误的模型名称来修改交货订单 View 。它应该是stock.picking

<?xml version="1.0" encoding="utf-8"?>
<openerp>
  <data>
      <record model="ir.ui.view" id="nicks_deliv_order_fields">
          <field name="name">stock.picking.out.form</field>
          <field name="model">stock.picking</field>
          <field name="inherit_id" ref="stock.view_picking_out_form"/>
          <field name="arch" type="xml">
              <xpath expr="/form/sheet/group/group[2]/field[@name='origin']" position="after">
                  <group string="Delivery order: custom fields">
                      <field name="my_custom_field" string="Delivery form descriptor" class="oe_inline"/>
                  </group>
              </xpath>
          </field>
      </record>
  </data>
</openerp>

关于python - OpenERP-v7 : Add custom field to delivery order from sale order,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31326800/

相关文章:

python - 部分由文件系统支持的数据结构?

javascript - Odoo机会新消息取消选中收件人

reporting - 在 Odoo 中修改发票

python - odoo (openerp) 中的字段错误?

python - 函数域,超出最大递归深度

python - 如何通过openerp_sxw2rml.py将SXW文件转换为RML文件?

python - 为什么包含不可散列类型的元组不可散列?

python - 在 Jinja2 模板中访问类方法

c# - 使用 Python 与 C# 创建 PPT 演示文稿

python - fork 后正在运行的线程会发生什么情况?