diff --git a/l10n_it_riba/README.rst b/l10n_it_riba/README.rst
index b4423dc66814..2acd834b0288 100644
--- a/l10n_it_riba/README.rst
+++ b/l10n_it_riba/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:f183b89e0ff9f4553d6c9b7bf67496a1763367fdd85b99ce7fc0c3151ec78822
+ !! source digest: sha256:6571e91cba2411e3d9f9e72c7212131fd86c377b225ee6d94a6f637b36512391
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
.. |badge1| image:: https://img.shields.io/badge/maturity-Beta-yellow.png
@@ -46,9 +46,10 @@ Nella configurazione delle RiBa è possibile specificare se si tratti di
'Salvo buon fine' o 'Al dopo incasso', che hanno un flusso completamente
diverso.
-- Al dopo incasso: nessuna registrazione verrà effettuata
- automaticamente e le fatture risulteranno pagate solo al momento
- dell'effettivo incasso.
+- Al dopo incasso: le fatture risulteranno pagate all'accettazione;
+ l'incasso potrà essere registrato con una normale riconciliazione
+ bancaria, che andrà a chiudere gli "effetti attivi" aperti
+ all'accettazione.
- Salvo buon fine: le registrazioni generate seguiranno la struttura
descritta nel documento http://goo.gl/jpRhJp
@@ -97,6 +98,10 @@ presente sia sulla distinta che sulle sue righe.
La voce di menù 'Presentazione Riba' permette estrarre le riba fino al
raggiungimento dell'importo massimo inserito dall'utente.
+Nella lista delle fatture è presente una colonna per monitorare l'
+esposizione, cioè l'importo dovuto dal cliente a fronte dell'emissione
+della RiBa non ancora scaduta.
+
Known issues / Roadmap
======================
@@ -137,6 +142,12 @@ Contributors
- Simone Rubino
+- `TAKOBI `__:
+
+ - Simone Rubino
+
+- Nextev Srl
+
Maintainers
-----------
diff --git a/l10n_it_riba/__manifest__.py b/l10n_it_riba/__manifest__.py
index ab3e2564edc5..69e27b281a11 100644
--- a/l10n_it_riba/__manifest__.py
+++ b/l10n_it_riba/__manifest__.py
@@ -10,7 +10,7 @@
{
"name": "ITA - Ricevute bancarie",
- "version": "16.0.1.2.3",
+ "version": "16.0.1.5.0",
"development_status": "Beta",
"author": "Odoo Community Association (OCA)",
"category": "Localization/Italy",
@@ -42,6 +42,7 @@
"views/slip_report.xml",
"views/riba_detail_view.xml",
"views/wizard_presentation.xml",
+ "views/wizard_due_date_settlement.xml",
],
"demo": ["demo/riba_demo.xml"],
"installable": True,
diff --git a/l10n_it_riba/i18n/it.po b/l10n_it_riba/i18n/it.po
index 56dc7e372e75..adc99e47d3c0 100644
--- a/l10n_it_riba/i18n/it.po
+++ b/l10n_it_riba/i18n/it.po
@@ -7,7 +7,7 @@ msgstr ""
"Project-Id-Version: Odoo Server 16.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2023-09-28 10:26+0000\n"
-"PO-Revision-Date: 2024-01-22 10:39+0000\n"
+"PO-Revision-Date: 2024-06-24 12:14+0000\n"
"Last-Translator: mymage \n"
"Language-Team: \n"
"Language: it\n"
@@ -200,6 +200,11 @@ msgstr "Conto effetti"
msgid "Bills Amount"
msgstr "Importo effetti"
+#. module: l10n_it_riba
+#: model:ir.actions.server,name:l10n_it_riba.action_wizard_riba_due_date_settlement
+msgid "C/O Due Date Settlement"
+msgstr "Registrazione Riba a data di scadenza"
+
#. module: l10n_it_riba
#: model:ir.model.fields,field_description:l10n_it_riba.field_riba_slip_line__cig
msgid "CIG"
@@ -212,6 +217,7 @@ msgstr "CUP"
#. module: l10n_it_riba
#: model_terms:ir.ui.view,arch_db:l10n_it_riba.riba_credit
+#: model_terms:ir.ui.view,arch_db:l10n_it_riba.riba_due_date_settlement
#: model_terms:ir.ui.view,arch_db:l10n_it_riba.riba_issue_view
#: model_terms:ir.ui.view,arch_db:l10n_it_riba.riba_past_due
#: model_terms:ir.ui.view,arch_db:l10n_it_riba.view_riba_slip_form
@@ -273,6 +279,11 @@ msgstr "Configurazione"
msgid "Configuration parameters for RiBa"
msgstr "Parametri di configurazione Riba"
+#. module: l10n_it_riba
+#: model_terms:ir.ui.view,arch_db:l10n_it_riba.riba_due_date_settlement
+msgid "Confirm"
+msgstr "Conferma"
+
#. module: l10n_it_riba
#: model:ir.model.fields.selection,name:l10n_it_riba.selection__riba_slip_line__state__confirmed
#: model_terms:ir.ui.view,arch_db:l10n_it_riba.view_detail_riba_filter
@@ -296,6 +307,7 @@ msgstr "Crea"
#: model:ir.model.fields,field_description:l10n_it_riba.field_presentation_riba_issue__create_uid
#: model:ir.model.fields,field_description:l10n_it_riba.field_riba_configuration__create_uid
#: model:ir.model.fields,field_description:l10n_it_riba.field_riba_credit__create_uid
+#: model:ir.model.fields,field_description:l10n_it_riba.field_riba_due_date_settlement__create_uid
#: model:ir.model.fields,field_description:l10n_it_riba.field_riba_file_export__create_uid
#: model:ir.model.fields,field_description:l10n_it_riba.field_riba_issue__create_uid
#: model:ir.model.fields,field_description:l10n_it_riba.field_riba_past_due__create_uid
@@ -309,6 +321,7 @@ msgstr "Creato da"
#: model:ir.model.fields,field_description:l10n_it_riba.field_presentation_riba_issue__create_date
#: model:ir.model.fields,field_description:l10n_it_riba.field_riba_configuration__create_date
#: model:ir.model.fields,field_description:l10n_it_riba.field_riba_credit__create_date
+#: model:ir.model.fields,field_description:l10n_it_riba.field_riba_due_date_settlement__create_date
#: model:ir.model.fields,field_description:l10n_it_riba.field_riba_file_export__create_date
#: model:ir.model.fields,field_description:l10n_it_riba.field_riba_issue__create_date
#: model:ir.model.fields,field_description:l10n_it_riba.field_riba_past_due__create_date
@@ -433,6 +446,7 @@ msgstr "Dettaglio"
#: model:ir.model.fields,field_description:l10n_it_riba.field_presentation_riba_issue__display_name
#: model:ir.model.fields,field_description:l10n_it_riba.field_riba_configuration__display_name
#: model:ir.model.fields,field_description:l10n_it_riba.field_riba_credit__display_name
+#: model:ir.model.fields,field_description:l10n_it_riba.field_riba_due_date_settlement__display_name
#: model:ir.model.fields,field_description:l10n_it_riba.field_riba_file_export__display_name
#: model:ir.model.fields,field_description:l10n_it_riba.field_riba_issue__display_name
#: model:ir.model.fields,field_description:l10n_it_riba.field_riba_past_due__display_name
@@ -451,6 +465,7 @@ msgid "Draft"
msgstr "Bozza"
#. module: l10n_it_riba
+#: model:ir.model.fields,field_description:l10n_it_riba.field_riba_due_date_settlement__due_date
#: model:ir.model.fields,field_description:l10n_it_riba.field_riba_slip_line__due_date
#: model_terms:ir.ui.view,arch_db:l10n_it_riba.slip_qweb
msgid "Due Date"
@@ -552,6 +567,7 @@ msgstr "IBAN"
#: model:ir.model.fields,field_description:l10n_it_riba.field_presentation_riba_issue__id
#: model:ir.model.fields,field_description:l10n_it_riba.field_riba_configuration__id
#: model:ir.model.fields,field_description:l10n_it_riba.field_riba_credit__id
+#: model:ir.model.fields,field_description:l10n_it_riba.field_riba_due_date_settlement__id
#: model:ir.model.fields,field_description:l10n_it_riba.field_riba_file_export__id
#: model:ir.model.fields,field_description:l10n_it_riba.field_riba_issue__id
#: model:ir.model.fields,field_description:l10n_it_riba.field_riba_past_due__id
@@ -683,6 +699,7 @@ msgstr "Lasciare vuoto per utilizzare la data corrente."
#: model:ir.model.fields,field_description:l10n_it_riba.field_presentation_riba_issue____last_update
#: model:ir.model.fields,field_description:l10n_it_riba.field_riba_configuration____last_update
#: model:ir.model.fields,field_description:l10n_it_riba.field_riba_credit____last_update
+#: model:ir.model.fields,field_description:l10n_it_riba.field_riba_due_date_settlement____last_update
#: model:ir.model.fields,field_description:l10n_it_riba.field_riba_file_export____last_update
#: model:ir.model.fields,field_description:l10n_it_riba.field_riba_issue____last_update
#: model:ir.model.fields,field_description:l10n_it_riba.field_riba_past_due____last_update
@@ -696,6 +713,7 @@ msgstr "Ultima modifica il"
#: model:ir.model.fields,field_description:l10n_it_riba.field_presentation_riba_issue__write_uid
#: model:ir.model.fields,field_description:l10n_it_riba.field_riba_configuration__write_uid
#: model:ir.model.fields,field_description:l10n_it_riba.field_riba_credit__write_uid
+#: model:ir.model.fields,field_description:l10n_it_riba.field_riba_due_date_settlement__write_uid
#: model:ir.model.fields,field_description:l10n_it_riba.field_riba_file_export__write_uid
#: model:ir.model.fields,field_description:l10n_it_riba.field_riba_issue__write_uid
#: model:ir.model.fields,field_description:l10n_it_riba.field_riba_past_due__write_uid
@@ -709,6 +727,7 @@ msgstr "Ultimo aggiornamento di"
#: model:ir.model.fields,field_description:l10n_it_riba.field_presentation_riba_issue__write_date
#: model:ir.model.fields,field_description:l10n_it_riba.field_riba_configuration__write_date
#: model:ir.model.fields,field_description:l10n_it_riba.field_riba_credit__write_date
+#: model:ir.model.fields,field_description:l10n_it_riba.field_riba_due_date_settlement__write_date
#: model:ir.model.fields,field_description:l10n_it_riba.field_riba_file_export__write_date
#: model:ir.model.fields,field_description:l10n_it_riba.field_riba_issue__write_date
#: model:ir.model.fields,field_description:l10n_it_riba.field_riba_past_due__write_date
@@ -820,6 +839,7 @@ msgstr "Nessuna partita IVA o codice fiscale specificato per %(partner)s"
#. module: l10n_it_riba
#. odoo-python
#: code:addons/l10n_it_riba/wizard/wizard_credit.py:0
+#: code:addons/l10n_it_riba/wizard/wizard_due_date_settlement.py:0
#: code:addons/l10n_it_riba/wizard/wizard_past_due.py:0
#, python-format
msgid "No active ID found."
@@ -1198,6 +1218,11 @@ msgstr "RiBa da emettere"
msgid "RiBa configuration to be used."
msgstr "Configurazione RiBa da utilizzare."
+#. module: l10n_it_riba
+#: model:ir.model,name:l10n_it_riba.model_riba_due_date_settlement
+msgid "Riba Due Date Settlement"
+msgstr "Registrazione Riba a data di scadenza"
+
#. module: l10n_it_riba
#: model:ir.model.fields,field_description:l10n_it_riba.field_account_setup_bank_manual_config__codice_sia
#: model:ir.model.fields,field_description:l10n_it_riba.field_res_partner_bank__codice_sia
@@ -1302,6 +1327,13 @@ msgstr ""
"Questa procedura genera la registrazione contabile relativa all'accredito "
"ricevuto dalla banca"
+#. module: l10n_it_riba
+#: model_terms:ir.ui.view,arch_db:l10n_it_riba.riba_due_date_settlement
+msgid "This wizard will set 'Paid' all C/O details selected by due date"
+msgstr ""
+"Questa procedura guidata imposterà come \"Pagate\" tutte le righe dettaglio "
+"RiBa selezionate per data di scadenza"
+
#. module: l10n_it_riba
#: model_terms:ir.ui.view,arch_db:l10n_it_riba.riba_filter
msgid "To Reconcile"
diff --git a/l10n_it_riba/i18n/l10n_it_riba.pot b/l10n_it_riba/i18n/l10n_it_riba.pot
index b935797e0151..76eee19015eb 100644
--- a/l10n_it_riba/i18n/l10n_it_riba.pot
+++ b/l10n_it_riba/i18n/l10n_it_riba.pot
@@ -186,6 +186,11 @@ msgstr ""
msgid "Bills Amount"
msgstr ""
+#. module: l10n_it_riba
+#: model:ir.actions.server,name:l10n_it_riba.action_wizard_riba_due_date_settlement
+msgid "C/O Due Date Settlement"
+msgstr ""
+
#. module: l10n_it_riba
#: model:ir.model.fields,field_description:l10n_it_riba.field_riba_slip_line__cig
msgid "CIG"
@@ -198,6 +203,7 @@ msgstr ""
#. module: l10n_it_riba
#: model_terms:ir.ui.view,arch_db:l10n_it_riba.riba_credit
+#: model_terms:ir.ui.view,arch_db:l10n_it_riba.riba_due_date_settlement
#: model_terms:ir.ui.view,arch_db:l10n_it_riba.riba_issue_view
#: model_terms:ir.ui.view,arch_db:l10n_it_riba.riba_past_due
#: model_terms:ir.ui.view,arch_db:l10n_it_riba.view_riba_slip_form
@@ -257,6 +263,11 @@ msgstr ""
msgid "Configuration parameters for RiBa"
msgstr ""
+#. module: l10n_it_riba
+#: model_terms:ir.ui.view,arch_db:l10n_it_riba.riba_due_date_settlement
+msgid "Confirm"
+msgstr ""
+
#. module: l10n_it_riba
#: model:ir.model.fields.selection,name:l10n_it_riba.selection__riba_slip_line__state__confirmed
#: model_terms:ir.ui.view,arch_db:l10n_it_riba.view_detail_riba_filter
@@ -280,6 +291,7 @@ msgstr ""
#: model:ir.model.fields,field_description:l10n_it_riba.field_presentation_riba_issue__create_uid
#: model:ir.model.fields,field_description:l10n_it_riba.field_riba_configuration__create_uid
#: model:ir.model.fields,field_description:l10n_it_riba.field_riba_credit__create_uid
+#: model:ir.model.fields,field_description:l10n_it_riba.field_riba_due_date_settlement__create_uid
#: model:ir.model.fields,field_description:l10n_it_riba.field_riba_file_export__create_uid
#: model:ir.model.fields,field_description:l10n_it_riba.field_riba_issue__create_uid
#: model:ir.model.fields,field_description:l10n_it_riba.field_riba_past_due__create_uid
@@ -293,6 +305,7 @@ msgstr ""
#: model:ir.model.fields,field_description:l10n_it_riba.field_presentation_riba_issue__create_date
#: model:ir.model.fields,field_description:l10n_it_riba.field_riba_configuration__create_date
#: model:ir.model.fields,field_description:l10n_it_riba.field_riba_credit__create_date
+#: model:ir.model.fields,field_description:l10n_it_riba.field_riba_due_date_settlement__create_date
#: model:ir.model.fields,field_description:l10n_it_riba.field_riba_file_export__create_date
#: model:ir.model.fields,field_description:l10n_it_riba.field_riba_issue__create_date
#: model:ir.model.fields,field_description:l10n_it_riba.field_riba_past_due__create_date
@@ -416,6 +429,7 @@ msgstr ""
#: model:ir.model.fields,field_description:l10n_it_riba.field_presentation_riba_issue__display_name
#: model:ir.model.fields,field_description:l10n_it_riba.field_riba_configuration__display_name
#: model:ir.model.fields,field_description:l10n_it_riba.field_riba_credit__display_name
+#: model:ir.model.fields,field_description:l10n_it_riba.field_riba_due_date_settlement__display_name
#: model:ir.model.fields,field_description:l10n_it_riba.field_riba_file_export__display_name
#: model:ir.model.fields,field_description:l10n_it_riba.field_riba_issue__display_name
#: model:ir.model.fields,field_description:l10n_it_riba.field_riba_past_due__display_name
@@ -434,6 +448,7 @@ msgid "Draft"
msgstr ""
#. module: l10n_it_riba
+#: model:ir.model.fields,field_description:l10n_it_riba.field_riba_due_date_settlement__due_date
#: model:ir.model.fields,field_description:l10n_it_riba.field_riba_slip_line__due_date
#: model_terms:ir.ui.view,arch_db:l10n_it_riba.slip_qweb
msgid "Due Date"
@@ -535,6 +550,7 @@ msgstr ""
#: model:ir.model.fields,field_description:l10n_it_riba.field_presentation_riba_issue__id
#: model:ir.model.fields,field_description:l10n_it_riba.field_riba_configuration__id
#: model:ir.model.fields,field_description:l10n_it_riba.field_riba_credit__id
+#: model:ir.model.fields,field_description:l10n_it_riba.field_riba_due_date_settlement__id
#: model:ir.model.fields,field_description:l10n_it_riba.field_riba_file_export__id
#: model:ir.model.fields,field_description:l10n_it_riba.field_riba_issue__id
#: model:ir.model.fields,field_description:l10n_it_riba.field_riba_past_due__id
@@ -665,6 +681,7 @@ msgstr ""
#: model:ir.model.fields,field_description:l10n_it_riba.field_presentation_riba_issue____last_update
#: model:ir.model.fields,field_description:l10n_it_riba.field_riba_configuration____last_update
#: model:ir.model.fields,field_description:l10n_it_riba.field_riba_credit____last_update
+#: model:ir.model.fields,field_description:l10n_it_riba.field_riba_due_date_settlement____last_update
#: model:ir.model.fields,field_description:l10n_it_riba.field_riba_file_export____last_update
#: model:ir.model.fields,field_description:l10n_it_riba.field_riba_issue____last_update
#: model:ir.model.fields,field_description:l10n_it_riba.field_riba_past_due____last_update
@@ -678,6 +695,7 @@ msgstr ""
#: model:ir.model.fields,field_description:l10n_it_riba.field_presentation_riba_issue__write_uid
#: model:ir.model.fields,field_description:l10n_it_riba.field_riba_configuration__write_uid
#: model:ir.model.fields,field_description:l10n_it_riba.field_riba_credit__write_uid
+#: model:ir.model.fields,field_description:l10n_it_riba.field_riba_due_date_settlement__write_uid
#: model:ir.model.fields,field_description:l10n_it_riba.field_riba_file_export__write_uid
#: model:ir.model.fields,field_description:l10n_it_riba.field_riba_issue__write_uid
#: model:ir.model.fields,field_description:l10n_it_riba.field_riba_past_due__write_uid
@@ -691,6 +709,7 @@ msgstr ""
#: model:ir.model.fields,field_description:l10n_it_riba.field_presentation_riba_issue__write_date
#: model:ir.model.fields,field_description:l10n_it_riba.field_riba_configuration__write_date
#: model:ir.model.fields,field_description:l10n_it_riba.field_riba_credit__write_date
+#: model:ir.model.fields,field_description:l10n_it_riba.field_riba_due_date_settlement__write_date
#: model:ir.model.fields,field_description:l10n_it_riba.field_riba_file_export__write_date
#: model:ir.model.fields,field_description:l10n_it_riba.field_riba_issue__write_date
#: model:ir.model.fields,field_description:l10n_it_riba.field_riba_past_due__write_date
@@ -803,6 +822,7 @@ msgstr ""
#. odoo-python
#: code:addons/l10n_it_riba/wizard/wizard_credit.py:0
#: code:addons/l10n_it_riba/wizard/wizard_credit.py:0
+#: code:addons/l10n_it_riba/wizard/wizard_due_date_settlement.py:0
#: code:addons/l10n_it_riba/wizard/wizard_past_due.py:0
#: code:addons/l10n_it_riba/wizard/wizard_past_due.py:0
#, python-format
@@ -1182,6 +1202,11 @@ msgstr ""
msgid "RiBa configuration to be used."
msgstr ""
+#. module: l10n_it_riba
+#: model:ir.model,name:l10n_it_riba.model_riba_due_date_settlement
+msgid "Riba Due Date Settlement"
+msgstr ""
+
#. module: l10n_it_riba
#: model:ir.model.fields,field_description:l10n_it_riba.field_account_setup_bank_manual_config__codice_sia
#: model:ir.model.fields,field_description:l10n_it_riba.field_res_partner_bank__codice_sia
@@ -1279,6 +1304,11 @@ msgid ""
"the bank"
msgstr ""
+#. module: l10n_it_riba
+#: model_terms:ir.ui.view,arch_db:l10n_it_riba.riba_due_date_settlement
+msgid "This wizard will set 'Paid' all C/O details selected by due date"
+msgstr ""
+
#. module: l10n_it_riba
#: model_terms:ir.ui.view,arch_db:l10n_it_riba.riba_filter
msgid "To Reconcile"
diff --git a/l10n_it_riba/models/account.py b/l10n_it_riba/models/account.py
index 78640973d30e..4aeea8e1367c 100644
--- a/l10n_it_riba/models/account.py
+++ b/l10n_it_riba/models/account.py
@@ -5,6 +5,7 @@
# ().
# Copyright (C) 2012-2018 Lorenzo Battistini - Agile Business Group
# Copyright 2023 Simone Rubino - Aion Tech
+# Copyright 2024 Nextev Srl
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
from odoo import _, api, fields, models
@@ -58,9 +59,30 @@ def _compute_is_past_due(self):
if len(invoice.past_due_move_line_ids) != reconciled_past_due:
invoice.is_past_due = True
+ def _compute_open_amount(self):
+ for invoice in self:
+ if invoice.is_riba_payment:
+ today = fields.Date.today()
+ open_amount_line_ids = invoice.line_ids.filtered(
+ lambda line, today=today: line.riba
+ and line.display_type == "payment_term"
+ and line.date_maturity > today
+ )
+ invoice.open_amount = sum(open_amount_line_ids.mapped("balance"))
+ else:
+ invoice.open_amount = 0.0
+
riba_credited_ids = fields.One2many(
"riba.slip", "credit_move_id", "Credited RiBa Slips", readonly=True
)
+
+ open_amount = fields.Float(
+ digits="Account",
+ compute="_compute_open_amount",
+ default=0.0,
+ help="Amount currently only supposed to be paid, but has actually not happened",
+ )
+
riba_past_due_ids = fields.One2many(
"riba.slip.line", "past_due_move_id", "Past Due RiBa Slips", readonly=True
)
diff --git a/l10n_it_riba/models/riba.py b/l10n_it_riba/models/riba.py
index c4928c7efe56..a6401dc4c92c 100644
--- a/l10n_it_riba/models/riba.py
+++ b/l10n_it_riba/models/riba.py
@@ -5,6 +5,7 @@
# ().
# Copyright (C) 2012-2017 Lorenzo Battistini - Agile Business Group
# Copyright 2023 Simone Rubino - Aion Tech
+# Copyright 2024 Nextev Srl
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
from datetime import date
@@ -35,6 +36,12 @@ def _compute_payment_ids(self):
move_lines |= line.payment_ids
riba.payment_ids = move_lines
+ def _compute_total_values(self):
+ for riba in self:
+ riba.total_amount = 0.0
+ for line in riba.line_ids:
+ riba.total_amount += line.amount
+
_name = "riba.slip"
_description = "RiBa Slip"
_inherit = ["mail.thread"]
@@ -123,6 +130,10 @@ def _compute_payment_ids(self):
default=lambda self: fields.Date.context_today(self),
help="Keep empty to use the current date.",
)
+ total_amount = fields.Float(
+ string="Amount",
+ compute="_compute_total_values",
+ )
def action_riba_export(self):
return {
@@ -134,6 +145,16 @@ def action_riba_export(self):
"context": self.env.context,
}
+ def action_riba_due_date_settlement(self):
+ return {
+ "type": "ir.actions.act_window",
+ "name": "C/O Due Date Settlement",
+ "res_model": "riba.due.date.settlement",
+ "view_mode": "form",
+ "target": "new",
+ "context": self.env.context,
+ }
+
@api.ondelete(at_uninstall=False)
def _unlink_if_not_confirmed(self):
for riba_list in self:
@@ -205,6 +226,11 @@ def action_cancel_draft(self):
for line in riba_list.line_ids:
line.state = "draft"
+ def action_open_lines(self):
+ action = self.env.ref("l10n_it_riba.detail_riba_action").read()[0]
+ action["domain"] = [("slip_id", "=", self.id)]
+ return action
+
class RibaListLine(models.Model):
_name = "riba.slip.line"
@@ -219,21 +245,15 @@ def _compute_line_values(self):
line.invoice_number = ""
for move_line in line.move_line_ids:
line.amount += move_line.amount
- if not line.invoice_date:
- line.invoice_date = str(
- fields.Date.from_string(
- move_line.move_line_id.move_id.invoice_date
- ).strftime("%d/%m/%Y")
+ move_date = move_line.move_line_id.move_id.invoice_date
+ if move_date:
+ move_date = str(
+ fields.Date.from_string(move_date).strftime("%d/%m/%Y")
)
+ if not line.invoice_date:
+ line.invoice_date = move_date
else:
- line.invoice_date = "{}, {}".format(
- line.invoice_date,
- str(
- fields.Date.from_string(
- move_line.move_line_id.move_id.invoice_date
- ).strftime("%d/%m/%Y")
- ),
- )
+ line.invoice_date = f"{line.invoice_date}, {move_date}"
if not line.invoice_number:
line.invoice_number = str(
move_line.move_line_id.move_id.name
@@ -372,7 +392,7 @@ def confirm(self):
line.invoice_number, line.slip_id.name, line.sequence
),
"journal_id": journal.id,
- "date": line.slip_id.registration_date,
+ "date": line.due_date,
}
)
to_be_reconciled = self.env["account.move.line"]
@@ -513,6 +533,11 @@ def riba_line_settlement(self):
to_be_settled.reconcile()
+ def settle_riba_line(self):
+ for line in self:
+ if line.state == "credited":
+ line.riba_line_settlement()
+
class RibaListMoveLine(models.Model):
_name = "riba.slip.move.line"
diff --git a/l10n_it_riba/models/riba_config.py b/l10n_it_riba/models/riba_config.py
index 7dbfae2ade15..c58b30ede459 100644
--- a/l10n_it_riba/models/riba_config.py
+++ b/l10n_it_riba/models/riba_config.py
@@ -13,6 +13,7 @@
class RibaConfiguration(models.Model):
_name = "riba.configuration"
_description = "Configuration parameters for RiBa"
+ _check_company_auto = True
name = fields.Char("Description", size=64, required=True)
type = fields.Selection(
@@ -24,17 +25,20 @@ class RibaConfiguration(models.Model):
"res.partner.bank",
"Bank Account",
required=True,
+ check_company=True,
help="Bank account used for RiBa issuing.",
)
acceptance_journal_id = fields.Many2one(
"account.journal",
"Acceptance Journal",
- domain=[("type", "=", "bank")],
+ check_company=True,
+ domain="[('company_id', '=', company_id), ('type', '=', 'bank')]",
help="Journal used when RiBa is accepted by the bank.",
)
acceptance_account_id = fields.Many2one(
"account.account",
"Acceptance Account",
+ check_company=True,
help="Account used when RiBa is accepted by the bank.",
)
company_id = fields.Many2one(
@@ -46,36 +50,47 @@ class RibaConfiguration(models.Model):
credit_journal_id = fields.Many2one(
"account.journal",
"Credit Journal",
- domain=[("type", "=", "bank")],
+ check_company=True,
+ domain="[('company_id', '=', company_id), ('type', '=', 'bank')]",
help="Journal used when RiBa amount is credited by the bank.",
)
credit_account_id = fields.Many2one(
"account.account",
"RiBa Account",
+ check_company=True,
help="Account used when RiBa amount is credited by the bank.",
- domain=[("account_type", "!=", "liability_credit_card")],
+ domain="["
+ "('company_id', '=', company_id), "
+ "('account_type', '!=', 'liability_credit_card'), "
+ "]",
)
bank_account_id = fields.Many2one(
"account.account",
"A/C Bank Account",
+ check_company=True,
)
bank_expense_account_id = fields.Many2one("account.account", "Bank Fees Account")
past_due_journal_id = fields.Many2one(
"account.journal",
"Past Due Journal",
- domain=[("type", "=", "bank")],
+ check_company=True,
+ domain="[('company_id', '=', company_id), ('type', '=', 'bank')]",
help="Journal used when RiBa is past due.",
)
overdue_effects_account_id = fields.Many2one(
"account.account",
"Past Due Bills Account",
+ check_company=True,
)
protest_charge_account_id = fields.Many2one(
- "account.account", "Protest Fee Account"
+ "account.account",
+ "Protest Fee Account",
+ check_company=True,
)
settlement_journal_id = fields.Many2one(
"account.journal",
"Settlement Journal",
+ check_company=True,
help="Journal used when customers finally pay the invoice to bank.",
)
diff --git a/l10n_it_riba/readme/CONFIGURE.md b/l10n_it_riba/readme/CONFIGURE.md
index 6351bf395a5c..9f66b04bd998 100644
--- a/l10n_it_riba/readme/CONFIGURE.md
+++ b/l10n_it_riba/readme/CONFIGURE.md
@@ -4,9 +4,9 @@ Nella configurazione delle RiBa è possibile specificare se si tratti di
'Salvo buon fine' o 'Al dopo incasso', che hanno un flusso completamente
diverso.
-- Al dopo incasso: nessuna registrazione verrà effettuata
- automaticamente e le fatture risulteranno pagate solo al momento
- dell'effettivo incasso.
+- Al dopo incasso: le fatture risulteranno pagate all'accettazione;
+ l'incasso potrà essere registrato con una normale riconciliazione bancaria,
+ che andrà a chiudere gli "effetti attivi" aperti all'accettazione.
- Salvo buon fine: le registrazioni generate seguiranno la struttura
descritta nel documento
diff --git a/l10n_it_riba/readme/CONTRIBUTORS.md b/l10n_it_riba/readme/CONTRIBUTORS.md
index 58030179509e..812954ff69de 100644
--- a/l10n_it_riba/readme/CONTRIBUTORS.md
+++ b/l10n_it_riba/readme/CONTRIBUTORS.md
@@ -12,3 +12,6 @@
- Giovanni Serra \<\>
- [Aion Tech](https://aiontech.company/):
- Simone Rubino \<\>
+- [TAKOBI](https://takobi.online):
+ - Simone Rubino \<\>
+- Nextev Srl \<\>
diff --git a/l10n_it_riba/readme/USAGE.md b/l10n_it_riba/readme/USAGE.md
index 043d5c3ef26c..45c816945b6a 100644
--- a/l10n_it_riba/readme/USAGE.md
+++ b/l10n_it_riba/readme/USAGE.md
@@ -17,3 +17,7 @@ presente sia sulla distinta che sulle sue righe.
La voce di menù 'Presentazione Riba' permette estrarre le riba fino al
raggiungimento dell'importo massimo inserito dall'utente.
+
+Nella lista delle fatture è presente una colonna per monitorare l'
+esposizione, cioè l'importo dovuto dal cliente a fronte dell'emissione
+della RiBa non ancora scaduta.
diff --git a/l10n_it_riba/security/ir.model.access.csv b/l10n_it_riba/security/ir.model.access.csv
index 4c7c9d9f10b1..a7c4473be717 100644
--- a/l10n_it_riba/security/ir.model.access.csv
+++ b/l10n_it_riba/security/ir.model.access.csv
@@ -18,3 +18,4 @@ access_riba_past_due,riba_past_due,model_riba_past_due,account.group_account_inv
access_riba_credit,riba_credit,model_riba_credit,account.group_account_invoice,1,1,1,1
access_riba_file_export,riba_file_export,model_riba_file_export,account.group_account_invoice,1,1,1,1
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
diff --git a/l10n_it_riba/static/description/index.html b/l10n_it_riba/static/description/index.html
index 365d63a1dd30..1f0208849b3e 100644
--- a/l10n_it_riba/static/description/index.html
+++ b/l10n_it_riba/static/description/index.html
@@ -366,7 +366,7 @@
ITA - Ricevute bancarie
!! This file is generated by oca-gen-addon-readme !!
!! changes will be overwritten. !!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
-!! source digest: sha256:f183b89e0ff9f4553d6c9b7bf67496a1763367fdd85b99ce7fc0c3151ec78822
+!! source digest: sha256:6571e91cba2411e3d9f9e72c7212131fd86c377b225ee6d94a6f637b36512391
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -->
‘Salvo buon fine’ o ‘Al dopo incasso’, che hanno un flusso completamente
diverso.
-
Al dopo incasso: nessuna registrazione verrà effettuata
-automaticamente e le fatture risulteranno pagate solo al momento
-dell’effettivo incasso.
+
Al dopo incasso: le fatture risulteranno pagate all’accettazione;
+l’incasso potrà essere registrato con una normale riconciliazione
+bancaria, che andrà a chiudere gli “effetti attivi” aperti
+all’accettazione.
Salvo buon fine: le registrazioni generate seguiranno la struttura
descritta nel documento http://goo.gl/jpRhJp
La voce di menù ‘Presentazione Riba’ permette estrarre le riba fino al
raggiungimento dell’importo massimo inserito dall’utente.
+
Nella lista delle fatture è presente una colonna per monitorare l’
+esposizione, cioè l’importo dovuto dal cliente a fronte dell’emissione
+della RiBa non ancora scaduta.