From 7a00e93ca9942e5720baa1f6fc7a50675c1f4b12 Mon Sep 17 00:00:00 2001
From: Simone Rubino
Date: Wed, 25 Sep 2024 15:04:43 +0200
Subject: [PATCH] [IMP] l10n_it_riba: Pay multiple lines at once
Also allow to set a date during payment and past due process
---
l10n_it_ricevute_bancarie/README.rst | 14 ++--
l10n_it_ricevute_bancarie/__manifest__.py | 1 +
l10n_it_ricevute_bancarie/models/riba.py | 51 ++++++++++--
l10n_it_ricevute_bancarie/readme/USAGE.rst | 12 ++-
.../security/ir.model.access.csv | 1 +
.../static/description/index.html | 13 +++-
.../tests/riba_common.py | 1 +
l10n_it_ricevute_bancarie/tests/test_riba.py | 76 ++++++++++++++++++
l10n_it_ricevute_bancarie/views/riba_view.xml | 4 +-
.../views/wizard_due_date_settlement.xml | 2 +
.../views/wizard_unsolved.xml | 1 +
l10n_it_ricevute_bancarie/wizard/__init__.py | 1 +
.../wizard/wizard_due_date_settlement.py | 10 ++-
.../wizard/wizard_riba_multiple_payment.py | 78 +++++++++++++++++++
.../wizard_riba_multiple_payment_views.xml | 46 +++++++++++
.../wizard/wizard_unsolved.py | 10 ++-
16 files changed, 294 insertions(+), 27 deletions(-)
create mode 100644 l10n_it_ricevute_bancarie/wizard/wizard_riba_multiple_payment.py
create mode 100644 l10n_it_ricevute_bancarie/wizard/wizard_riba_multiple_payment_views.xml
diff --git a/l10n_it_ricevute_bancarie/README.rst b/l10n_it_ricevute_bancarie/README.rst
index 8322221610eb..4e7c159085c4 100644
--- a/l10n_it_ricevute_bancarie/README.rst
+++ b/l10n_it_ricevute_bancarie/README.rst
@@ -7,7 +7,7 @@ ITA - Ricevute bancarie
!! This file is generated by oca-gen-addon-readme !!
!! changes will be overwritten. !!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
- !! source digest: sha256:100f1b7d1eb019a23cf3734dd6851726c6bb228961c00615be14977e5c7d470f
+ !! source digest: sha256:8e70b2caa85bc9320745588e56ff493847d8f8f11304c626249a3544e36cf536
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
.. |badge1| image:: https://img.shields.io/badge/maturity-Beta-yellow.png
@@ -108,10 +108,14 @@ esposizione, cioè l'importo dovuto dal cliente a fronte dell'emissione
della RiBa non ancora scaduta.
In maniera predefinita la data delle registrazioni dei pagamenti viene
-impostata con la data di scadenza della RiBa, ma è possibile modificarla
-successivamente a pagamento effettivamente avvenuto selezionando la
-registrazione dalla vista ed elenco ed eseguendo l'azione "Imposta data
-di pagamento RiBa".
+impostata con la data di scadenza della RiBa, ma è possibile modificarla in due momenti:
+- durante la creazione del pagamento,
+ cliccando su "Segna righe come pagate" o su "Segna coma pagata"
+ o usando l'azione "Registrazione Riba a data di scadenza"
+ e indicando una data nel campo `Data pagamento`,
+- successivamente a pagamento effettivamente avvenuto selezionando la selezionando la
+ registrazione dalla vista ed elenco ed eseguendo l'azione "Imposta data
+ di pagamento RiBa".
Known issues / Roadmap
======================
diff --git a/l10n_it_ricevute_bancarie/__manifest__.py b/l10n_it_ricevute_bancarie/__manifest__.py
index a0974bdad241..7ae2aaf3434a 100644
--- a/l10n_it_ricevute_bancarie/__manifest__.py
+++ b/l10n_it_ricevute_bancarie/__manifest__.py
@@ -43,6 +43,7 @@
"views/riba_detail_view.xml",
"views/wizard_presentation.xml",
"views/wizard_due_date_settlement.xml",
+ "wizard/wizard_riba_multiple_payment_views.xml",
],
"demo": ["demo/riba_demo.xml"],
"installable": True,
diff --git a/l10n_it_ricevute_bancarie/models/riba.py b/l10n_it_ricevute_bancarie/models/riba.py
index 20c6df79a8a7..c29767be5508 100644
--- a/l10n_it_ricevute_bancarie/models/riba.py
+++ b/l10n_it_ricevute_bancarie/models/riba.py
@@ -95,7 +95,16 @@ def _compute_total_amount(self):
)
date_accepted = fields.Date("Acceptance Date")
date_accreditation = fields.Date("Credit Date")
- date_paid = fields.Date("Payment Date", readonly=True)
+ date_paid = fields.Date(
+ string="Payment Date",
+ help="Default date for payments.",
+ readonly=True,
+ states={
+ "credited": [
+ ("readonly", False),
+ ],
+ },
+ )
date_unsolved = fields.Date("Past Due Date", readonly=True)
company_id = fields.Many2one(
"res.company",
@@ -187,10 +196,18 @@ def riba_cancel(self):
distinta.state = "cancel"
def settle_all_line(self):
- for riba_list in self:
- for line in riba_list.line_ids:
- if line.state == "accredited":
- line.riba_line_settlement()
+ payment_wizard_action = (
+ self.env["riba.payment.multiple"]
+ .with_context(
+ active_ids=self.ids,
+ )
+ .get_formview_action()
+ )
+ payment_wizard_action.update(
+ name=_("Settle lines"),
+ target="new",
+ )
+ return payment_wizard_action
@api.onchange("date_accepted", "date_accreditation")
def _onchange_date(self):
@@ -475,7 +492,26 @@ def confirm(self):
if not line.distinta_id.date_accepted:
line.distinta_id.date_accepted = fields.Date.context_today(self)
- def riba_line_settlement(self):
+ def button_settle(self):
+ payment_wizard_action = (
+ self.env["riba.payment.multiple"]
+ .with_context(
+ active_ids=self.slip_id.ids,
+ default_riba_line_ids=self.ids,
+ )
+ .get_formview_action()
+ )
+ payment_wizard_action.update(
+ name=_("Settle line"),
+ target="new",
+ )
+ return payment_wizard_action
+
+ def riba_line_settlement(self, date=None):
+ """Create payment the acceptance move of each line in `self`.
+
+ :param date: The created payment's date.
+ """
for riba_line in self:
if not riba_line.distinta_id.config_id.settlement_journal_id:
raise UserError(_("Please define a Settlement Journal."))
@@ -498,12 +534,13 @@ def riba_line_settlement(self):
riba_line.distinta_id.name,
riba_line.partner_id.name,
)
+ move_date = date or riba_line.due_date.strftime("%Y-%m-%d")
settlement_move = move_model.create(
{
"journal_id": (
riba_line.distinta_id.config_id.settlement_journal_id.id
),
- "date": riba_line.due_date.strftime("%Y-%m-%d"),
+ "date": move_date,
"ref": move_ref,
}
)
diff --git a/l10n_it_ricevute_bancarie/readme/USAGE.rst b/l10n_it_ricevute_bancarie/readme/USAGE.rst
index 2f49be5d4780..ae6d04a5a880 100644
--- a/l10n_it_ricevute_bancarie/readme/USAGE.rst
+++ b/l10n_it_ricevute_bancarie/readme/USAGE.rst
@@ -27,7 +27,11 @@ esposizione, cioè l'importo dovuto dal cliente a fronte dell'emissione
della RiBa non ancora scaduta.
In maniera predefinita la data delle registrazioni dei pagamenti viene
-impostata con la data di scadenza della RiBa, ma è possibile modificarla
-successivamente a pagamento effettivamente avvenuto selezionando la
-registrazione dalla vista ed elenco ed eseguendo l'azione "Imposta data
-di pagamento RiBa".
+impostata con la data di scadenza della RiBa, ma è possibile modificarla in due momenti:
+- durante la creazione del pagamento,
+ cliccando su "Segna righe come pagate" o su "Segna coma pagata"
+ o usando l'azione "Registrazione Riba a data di scadenza"
+ e indicando una data nel campo `Data pagamento`,
+- successivamente a pagamento effettivamente avvenuto selezionando la selezionando la
+ registrazione dalla vista ed elenco ed eseguendo l'azione "Imposta data
+ di pagamento RiBa".
diff --git a/l10n_it_ricevute_bancarie/security/ir.model.access.csv b/l10n_it_ricevute_bancarie/security/ir.model.access.csv
index 1541f9c851ff..ef68d1d86c78 100644
--- a/l10n_it_ricevute_bancarie/security/ir.model.access.csv
+++ b/l10n_it_ricevute_bancarie/security/ir.model.access.csv
@@ -20,3 +20,4 @@ access_riba_file_export,riba_file_export,model_riba_file_export,account.group_ac
access_presentation_riba_issue,access_presentation_riba_issue,model_presentation_riba_issue,account.group_account_invoice,1,1,1,1
access_riba_due_date_settlement,riba_due_date_settlement,model_riba_due_date_settlement,account.group_account_invoice,1,1,1,1
access_riba_payment_date,riba_payment_date,model_riba_payment_date,account.group_account_invoice,1,1,1,1
+access_riba_multiple_payment_date,Full access to Pay multiple RiBa lines,model_riba_payment_multiple,account.group_account_invoice,1,1,1,1
diff --git a/l10n_it_ricevute_bancarie/static/description/index.html b/l10n_it_ricevute_bancarie/static/description/index.html
index 8949ec3ba7fd..d7d543fb2e45 100644
--- a/l10n_it_ricevute_bancarie/static/description/index.html
+++ b/l10n_it_ricevute_bancarie/static/description/index.html
@@ -448,9 +448,16 @@
In maniera predefinita la data delle registrazioni dei pagamenti viene
impostata con la data di scadenza della RiBa, ma è possibile modificarla
-successivamente a pagamento effettivamente avvenuto selezionando la
-registrazione dalla vista ed elenco ed eseguendo l’azione “Imposta data
-di pagamento RiBa”.
+in due momenti:
+
+
durante la creazione del pagamento, cliccando su “Segna righe come
+pagate” o su “Segna coma pagata” o usando l’azione “Registrazione
+Riba a data di scadenza” e indicando una data nel campo
+Data pagamento,
+
successivamente a pagamento effettivamente avvenuto selezionando la
+registrazione dalla vista ed elenco ed eseguendo l’azione “Imposta
+data di pagamento RiBa”.