[FIX] account: Fix matching rules with empty communication

The way to find a matching about structured communication is done by:
1 - making a filter to keep only numerical values.
2 - splitting the result into array.
3 - finding an intersect between the sets.

For example,
"Payment about +++123/456789+++ and +++987/654321+++" is matching "123456789 blablabla"?
1 - "123456789 987654321" is matching "123456789" ?
2 - ["123456789", "987654321"] is matching ["123456789"]
3 - YES because "123456789" intersects both sets.

This commit is about the check is always TRUE when both sets are empty.
In this specific case, the result must be FALSE.

-opw: 2008299

closes odoo/odoo#34115

Signed-off-by: Nicolas Martinelli (nim) <nim@odoo.com>
This commit is contained in:
Laurent Smet
2019-06-14 07:28:41 +00:00
parent ae48324aee
commit 94dc2fe5f7
@@ -442,6 +442,8 @@ class AccountReconcileModel(models.Model):
(
line_partner.partner_id = 0
AND
TRIM(REGEXP_REPLACE(st_line.name, '[^0-9|^\s]', '', 'g')) != ''
AND
(
regexp_split_to_array(TRIM(REGEXP_REPLACE(move.name, '[^0-9|^\s]', '', 'g')),'\s+')
&& regexp_split_to_array(TRIM(REGEXP_REPLACE(st_line.name, '[^0-9|^\s]', '', 'g')), '\s+')