Python 在Odoo或OpenERP中,国家组字段与发票自定义字段的关系如何?
这是我的第一个问题! 我想知道如何将国家组表单中的Python 在Odoo或OpenERP中,国家组字段与发票自定义字段的关系如何?,python,odoo,Python,Odoo,这是我的第一个问题! 我想知道如何将国家组表单中的export_message文本字段和dual_box布尔字段与发票表单中的x_message文本字段和x_dual布尔字段相关联 我想知道怎样才能得到一个国家的国家组。 让我解释一下 例如: 我有3个国家组(A、B和C),我有5个国家(1、2、3、4、5) 然后,国家组A有国家(1和5),国家组B有国家(2和3),国家组C有国家(1和4)。 在发票表格中,我有一位客户,他有地址和国家 例如,如果客户的国家为1,如何在发票中获取国家组并将其保存在
export_message
文本字段和dual_box
布尔字段与发票表单中的x_message
文本字段和x_dual
布尔字段相关联
我想知道怎样才能得到一个国家的国家组。
让我解释一下
例如:
我有3个国家组(A、B和C),我有5个国家(1、2、3、4、5)
然后,国家组A有国家(1和5),国家组B有国家(2和3),国家组C有国家(1和4)。
在发票表格中,我有一位客户,他有地址和国家
例如,如果客户的国家为1,如何在发票中获取国家组并将其保存在自定义字段中
我和奥多12一起工作
我的国家组课程
class CountryGroup(models.Model):
_名称='country.group'
name=fields.Char()
country\u id=fields.Many2many(“res.country”)
export\u message=fields.Text(string=“export message”)
dual\u-box=fields.Boolean(string=“dual-box”)
我的发票类别
class AccountInvoice(models.Model):
_继承='account.invoice'
x\u confirm\u message=fields.Boolean(string='confirm Print message')
x_message=fields.Text(string='message',related='')
x_dual=fields.Boolean(string=“dual-Box”,related='')
谢谢在国家/地区\u账户组\u发票模型上实现计算字段:
class AccountInvoice(models.Model):
_inherit = 'account.invoice'
country_group = fields.Many2one('country.group', 'Country Group',
compute="_find_country_group")
x_confirm_message = fields.Boolean(string='Confirm Print Message')
x_message = fields.Text(string='Message', related='country_group.export_message')
x_dual = fields.Boolean(string="Dual Box", related='country_group.dual_box')
@api.depends('customer_id')
def _find_country_group(self):
# Get country of the customer
country_id = self.env['res.partner'].search([('id', '=',
self.customer_id.id)]).country_id
# Get country_group based on customer's country
country_gp_id = self.env['rel.country.group'].search([('country_id', '=', country_id.id)], limit=1)
self.country_group = country_gp_id
class ResCountry(models.Model):
_inherit = 'res.country'
country_gp_ids = fields.Many2many("country.group", 'rel_country_group', 'country_id', 'country_group_id')
class CountryGroup(models.Model):
_name = 'country.group'
name = fields.Char()
country_ids = fields.Many2many("res.country", 'rel_country_group', 'country_group_id', 'country_id')
export_message = fields.Text(string="Export Message")
dual_box = fields.Boolean(string="Dual Box")
@api.model
def create(self, vals):
gpA = [1, 5]
gpB = [2, 3]
if vals['country_ids'].ids in gpA:
vals['name'] = 'Group A'
elif vals['country_ids'].ids in gpB:
vals['name'] = 'Group B'
...
return super(CountryGroup, self).create(vals)
在odoo v14中,您可以只检查many2many中的many2many,即list中的list在OdooV12中,您必须循环检查每个多个项目
if [x for x in vals['country_ids'].ids if x in gpA]:
vals['name'] = 'Group A'
elif [x for x in vals['country_ids'].ids if x in gpB]:
vals['name'] = 'Group B'
您需要添加一个取决于客户所在国家/地区的。