2016-03-08 2 views
1

В настоящее время я работаю над Настройка POS. Я сделал почти, но застрял в этом вопросе.Как применить фильтр домена в поле Many2One Использование Odoo JS?

Py Файл:

class prescription(osv.osv): 

    _name = 'res.prescriptions' 

    _columns={ 

     'prescription_id':fields.many2one('res.partner',"customer"), 

     } 

class prescription_res_partner(osv.osv): 

    _inherit = 'res.partner' 

    _columns = { 

     'prescriptions_ids': fields.one2many('res.prescriptions','prescription_id','Prescriptions'), 

} 

То, что я хотел бы сделать, это то, что когда пользователь выбрать клиент в POS и нажмите на Prescription Баттона, он показывает только рецепты, которые относятся к определенному выбранному клиенту .. На данный момент он отображает все рецепты, поскольку я не могу правильно установить домен фильтра. Также .....

я пытался решить мою проблему с помощью .query(), .filter() в JS. но получить некоторые ошибки, а если я стану static partner_id, тогда он будет отображать рецепты для данного static partner_id. Я хочу решить это для динамичных партнеров. он показывает только рецепты выбранного партнера ... !!!

В JS Файл:

var def = new $.Deferred(); 

console.log("deffffffffffffff", def); 

var fields = _.find(this.models,function(model){ return model.model === 'res.prescriptions'; }); 

new instance.web.Model('res.prescriptions') 

    .query(fields) 

    .filter([['prescription_id', '=', 51]]) // Here i pass static partner_id instead of this i want to pass dynamic partner_id 

    .limit(1000) 

    .all() 

    .then(function(prescriptions){ 

if (self.render_list_prescription(prescriptions)) { // Render selected partner's Prescription 

    def.resolve(); 

    } else { 

    def.reject(); 

    } 

    }, function(err,event){ event.preventDefault(); def.reject(); }); 

return def; 

я уже потратить почти 3 дней, чтобы преодолеть эту проблему, но не смог доставить его. пожалуйста, помогите мне в этом. Еще раз спасибо за вашу помощь .. !!!

+0

Вы можете передать список связанных рецептов выбранного клиента из python в js, когда вы нажимаете кнопку «Предписания»? или получить список связанных рецептов с помощью js? –

ответ

1

Вы можете попробовать использовать домен в таких областях, как это:

_columns = { 

'prescriptions_ids': fields.one2many('res.prescriptions','prescription_id','Prescriptions', domain="[('prescription_id', '=', 51)]"), 
} 

изменения 51 с колонкой в ​​отношении

+0

Спасибо за ваш ответ Но я хочу передать этот домен фильтра в JS. Addons side it works fine Но я хочу, чтобы это было сделано в POS, **. Filter ([['prescription_id', '=', 51]]) ** // Здесь я хочу передать рецепт выбранного партнера и его динамику Не статический идентификатор ... !!! –

+0

вы меняете «51» по своим идентификаторам полей, например domain = "[('prescription_id', '=', prescription_id)]" –

+0

Раньше я сказал, что он отлично работает в аддонах, не нужно пропускать домен., I хочу решить эту проблему в JS., хотите передать этот домен фильтра в JS. –

0

Вы можете сделать это в on_change методы.

prescription_ids = # search for prescriptions related to the selected customer 

# self.pool.get('res.prescriptions').search(cr, uid, [('partner_id', '=', YOU SHOULD GET THE CUSTOMER ID)]) 

res['domain']['prescription_id'] = [('id', 'in', prescription_ids)] 

return res 
+0

Thank You Rawly., Здесь метод on_change не работает, потому что я хочу этот материал в JS .. В POS список клиентов есть, выберите конкретного клиента, нажмите кнопку «Предписания», чтобы он отобразил все рецепты, связанные с выбранным клиент..!!! –

+0

@AyAzMansuri Метод 'on_change' должен быть для' prescription_id', я использовал тот же aproch с моей моделью, чтобы он работал. Я хочу, чтобы вы нашли решение в 'JS' – Zety

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