在openerp7中导入带有one2多个字段的数据时,如何按顺序创建序列号?

时间:2013-09-20 06:55:38

标签: sequence openerp

我正在尝试将数据导入到显然位于下面的表单

  • Seq No(序列号字段 - 我用openerp序列生成)
  • 客户(客户参考字段)
  • 服务(一个2多个领域)
    • 合同开始日期
    • 合同结束日期

我导入的数据是这样的

Customer    Contract Start Date     Contract End Date

 ABC            13/02/12                12/05/14
                12/05/14                14/04/16
                12/08/16                14/06/18
 XYZ            15/04/12                18/08/14
                11/05/14                19/05/16

现在我的表单中有2条记录生成子记录,但第一条记录生成的ID为R001,第二条记录为R004。即对于每个导入记录,都会生成一个id(但不使用)。所以有间隔。但这是我已经确定用one2many导入表单值的方法。

现在我需要了解下面的

  • 我做得对,还是有其他方法可以导入one2many 数据
  • 导入时有没有办法整理序列号
  • 最后一个(歪)是我可以去数据库更新所有值 一个序列。当我手动创建一个表单字段时,最后一个id + 1 由openerp生成。所以我需要更新序列 数字开头的最后一个值+ 1我已经改变了 数据库中。

请指导我做必要的事。如果不清楚,请随时更新帖子。谢谢你的时间。

来自Odony的评论

我的 Register_sequence.xml

<?xml version="1.0" encoding="utf-8"?>
<openerp>
    <data noupdate="1">
        <!-- Sequences for stoc.installed.details (register) -->
        <record id="seq_type_register" model="ir.sequence.type">
            <field name="name">Register</field>
            <field name="code">stock.installed_details</field>
        </record>
        <record id="seq_register" model="ir.sequence">
            <field name="name">Register</field>
            <field name="code">stock.installed_details</field>
            <field name="prefix">Reg</field>
            <field name="padding">3</field>
            <field name="company_id" eval="False"/>
        </record>
    </data>
</openerp>

我的 Python文件

class installed_details(osv.osv):
_name = "stock.installed_details"
    _description = "Installed Details"  
    _columns = {
        'name': fields.char('Name', size=64),
        'partner_id': fields.many2one('res.partner', 'Customer', required=True, help="Address of  Hospital / Medical Centre."),
        'product_id': fields.many2one('product.product', 'Product', select=True, domain=[('type', '<>', 'service')], states={'done': [('readonly', True)]}),
'contract_lines' : fields.one2many('contract.contract', 'register_id','Contract'),
    }

   def create(self, cr, uid, vals, context=None):
        if vals.get('name', '/') == '/':
            vals['name'] = self.pool.get('ir.sequence').get(cr, uid, 'stock.installed_details') or '/'
        return super(Installed_details, self).create(cr, uid, vals, context=context)
installed_details()

class contract_contract(osv.osv):

    _name = "contract.contract"
    _description = "Contract"
    _columns = {
        'register_id': fields.many2one('stock.installed_details', 'Register'),       
        'contract_start_date': fields.date('Contract Start Date'),
        'contract_end_date': fields.date('Contract End Date')
    }

contract_contract()

0 个答案:

没有答案