Odoo 8及以上。无需创建和保存按钮即可自动创建和保存

时间:2017-02-22 20:16:26

标签: button save openerp

我正在使用SoapPY从第三方服务恢复数据,并将其保存在字典结构中。恢复的数据具有one2many结构,类似于销售订单结构(标题行)。 在填写一些键值后单击自定义按钮时,我会这样做。我禁用了创建和保存按钮,因为我想要一个不同的表单行为。我只需要获取数据并手动将其保存在相应的表格中(标题和行)。我不希望自定义按钮自动执行create方法,因为默认情况下任何按钮都会自动执行。 有消化吗?

def custom_button(self):

    # Get the info from third party using SOAPPy
    WSDLFile = "http://www.expedientes.poderjudicial.gub.uy/wsConsultaIUE.php?wsdl"
    proxy = WSDL.Proxy(WSDLFile)
    UIE = str(self.int_sede) + '-' + str(self.int_nro_registro) + '/' + str(self.int_ano)
    soap_exp = proxy.consultaIUE(UIE)

    # Set variables
    str_origen = soap_exp[1]
    str_caratula = soap_exp[3]
    str_abogado_actor = soap_exp[4]
    str_abogado_demandado = soap_exp[5]
    movimientos = soap_exp[6]

    mov_exp = []
    for mov in movimientos:
        mov_exp.append ((0, 0, {'str_sede': mov['sede'],
                          'date_venc': mov['vencimiento'],
                          'str_decreto': mov['decreto'],
                          'date_mov': mov['fecha'],
                          'str_movimiento': mov['tipo']}))

    expediente = {'int_sede': self.int_sede, 'int_nro_registro': self.int_nro_registro, 'int_ano': self.int_ano,
                   'str_origen': str_origen,
                   'str_caratula': str_caratula,
                   'str_abogado_actor': str_abogado_actor,
                   'str_abogado_demandado': str_abogado_demandado,
                   'movimiento_ids': mov_exp
                 }

     return write(expediente)

enter image description here

1 个答案:

答案 0 :(得分:0)

如果你想避免使用Odoo的ORM,那么就继续使用sql。通过创建和保存记录,我们的意思是相同的事情。 write方法对已经创建的记录集进行操作。我明白了:

return write(expediente)

这是什么?你在某处定义write可调用吗?你导入方法写吗? write方法通常像self.write({'my_field':its_value})一样被调用,其中self是recordset

因此,点击按钮即可:

1)使用self.create({field1:value1, field2:value2, ...})

2)使用self.env.cr.execute(r"insert raw sql here")在表中创建所需的记录(即如果您不想实际使用Odoo的ORM