تخطي للذهاب إلى المحتوى
القائمة
لقد تم الإبلاغ عن هذا السؤال
2 الردود
3106 أدوات العرض

hello,

I am returning wizard form view from python function but wizard popup is not coming.

please help me, I am  new to odoo.


python code:

class SaleOrder(models.Model):
_inherit = 'sale.order'

def action_confirm(self):
if self.partner_id.check_credit:
if self.amount_total > self.partner_id.credit_limit:
self.return_wizard()

def return_wizard(self):
print('==========================return wizard')
         form_view_id = self.env.ref('check_credit_limit.send_notification_action').id
print('==========================', form_view_id)
return {
'name': "Send Notification",
'type': 'ir.actions.act_window',
'view_mode': 'form',
'res_model': 'send.notification',
'view_id': form_view_id,
'target': 'new'
}



xml code(transient model form view):

<?xml version="1.0" encoding="UTF-8" ?>
<odoo>
<record id="send_notification_form" model="ir.ui.view">
<field name="name">notification.form</field>
<field name="model">send.notification</field>
<field name="arch" type="xml">
<form string="Send Notification">
<group>
<span> Hi I am wizard</span>
</group>
<footer>
<button name="send_notification" string="Send" type="object" class="oe_highlight"/>
<button string="Cancel" class="btn btn-default" special="cancel"/>
</footer>
</form>
</field>
</record>

<record id="send_notification_action" model="ir.actions.act_window">
<field name="name">Send Notification</field>
<field name="type">ir.actions.act_window</field>
<field name="res_model">send.notification</field>
<field name="view_mode">form</field>
<field name="target">new</field>
<field name="help" type="html">
<p class="oe_view_nocontent_create">
Hi I am wizard
</p>
</field>
</record>
</odoo>
الصورة الرمزية
إهمال
أفضل إجابة

Hi, 

Everything seems correct other than the inheritance part, while your inheriting a function from default class then you must return that class function with using "super".

@api.multi

def action_confirm(self):

        Your code.....

res = super(SaleOrder, self).action_confirm()

return res


and also include 'view_type' : 'form' in your wizard return
Hope it helps ,

Thanks

الصورة الرمزية
إهمال
الكاتب

it worked like this, i was giving view action's id but i had to give form view id and i removed view action from xml and everything works fine:

def action_confirm(self):

if self.partner_id.check_credit:

if self.amount_total > self.partner_id.credit_limit:

form_view_id = self.env.ref('check_credit_limit.send_notification_form').id

return {

'name': "Send Notification",

'type': 'ir.actions.act_window',

'view_mode': 'form',

'res_model': 'send.notification',

'view_id': form_view_id,

'target': 'new'

}

Hi, your code will completely change the action_confirm written by odoo.

This is not the correct procedure,

Do check this to override something

https://www.odoo.yenthevg.com/override-create-functions-odoo/

الكاتب

yes, i added super() when i noticed different behavior of action_confirm.

Good that you changed!!

أفضل إجابة

Hi Nirav,
Please try changing your python code as below.

class SaleOrder(models.Model):
_inherit = 'sale.order'

def action_confirm(self):
if self.partner_id.check_credit:
if self.amount_total > self.partner_id.credit_limit:
return self.return_wizard()

def return_wizard(self):
print('==========================return wizard')
form_view_id = self.env.ref('check_credit_limit.send_notification_action').id
print('==========================', form_view_id)
return {
'name': "Send Notification",
'type': 'ir.actions.act_window',
'view_mode': 'form',
'res_model': 'send.notification',
'view_id': form_view_id,
'target': 'new'
}

Regards

الصورة الرمزية
إهمال