2016-02-09 4 views
0

Я хочу добавить выпадающий список из Many2one, который я создал в файл pos.xml (я знаю, как наследовать от этого), может ли кто-нибудь помочь мне с этим?Odoo PoS dropdown from Many2one (widget.pos?)

Я видел в коде, что для каждого выпадающего списка они использовали widget.pos. имя, но этого я не могу найти нигде. Вот пример для стран (здесь я хочу заменить его моей переменной).

   <select class='detail client-address-country' name='country_id'> 
        <option value=''>None</option> 
        <t t-foreach='widget.pos.countries' t-as='country'> 
         <option t-att-value='country.id' t-att-selected="partner_country_id ? ((country.id === partner.country_id[0]) ? true : undefined) : undefined"> 
          <t t-esc='country.name'/> 
         </option> 
        </t> 
       </select> 

Я не знаю, где т-Еогеасп = «» widget.pos.countries приходит и как я могу справиться с этим для своей собственной переменной называется «домен», который является частью класса «domainnames» , И позвонил из Many2one из res.partner

+1

Просьба привести пример кода, который демонстрирует вашу проблему. –

+0

см. Этот вопрос https://stackoverflow.com/questions/35890929/odoo-pos-create-a-dropdown-list Я думаю, это поможет вам. –

ответ

0

Ваша очередь: я видел в коде, что для каждого выпадающего списка они использовали widget.pos.name, но этого я не могу найти нигде.

Ответ: widget.pos.name происходят из В POS, models.jsлиния №. 130, здесь модель на стороне сервера загружаются. Это список моделей, которые необходимо загрузить с сервера. в вашем пользовательском модуле вы также можете загрузить другие модели в соответствии с вашими требованиями.

Que: Я не знаю, откуда приходит t-foreach = 'widget.pos.countries' и как я могу управлять этим для своей собственной переменной?

Ответ: Для Country виджета, это происходит от models.js не выравнивает №: 178, модели: '' res.country загружен с сервера. В линии 180: Вы можете видеть, что в загруженной функции они определяют страны (загружено: функции (самость, страны)) // Вы можете дать какие-либо соглашения о присвоении имен здесь. Итак, вы можете прямо передать, что параметры функции в вашем (поле Many2One) xml файл.

Пример: Написать в ваших JS файла заказного модуля:

module.PosModel.prototype.models.push({ //loaded model 
    model: 'res.partner', 
     fields: ['partner_id','name'], 
     loaded: function(self,partners){ //pass parameters 
     self.partners = partners; 

    }, 
}); 

В XML-файле:

 <div class='client-detail'> 
     <span class='label'>Partner</span> 
      <select class='detail client-partner' name='partner_id'> 
       <option value=''>None</option> 
        <t t-foreach='widget.pos.partners' t-as='partner'> 
         <option t-att-value='partner.id' t-att-selected="partner_partner_id ? ((partner.id === partner.partner_id) ? true : undefined) : undefined"> 

         <t t-esc='partner.name'/> 
        </option> 
        </t> 
       </select> 
    </div> 

Так же, как, что: В ваших JS, вы можете загрузить любую модель и получить данные в XML-файле. Надеюсь, это поможет вам .. !!! Спасибо ... !!!

+0

работал блестяще! Большое спасибо. Теперь единственное, когда я выбираю что-то из раскрывающегося списка и сохраняю нового клиента (я вижу, что это обновляется в базе данных). Но когда я сейчас хочу отредактировать клиента, выпадающее меню показывает «Нет» по умолчанию, как можно изменить это – Jesse

Смежные вопросы