Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion l10n_it_riba_oca/__manifest__.py
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@
"account_due_list",
"base_iban",
"l10n_it_abicab",
"l10n_it_edi",
"l10n_it_edi_related_document",
"account_payment_term_extension",
],
"data": [
Expand Down
21 changes: 19 additions & 2 deletions l10n_it_riba_oca/models/riba.py
Original file line number Diff line number Diff line change
Expand Up @@ -283,8 +283,25 @@ def _compute_line_values(self):
amount = fields.Float(compute="_compute_line_values")
invoice_date = fields.Char(compute="_compute_line_values", size=256)
invoice_number = fields.Char(compute="_compute_line_values", size=256)
cig = fields.Char(string="CIG", size=256)
cup = fields.Char(string="CUP", size=256)
cig = fields.Char(compute="_compute_cig_cup_values", string="CIG", size=256)
cup = fields.Char(compute="_compute_cig_cup_values", string="CUP", size=256)

def _compute_cig_cup_values(self):
for line in self:
line.cig = ""
line.cup = ""
related_documents = line.mapped(
"move_line_ids.move_line_id.move_id.related_document_ids"
)

for related_document in related_documents:
if related_document.cup:
line.cup = str(related_document.cup)
if related_document.cig:
line.cig = str(related_document.cig)
# Stop if at least one value is found
if line.cup or line.cig:
break

sequence = fields.Integer("Number")
move_line_ids = fields.One2many(
Expand Down
4 changes: 4 additions & 0 deletions l10n_it_riba_oca/readme/USAGE.md
Original file line number Diff line number Diff line change
Expand Up @@ -33,3 +33,7 @@ impostata con la data di scadenza della RiBa, ma è possibile modificarla in due
- successivamente a pagamento effettivamente avvenuto selezionando la
registrazione dalla vista ed elenco ed eseguendo l'azione "Imposta data
di pagamento RiBa".

Non è possibile emettere Riba per fatture verso Enti che richiedono più di un CIG e un CUP differenti per fattura.
In questo caso particolare, emettere più fatture.
Non è possibile raggruppare Riba in fase di emissione se le fatture contengono CIG e CUP differenti. Verrà creata una riga di distinta per ogni fattura.
43 changes: 43 additions & 0 deletions l10n_it_riba_oca/tests/test_riba.py
Original file line number Diff line number Diff line change
Expand Up @@ -455,6 +455,18 @@ def test_riba_fatturapa(self):
},
)
],
"related_document_ids": [
(
0,
0,
{
"type": "order",
"name": "SO1232",
"cig": "7987210EG5",
"cup": "H71N17000690124",
},
)
],
}
)
invoice._onchange_riba_partner_bank_id()
Expand All @@ -472,8 +484,12 @@ def test_riba_fatturapa(self):
riba_list_id = action and action["res_id"] or False
riba_list = self.slip_model.browse(riba_list_id)
riba_list.confirm()
self.assertEqual(riba_list.line_ids[0].cig, "7987210EG5")
self.assertEqual(riba_list.line_ids[0].cup, "H71N17000690124")
wizard_riba_export = self.env["riba.file.export"].create({})
wizard_riba_export.with_context(active_ids=[riba_list.id]).act_getfile()
riba_txt = base64.decodebytes(wizard_riba_export.riba_txt)
self.assertTrue(b"CIG: 7987210EG5 CUP: H71N17000690124" in riba_txt)
# Assert
file_content = base64.decodebytes(wizard_riba_export.riba_txt).decode()
self.assertNotIn("INV/2025/00004", file_content)
Expand Down Expand Up @@ -508,6 +524,18 @@ def test_riba_fatturapa_group(self):
},
)
],
"related_document_ids": [
(
0,
0,
{
"type": "order",
"name": "SO1232",
"cig": "7987210EG5",
"cup": "H71N17000690124",
},
)
],
}
)
invoice._onchange_riba_partner_bank_id()
Expand All @@ -533,6 +561,18 @@ def test_riba_fatturapa_group(self):
},
)
],
"related_document_ids": [
(
0,
0,
{
"type": "order",
"name": "SO1232",
"cig": "7987210EG5",
"cup": "H71N17000690125",
},
)
],
}
)
invoice1._onchange_riba_partner_bank_id()
Expand All @@ -556,6 +596,9 @@ def test_riba_fatturapa_group(self):
self.assertTrue(len(riba_list.line_ids), 2)
wizard_riba_export = self.env["riba.file.export"].create({})
wizard_riba_export.with_context(active_ids=[riba_list.id]).act_getfile()
riba_txt = base64.decodebytes(wizard_riba_export.riba_txt)
self.assertTrue(b"CIG: 7987210EG5 CUP: H71N17000690124" in riba_txt)
self.assertTrue(b"CIG: 7987210EG5 CUP: H71N17000690125" in riba_txt)
# Assert
file_content = base64.decodebytes(wizard_riba_export.riba_txt).decode()
self.assertNotIn("INV/2025/00008", file_content)
Expand Down
6 changes: 2 additions & 4 deletions l10n_it_riba_oca/wizard/wizard_riba_file_export.py
Original file line number Diff line number Diff line change
Expand Up @@ -392,10 +392,8 @@ def act_getfile(self):
unidecode(line.partner_id.ref and line.partner_id.ref[:16] or ""),
unidecode(line.invoice_number[:40]),
line.invoice_date,
unidecode(f"CIG: {line.cig if line.cig else ''} "),
"",
unidecode(f"CUP: {line.cup if line.cup else ''} "),
"",
unidecode(f"CIG: {line.cig} " if line.cig else ""),
unidecode(f"CUP: {line.cup} " if line.cup else ""),
]
array_riba.append(riba)

Expand Down
12 changes: 10 additions & 2 deletions l10n_it_riba_oca/wizard/wizard_riba_issue.py
Original file line number Diff line number Diff line change
Expand Up @@ -62,7 +62,15 @@ def create_rdl(
self.env._("It is possible to issue C/O for posted move only!")
)
do_group_riba = True
if len({f"{x.l10n_it_cig}{x.l10n_it_cup}" for x in move_lines.move_id}) > 1:
if (
len(
{
f"{x.cig}{x.cup}"
for x in move_lines.mapped("move_id.related_document_ids")
}
)
> 1
):
do_group_riba = False
if do_group_riba:
for move_line in move_lines:
Expand Down Expand Up @@ -90,7 +98,7 @@ def create_rdl(
invoice=move_line.move_id.name,
)
)
if move_line.partner_id.group_riba: # and do_group_riba:
if move_line.partner_id.group_riba and do_group_riba:
for key in grouped_lines:
if (
key[0] == move_line.partner_id.id
Expand Down