我不懂普通波兰语符号(NPN或PN)。如何在Odoo中建立一个复杂的域?

浏览:41日期:2024-03-09
如何解决我不懂普通波兰语符号(NPN或PN)。如何在Odoo中建立一个复杂的域??

我完全同意您的观点,每次我必须使用这种波兰语符号来完成一个复杂的领域时,我都必须下定决心来管理它。

我认为您要查找的域是:

[’&’, ’|’, ’&’, (’is_company’, ’=’, True), (’parent_id’, ’=’, False), (’company_name’, ’!=’, False), ’&’, (’company_name’, ’!=’, ’’), (’customer_type_id’, ’!=’, False)]

我制定了一种获取这些复杂域的方法,并且可以正常工作:

首先,我写一封信,而不是写每个条件:

A => is_company = True => (’is_company’, ’=’, True)B => parent_id = False => (’parent_id’, ’=’, False)C => company_name <> False => (’company_name’, ’!=’, False)D => company_name <> ’’ => (’company_name’, ’!=’, ’’)E => customer_type_id <> False => (’customer_type_id’, ’!=’, False)

然后,仅使用字母和标准运算符来构建所需的表达式,而无需考虑波兰语符号和条件:

Step 0. => ((A and B) or C) and D and E

然后,将您应该首先执行的操作分组(暂时不要担心丢失的运算符):

Step 1. => ((A and B) or C) and D and EStep 2. => (AB or C) and D and EStep 3. => ABC and D and EStep 4. => ABC and DE

现在我们只有一个运算符,让我们开始重新分解(并将运算符移到每对条件的左侧),然后按照将操作分组的相反顺序(例如,从步骤3到步骤4分组DE,所以现在从第4步到第3步,分解DE并将其运算符移到左侧):

Step 4. => and ABC DEStep 3. => and ABC and D EStep 2. => and or AB C and D EStep 1. => and or and A B C and D E

现在更改运算符,并添加逗号,引号和括号:

[’&amp;’, ’|’, ’&amp;’, A, B, C, ’&amp;’, D, E]

最后,将字母替换为条件,然后您便拥有了域。最好面对面解释它,但也许您能够理解所有内容。

注意:我不会删除&amp;运算符(即使您不编写运算符,odoo也会默认使用它们),因为我的经验是在最大的域中,如果不编写&amp;,则该域无效。我猜这是在存在许多嵌套条件的情况下发生的,但是我的建议是始终编写它们。

解决方法

有人可以将以下波兰语表示法转换为与其对应的SQL:

[’|’,’&amp;’,(’is_company’,’=’,True),(’parent_id’,False),(’company_name’,’!=’,’’)]

我的猜测是:

is_company = True OR parent_id = False AND company_name <> False ANDcompany_name <> ’’

无论我多么努力地理解它,我都无法理解这种表示法的概念。请帮忙。

更新

我试图将上述表示法扩展为:

((is_company = True AND parent_id = False) OR company_name <> False) ANDcompany_name <> ’’ AND customer_type_id <> False

相关文章: