#javascript #python #function #odoo #odoo-8
#javascript #python #функция #odoo #odoo-8
Вопрос:
У меня проблема в функции Python для обновления местоположения назначения выбранных строк в заказе на доставку.
Это мой javascript для выбора строк (в JS я вызываю функцию update_locations()) :
openerp.web_one2many_selectable = function(instance, m)
{
var _t = instance.web._t,
_lt = instance.web._lt;
QWeb = instance.web.qweb;
instance.web.form.widgets = instance.web.form.widgets.extend(
{
'one2many_selectable' : 'instance.web.form.One2ManySelectable',
});
instance.web.form.One2ManySelectable =
instance.web.form.FieldOne2Many.extend(
{
multi_selection: true,
start: function()
{
this._super.apply(this, arguments);
var self=this;
self.on("change:effective_readonly", this, function(){
if(this.get("effective_readonly"))
self.$(".ep_button_confirm").attr("disabled", "");
else
self.$(".ep_button_confirm").removeAttr("disabled", "");
});
this.$el.prepend(QWeb.render("One2ManySelectable", {widget: this}));
this.$el.find(".ep_button_confirm").click(function(){
self.action_selected_lines();
});
},
action_selected_lines: function()
{
var self=this;
selected_ids=self.get_selected_ids_one2many();
var model_obj=new instance.web.Model("stock.picking");
model_obj.call('update_locations',
[selected_ids],{context:self.dataset.context})
.then(function(result){
});
},
get_selected_ids_one2many: function ()
{
var ids =[];
this.$el.find('th.oe_list_record_selector input:checked')
.closest('tr').each(function () {
ids.push(parseInt($(this).context.dataset.id));
});
return ids;
},
});
}
И вот мой класс Python (я думаю, проблема в функции update_locations()) :
from openerp import models, fields, api
class stock_picking(models.Model):
_inherit = 'stock.picking'
new_location_dest_id = fields.Many2one(
'stock.location', 'Destination Location',
readonly=True,
states={
'draft': [('readonly', False)],
'waiting': [('readonly', False)],
'confirmed': [('readonly', False)],
},
help="Location where the system will stock the finished products. This will be the default of the associated stock moves.")
@api.one
def update_locations(self):
vals = {
'location_dest_id': self.new_location_dest_id.id
}
self.move_lines.write(vals)
Когда я выбираю несколько строк и указываю местоположение назначения и нажимаю на кнопку для изменения назначения. появляется сообщение об ошибке :
Ошибка Odoo MissingError Один из документов, к которым вы пытаетесь получить доступ, был удален, пожалуйста, повторите попытку после обновления
я доступен для получения дополнительной информации, спасибо вам за вашу помощь, ребята.
Ответ №1:
Я думаю, что вам не нужен javascript, просто небольшой модуль с мастером, написанный только с использованием python и xml. В исходном коде самого Odoo их много в качестве примеров, просто посмотрите на используемую модель, models.Модель переходного процесса.