Odoo 10 从自定义模型转到购买列表
Odoo 10 Go to purchase list from custom model
我正在像这样从外部来源提取数据:
from odoo import models,fields,api
import datetime
import requests
import logging
_logger = logging.getLogger(__name__)
class purchase_order(models.Model):
_inherit = "purchase.order"
@api.model
def getOrdersTechData(self):
getServer = 'someapi.xxx'
get_response = requests.get(url=getServer).json()
partner_id = get_response['partner_id']
name = get_response['name']
product_id = get_response['product_id']
...
self.createBestelAanvraag(partner_id,name,product_id,product_qty,product_uom,price_unit,date_planned)
@api.multi
def createBestelAanvraag(self,partner_id,name,product_id,product_qty,product_uom,price_unit,date_planned):
_logger.debug("name:")
_logger.debug(name)
self.PurchaseOrder = self.env['purchase.order']
po_vals = {
'partner_id': partner_id,
'order_line': [
(0, 0, {
'name': name,
...
}),
],
}
self.po = self.PurchaseOrder.create(po_vals)
我从主屏幕上的菜单项启动它,如下所示:
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<data>
<record id="action_make_testing" model="ir.actions.server">
<field name="name">My Action</field>
<field name="model_id" ref="model_purchase_order"/>
<field name="code">env['purchase.order'].getOrdersTechData()
</field>
</record>
<menuitem name="Fetch Data" action="action_make_testing"
id="sale_order_custom_document" sequence="20"/>
</data>
</odoo>
但是在创建订单后,我看到一个空白视图,我必须从 GUI 进行购买。相反,我希望立即看到包含所有订单(包括新订单)的采购列表视图。
您可以return进行购买操作。
试试这个:
action = self.env.ref('purchase.purchase_rfq').read()[0]
action.update({'domain': [('id', '=', self.po.id)], 'res_id': self.po.id})
return action
这将打开采购视图并显示采购订单。
我修改了您的代码中的一些内容。您必须 return 来自 Python 的另一个操作才能打开树视图:
Python代码
@api.model
def getOrdersTechData(self):
getServer = 'someapi.xxx'
get_response = requests.get(url=getServer).json()
partner_id = get_response['partner_id']
name = get_response['name']
product_id = get_response['product_id']
...
po = self.createBestelAanvraag(partner_id,name,product_id,product_qty,product_uom
res = {
'view_type': 'form',
'view_mode': 'tree',
'res_model': 'purchase.order',
'type': 'ir.actions.act_window',
'target': 'current',
}
return res
@api.model
def createBestelAanvraag(self, partner_id, name, product_id, product_qty,
product_uom, price_unit, date_planned):
po_vals = {
'partner_id': partner_id,
'order_line': [
(0, 0, {
'name': name,
...
}),
],
}
return self.env['purchase.order'].create(po_vals)
XML代码
<record id="action_make_testing" model="ir.actions.server">
<field name="name">My Action</field>
<field name="condition">True</field>
<field name="type">ir.actions.server</field>
<field name="model_id" ref="model_purchase_order"/>
<field name="state">code</field>
<field name="code">env['purchase.order'].getOrdersTechData()</field>
</record>
NOTE 1
If you see the purchase tree view but your purchase order is not there
yet, add auto_refresh
parameter to the res
value:
res = {
'view_type': 'form',
'view_mode': 'tree',
'res_model': 'purchase.order',
'type': 'ir.actions.act_window',
'target': 'current',
'auto_refresh': 1,
}
return res
NOTE 2
If instead of the tree view of purchase order you wanted to see the
purchase order you have just created, change the res
variable this
way (in the above Python code I wrote you):
res = {
'view_type': 'form',
'view_mode': 'form',
'res_model': 'purchase.order',
'res_id': po.id,
'type': 'ir.actions.act_window',
'target': 'current',
}
return res
我正在像这样从外部来源提取数据:
from odoo import models,fields,api
import datetime
import requests
import logging
_logger = logging.getLogger(__name__)
class purchase_order(models.Model):
_inherit = "purchase.order"
@api.model
def getOrdersTechData(self):
getServer = 'someapi.xxx'
get_response = requests.get(url=getServer).json()
partner_id = get_response['partner_id']
name = get_response['name']
product_id = get_response['product_id']
...
self.createBestelAanvraag(partner_id,name,product_id,product_qty,product_uom,price_unit,date_planned)
@api.multi
def createBestelAanvraag(self,partner_id,name,product_id,product_qty,product_uom,price_unit,date_planned):
_logger.debug("name:")
_logger.debug(name)
self.PurchaseOrder = self.env['purchase.order']
po_vals = {
'partner_id': partner_id,
'order_line': [
(0, 0, {
'name': name,
...
}),
],
}
self.po = self.PurchaseOrder.create(po_vals)
我从主屏幕上的菜单项启动它,如下所示:
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<data>
<record id="action_make_testing" model="ir.actions.server">
<field name="name">My Action</field>
<field name="model_id" ref="model_purchase_order"/>
<field name="code">env['purchase.order'].getOrdersTechData()
</field>
</record>
<menuitem name="Fetch Data" action="action_make_testing"
id="sale_order_custom_document" sequence="20"/>
</data>
</odoo>
但是在创建订单后,我看到一个空白视图,我必须从 GUI 进行购买。相反,我希望立即看到包含所有订单(包括新订单)的采购列表视图。
您可以return进行购买操作。
试试这个:
action = self.env.ref('purchase.purchase_rfq').read()[0]
action.update({'domain': [('id', '=', self.po.id)], 'res_id': self.po.id})
return action
这将打开采购视图并显示采购订单。
我修改了您的代码中的一些内容。您必须 return 来自 Python 的另一个操作才能打开树视图:
Python代码
@api.model
def getOrdersTechData(self):
getServer = 'someapi.xxx'
get_response = requests.get(url=getServer).json()
partner_id = get_response['partner_id']
name = get_response['name']
product_id = get_response['product_id']
...
po = self.createBestelAanvraag(partner_id,name,product_id,product_qty,product_uom
res = {
'view_type': 'form',
'view_mode': 'tree',
'res_model': 'purchase.order',
'type': 'ir.actions.act_window',
'target': 'current',
}
return res
@api.model
def createBestelAanvraag(self, partner_id, name, product_id, product_qty,
product_uom, price_unit, date_planned):
po_vals = {
'partner_id': partner_id,
'order_line': [
(0, 0, {
'name': name,
...
}),
],
}
return self.env['purchase.order'].create(po_vals)
XML代码
<record id="action_make_testing" model="ir.actions.server">
<field name="name">My Action</field>
<field name="condition">True</field>
<field name="type">ir.actions.server</field>
<field name="model_id" ref="model_purchase_order"/>
<field name="state">code</field>
<field name="code">env['purchase.order'].getOrdersTechData()</field>
</record>
NOTE 1
If you see the purchase tree view but your purchase order is not there yet, add
auto_refresh
parameter to theres
value:
res = {
'view_type': 'form',
'view_mode': 'tree',
'res_model': 'purchase.order',
'type': 'ir.actions.act_window',
'target': 'current',
'auto_refresh': 1,
}
return res
NOTE 2
If instead of the tree view of purchase order you wanted to see the purchase order you have just created, change the
res
variable this way (in the above Python code I wrote you):
res = {
'view_type': 'form',
'view_mode': 'form',
'res_model': 'purchase.order',
'res_id': po.id,
'type': 'ir.actions.act_window',
'target': 'current',
}
return res