Skip to content

Commit

Permalink
[14.0][l10n_it_intrastat_statement] Code optimization to remove unnec…
Browse files Browse the repository at this point in the history
…essary triple for loop when generating the statement
  • Loading branch information
robyf70 committed Jan 23, 2024
1 parent 2ec01ab commit 5b062cf
Showing 1 changed file with 31 additions and 24 deletions.
55 changes: 31 additions & 24 deletions l10n_it_intrastat_statement/models/intrastat_statement.py
Original file line number Diff line number Diff line change
Expand Up @@ -779,33 +779,40 @@ def compute_statement(self):
inv_type += ["in_invoice", "in_refund"]
domain.append(("move_type", "in", inv_type))

statement_data = dict()
statement_data = {}
section_field_reverse = {}
for section_type in ["purchase", "sale"]:
for section_number in range(1, 5):
statement_section_field = self.get_section_field_name(
section_type, section_number
)
statement_data[statement_section_field] = list()
section_field_reverse['{}_s{}'.format(section_type,
section_number)] = (section_type, section_number)

invoices = self.env["account.move"].search(domain)

for inv_intra_line in invoices.mapped("intrastat_line_ids"):
for section_type in ["purchase", "sale"]:
for section_number in range(1, 5):
section_details = (section_type, section_number)
statement_section = "%s_s%s" % section_details
if inv_intra_line.statement_section != statement_section:
continue
statement_section_model_name = self.get_section_model(
*section_details
)
st_line = self.env[
statement_section_model_name
]._prepare_statement_line(inv_intra_line, self)
if not st_line:
continue
statement_section_field = self.get_section_field_name(
*section_details
)
if statement_section_field not in statement_data:
statement_data[statement_section_field] = list()
st_line["sequence"] = (
len(statement_data[statement_section_field]) + 1
)
statement_data[statement_section_field].append((0, 0, st_line))
section_details = section_field_reverse[
inv_intra_line.statement_section
]
statement_section_model_name = self.get_section_model(
*section_details
)
st_line = self.env[
statement_section_model_name
]._prepare_statement_line(inv_intra_line, self)
if not st_line:
continue

Check warning on line 806 in l10n_it_intrastat_statement/models/intrastat_statement.py

View check run for this annotation

Codecov / codecov/patch

l10n_it_intrastat_statement/models/intrastat_statement.py#L806

Added line #L806 was not covered by tests
statement_section_field = self.get_section_field_name(
*section_details
)
if statement_section_field not in statement_data:
statement_data[statement_section_field] = list()

Check warning on line 811 in l10n_it_intrastat_statement/models/intrastat_statement.py

View check run for this annotation

Codecov / codecov/patch

l10n_it_intrastat_statement/models/intrastat_statement.py#L811

Added line #L811 was not covered by tests
st_line["sequence"] = (
len(statement_data[statement_section_field]) + 1
)
statement_data[statement_section_field].append((0, 0, st_line))

self.write(statement_data)
# Group refund to sale lines if they have the same period of ref
Expand Down

0 comments on commit 5b062cf

Please sign in to comment.