Skip to content

Commit

Permalink
Merge PR #777 into 14.0
Browse files Browse the repository at this point in the history
Signed-off-by alexis-via
  • Loading branch information
OCA-git-bot committed Jun 6, 2023
2 parents 43a569c + 49fd274 commit 324508c
Show file tree
Hide file tree
Showing 3 changed files with 33 additions and 10 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -46,13 +46,14 @@ class AccountInvoiceImportSimplePdfInvoiceNumber(models.Model):
def _string_type_sel(self):
return [
("fixed", "Fixed"),
("letter_upper", "Upper Letter"),
("letter_lower", "Lower Letter"),
("digit", "Digit(s)"),
("space", "Space"),
("year2", "Year on 2 digits"),
("year4", "Year on 4 digits"),
("month", "Month (2 digits)"),
("digit", "Digit(s)"),
("letter_upper", "Upper Letter"),
("letter_lower", "Lower Letter"),
("char", "Any Character"),
("space", "Space"),
]

@api.constrains("string_type", "fixed_char", "occurrence_min", "occurrence_max")
Expand All @@ -62,7 +63,13 @@ def _check_invoice_number_format(self):
fixed_char_stripped = rec.fixed_char and rec.fixed_char.strip()
if not fixed_char_stripped:
raise ValidationError(_("Missing fixed char."))
elif rec.string_type in ("letter_upper", "letter_lower", "digit", "space"):
elif rec.string_type in (
"letter_upper",
"letter_lower",
"digit",
"char",
"space",
):
if rec.occurrence_max < rec.occurrence_min:
raise ValidationError(
_(
Expand All @@ -84,10 +91,17 @@ def _prepare_invoice_number_regex(self, regex_list):
"letter_lower": "[a-z]",
"digit": r"\d",
"space": r"\s",
"char": r"\w",
}
if self.string_type == "fixed":
regex_list.append(regex.escape(self.fixed_char.strip()))
elif self.string_type in ("letter_upper", "letter_lower", "digit", "space"):
elif self.string_type in (
"letter_upper",
"letter_lower",
"digit",
"char",
"space",
):
if self.occurrence_min == self.occurrence_max:
suffix = "{%d}" % self.occurrence_min
else:
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -490,6 +490,15 @@ def test_invoice_number_parsing(self):
{"string_type": "fixed", "fixed_char": "1J"},
{"string_type": "month"},
],
# Test inspired by supermetrics.com invoice number style
"txn_3Myqaj2mjH4XVMmx1J6MxTcZ": [
{"string_type": "fixed", "fixed_char": "txn_3"},
{
"string_type": "char",
"occurrence_min": 22,
"occurrence_max": 24,
},
],
}
for src, config_list in inv_num_test.items():
raw_txt = "Invoice number: %s dated 20/08/2020" % src
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -26,11 +26,11 @@
/>
<field
name="occurrence_min"
attrs="{'required': [('string_type', 'in', ('letter_upper', 'letter_lower', 'digit', 'space'))], 'invisible': [('string_type', 'not in', ('letter_upper', 'letter_lower', 'digit', 'space'))]}"
attrs="{'required': [('string_type', 'in', ('letter_upper', 'letter_lower', 'digit', 'char', 'space'))], 'invisible': [('string_type', 'not in', ('letter_upper', 'letter_lower', 'digit', 'char', 'space'))]}"
/>
<field
name="occurrence_max"
attrs="{'required': [('string_type', 'in', ('letter_upper', 'letter_lower', 'digit', 'space'))], 'invisible': [('string_type', 'not in', ('letter_upper', 'letter_lower', 'digit', 'space'))]}"
attrs="{'required': [('string_type', 'in', ('letter_upper', 'letter_lower', 'digit', 'char', 'space'))], 'invisible': [('string_type', 'not in', ('letter_upper', 'letter_lower', 'digit', 'char', 'space'))]}"
/>
</group>
</form>
Expand All @@ -53,11 +53,11 @@
/>
<field
name="occurrence_min"
attrs="{'required': [('string_type', 'in', ('letter_upper', 'letter_lower', 'digit', 'space'))], 'invisible': [('string_type', 'not in', ('letter_upper', 'letter_lower', 'digit', 'space'))]}"
attrs="{'required': [('string_type', 'in', ('letter_upper', 'letter_lower', 'digit', 'char', 'space'))], 'invisible': [('string_type', 'not in', ('letter_upper', 'letter_lower', 'digit', 'char', 'space'))]}"
/>
<field
name="occurrence_max"
attrs="{'required': [('string_type', 'in', ('letter_upper', 'letter_lower', 'digit', 'space'))], 'invisible': [('string_type', 'not in', ('letter_upper', 'letter_lower', 'digit', 'space'))]}"
attrs="{'required': [('string_type', 'in', ('letter_upper', 'letter_lower', 'digit', 'char', 'space'))], 'invisible': [('string_type', 'not in', ('letter_upper', 'letter_lower', 'digit', 'char', 'space'))]}"
/>
</tree>
</field>
Expand Down

0 comments on commit 324508c

Please sign in to comment.