Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

376
Visualizações
¿Agregar registro usando el botón propio de JS (Odoo)?

Estoy haciendo mi propia lista usando el archivo list_editable_renderer.js y extendiendo el widget one2many de acuerdo a mis necesidades, ahora quiero poner un botón de agregar al crear un registro en el campo attribute_line_ids , actualmente Odoo guarda cuando se hace clic en el botón Guardar pero it ¿Qué quiero guardar cuando hago clic en mi nuevo botón?

ingrese la descripción de la imagen aquí

Mi xml:

 <field name="attribute_line_ids" widget="table_one2many" context="{'show_attribute': False}" attrs="{'invisible':[('has_variants','=', False)]}" > <tree string="Variants" editable="top" multi_edit="1" options="{'only_one_row': 'True', 'add_record_button': 'True'}" > <field name="attribute_id" attrs="{'readonly': [('id', '!=', False)]}" string="Opción"/> <field name="value_ids" string="Valores (Sepáralos con un tab)" widget="many2many_tags_variaciones_bb" options="{'no_create_edit': False}" context="{'default_attribute_id': attribute_id, 'show_attribute': False}"/> </tree> </field>

La acción de mi botón es:

 'click tr .o_list_record_add': '_onAddIconClick',

y la función:

 _onAddIconClick: function(event){ this._onAddRecord(event,true) },

mi error es:

 web.assets_backend.js:1144 Uncaught (in promise) TypeError: Cannot read property 'then' of undefined

No estoy seguro si es la forma correcta o si me puedes orientar te lo agradecería.

Nota: Odoo14

about 4 years ago · Juan Pablo Isaza
1 Respostas
Responde à pergunta

0

Botón frontal JS nuevo:

 _onAddIconClick: function(event){ var self = this; this._rpc({ model: record.model, method: 'save_record', context: { model: record.model, record: record, }, }).then(function () { self._render() }); }

en el backend recopilo el contexto y aplico tus criterios

 @api.model def save_record(self): record = self.env.context['record'] pt = self.env['product.template'].sudo().browse(record['context']['params']['id']) if pt: attribute_id_rec = record['data']['attribute_id'] value_ids_rec = record['data']['value_ids'] obj ={} obj['has_variants'] = True value_ids = {} value_ids['attribute_id'] = attribute_id_rec['res_id'] value_ids['value_ids'] = [[6, False, value_ids_rec['res_ids']]] lista = [[0, record['ref'], value_ids]] obj['attribute_line_ids'] = lista return pt.write(obj)
about 4 years ago · Juan Pablo Isaza Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda