Skip to content

Commit 142baa1

Browse files
committed
[UPD] l10n_it_account: aggiornata PR OCA#4555
1 parent 78fbead commit 142baa1

2 files changed

Lines changed: 108 additions & 58 deletions

File tree

l10n_it_account/__manifest__.py

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,6 @@
2121
"account_tax_balance",
2222
"date_range",
2323
"web",
24-
"l10n_it",
2524
],
2625
"data": [
2726
"views/account_menuitem.xml",

l10n_it_account/migrations/18.0.1.0.0/post-migration.py

Lines changed: 108 additions & 57 deletions
Original file line numberDiff line numberDiff line change
@@ -12,110 +12,161 @@
1212
]
1313

1414

15-
def rename_fields(env, table, field_updates):
15+
def rename_fields(env, table, field_updates, condition=None):
1616
"""Generic function to rename fields."""
17-
set_clauses = ", ".join(
18-
f"{target_field} = {source_field}"
19-
for target_field, source_field in field_updates.items()
17+
set_clauses = sql.SQL(", ").join(
18+
sql.SQL("{} = {}").format(sql.Identifier(target), sql.Identifier(source))
19+
for target, source in field_updates.items()
2020
)
21-
query = f"""
22-
UPDATE
23-
{table}
24-
SET
25-
{set_clauses}
26-
"""
27-
openupgrade.logged_query(env.cr, sql.SQL(query))
21+
query = sql.SQL("""
22+
UPDATE {table}
23+
SET {set_clauses}
24+
""").format(table=sql.Identifier(table), set_clauses=set_clauses)
25+
if condition:
26+
query += sql.SQL(" WHERE {} ").format(sql.SQL(condition))
27+
openupgrade.logged_query(env.cr, query)
2828

2929

3030
def update_table(env, target_table, source_table, field_updates, condition):
3131
"""Generic function to update fields in a table based on a join."""
32-
set_clauses = ", ".join(
33-
f"{target_field} = {source_table}.{source_field}"
34-
for target_field, source_field in field_updates.items()
32+
set_clauses = sql.SQL(", ").join(
33+
sql.SQL("{} = {}.{}").format(
34+
sql.Identifier(target), sql.Identifier(source_table), sql.Identifier(source)
35+
)
36+
for target, source in field_updates.items()
37+
)
38+
query = sql.SQL("""
39+
UPDATE {target_table}
40+
SET {set_clauses}
41+
FROM {source_table}
42+
""").format(
43+
target_table=sql.Identifier(target_table),
44+
set_clauses=set_clauses,
45+
source_table=sql.Identifier(source_table),
3546
)
36-
query = f"""
37-
UPDATE
38-
{target_table}
39-
SET
40-
{set_clauses}
41-
FROM
42-
{source_table}
43-
"""
4447
if condition:
45-
query += f"""
46-
WHERE
47-
{condition}
48-
"""
49-
openupgrade.logged_query(env.cr, sql.SQL(query))
48+
query += sql.SQL(" WHERE {} ").format(sql.SQL(condition))
49+
openupgrade.logged_query(env.cr, query)
50+
51+
52+
def add_field_if_not_exists(env, table, field_name, field_type, module):
53+
"""Helper function to add fields if they do not exist."""
54+
if not openupgrade.column_exists(env.cr, table, field_name):
55+
sql_type_mapping = {
56+
"binary": "bytea",
57+
"boolean": "bool",
58+
"char": "varchar",
59+
"date": "date",
60+
"datetime": "timestamp",
61+
"float": "numeric",
62+
"html": "text",
63+
"integer": "int4",
64+
"many2many": False,
65+
"many2one": "int4",
66+
"many2one_reference": "int4",
67+
"monetary": "numeric",
68+
"one2many": False,
69+
"reference": "varchar",
70+
"selection": "varchar",
71+
"text": "text",
72+
"serialized": "text",
73+
}
74+
openupgrade.add_fields(
75+
env,
76+
[
77+
(
78+
field_name,
79+
table.replace("_", "."),
80+
table,
81+
field_type,
82+
sql_type_mapping[field_type],
83+
module,
84+
)
85+
],
86+
)
5087

5188

5289
def _l10n_it_account_tax_kind_migration(env):
53-
rename_fields(
54-
env,
55-
table="account_tax",
56-
field_updates={"l10n_it_law_reference": "law_reference"},
57-
)
90+
table = "account_tax"
91+
add_field_if_not_exists(env, table, "l10n_it_law_reference", "char", "l10n_it")
92+
rename_fields(env, table, {"l10n_it_law_reference": "law_reference"})
5893

94+
add_field_if_not_exists(env, table, "l10n_it_exempt_reason", "char", "l10n_it")
5995
condition = "account_tax.kind_id = account_tax_kind.id"
6096
condition += " AND account_tax.kind_id IS NOT NULL"
6197
update_table(
62-
env,
63-
target_table="account_tax",
64-
source_table="account_tax_kind",
65-
field_updates={"l10n_it_exempt_reason": "code"},
66-
condition=condition,
98+
env, table, "account_tax_kind", {"l10n_it_exempt_reason": "code"}, condition
6799
)
68100

69101

70102
def _l10n_it_fatturapa_migration(env):
103+
table = "res_partner"
104+
add_field_if_not_exists(env, table, "l10n_it_pa_index", "char", "l10n_it_edi")
105+
add_field_if_not_exists(env, table, "l10n_it_pec_email", "char", "l10n_it_edi")
71106
rename_fields(
72107
env,
73-
table="res_partner",
74-
field_updates={
108+
table,
109+
{
75110
"l10n_it_pa_index": "codice_destinatario",
76111
"l10n_it_pec_email": "pec_destinatario",
77112
},
78113
)
114+
115+
table = "res_company"
116+
add_field_if_not_exists(
117+
env, table, "l10n_it_tax_representative_partner_id", "many2one", "l10n_it_edi"
118+
)
79119
rename_fields(
80120
env,
81-
table="res_company",
82-
field_updates={
83-
"l10n_it_tax_representative_partner_id": "fatturapa_tax_representative",
84-
},
121+
table,
122+
{"l10n_it_tax_representative_partner_id": "fatturapa_tax_representative"},
85123
)
86124

87125

88126
def _l10n_it_fiscalcode_migration(env):
89-
rename_fields(
90-
env,
91-
table="res_partner",
92-
field_updates={"l10n_it_codice_fiscale": "fiscalcode"},
93-
)
127+
table = "res_partner"
128+
add_field_if_not_exists(env, table, "l10n_it_codice_fiscale", "char", "l10n_it_edi")
129+
rename_fields(env, table, {"l10n_it_codice_fiscale": "fiscalcode"})
94130

95131

96132
def _l10n_it_ipa_migration(env):
97-
rename_fields(
98-
env,
99-
table="res_partner",
100-
field_updates={"l10n_it_pa_index": "ipa_code"},
101-
)
133+
table = "res_partner"
134+
add_field_if_not_exists(env, table, "l10n_it_pa_index", "char", "l10n_it_edi")
135+
condition = "ipa_code IS NOT NULL"
136+
rename_fields(env, table, {"l10n_it_pa_index": "ipa_code"}, condition=condition)
102137

103138

104139
def _l10n_it_rea_migration(env):
140+
table = "res_company"
141+
add_field_if_not_exists(
142+
env, table, "l10n_it_eco_index_office", "many2one", "l10n_it_edi"
143+
)
144+
add_field_if_not_exists(
145+
env, table, "l10n_it_eco_index_number", "char", "l10n_it_edi"
146+
)
147+
add_field_if_not_exists(
148+
env, table, "l10n_it_eco_index_share_capital", "float", "l10n_it_edi"
149+
)
150+
add_field_if_not_exists(
151+
env, table, "l10n_it_eco_index_sole_shareholder", "selection", "l10n_it_edi"
152+
)
153+
add_field_if_not_exists(
154+
env, table, "l10n_it_eco_index_liquidation_state", "selection", "l10n_it_edi"
155+
)
105156
condition = "res_company.partner_id = res_partner.id"
106157
condition += " AND res_partner.rea_office IS NOT NULL"
107158
update_table(
108159
env,
109-
target_table="res_company",
110-
source_table="res_partner",
111-
field_updates={
160+
table,
161+
"res_partner",
162+
{
112163
"l10n_it_eco_index_office": "rea_office",
113164
"l10n_it_eco_index_number": "rea_code",
114165
"l10n_it_eco_index_share_capital": "rea_capital",
115166
"l10n_it_eco_index_sole_shareholder": "rea_member_type",
116167
"l10n_it_eco_index_liquidation_state": "rea_liquidation_state",
117168
},
118-
condition=condition,
169+
condition,
119170
)
120171

121172

0 commit comments

Comments
 (0)