diff --git a/README.md b/README.md index f160bd34b..d9f8719dd 100644 --- a/README.md +++ b/README.md @@ -30,7 +30,7 @@ addon | version | maintainers | summary [sale_commission_formula](sale_commission_formula/) | 14.0.1.0.0 | | Sale commissions computed by formulas [sale_commission_geo_assign](sale_commission_geo_assign/) | 14.0.1.1.3 | [![eLBati](https://github.com/eLBati.png?size=30px)](https://github.com/eLBati) [![aleuffre](https://github.com/aleuffre.png?size=30px)](https://github.com/aleuffre) [![renda-dev](https://github.com/renda-dev.png?size=30px)](https://github.com/renda-dev) [![PicchiSeba](https://github.com/PicchiSeba.png?size=30px)](https://github.com/PicchiSeba) | Assign agents to partners according to their location [sale_commission_geo_assign_product_domain](sale_commission_geo_assign_product_domain/) | 14.0.1.3.2 | [![aleuffre](https://github.com/aleuffre.png?size=30px)](https://github.com/aleuffre) [![renda-dev](https://github.com/renda-dev.png?size=30px)](https://github.com/renda-dev) | Bridge module between sale_commission_product_criteria_domain and sale_commission_geo_assign -[sale_commission_partial_settlement](sale_commission_partial_settlement/) | 14.0.1.2.1 | [![aleuffre](https://github.com/aleuffre.png?size=30px)](https://github.com/aleuffre) [![renda-dev](https://github.com/renda-dev.png?size=30px)](https://github.com/renda-dev) [![PicchiSeba](https://github.com/PicchiSeba.png?size=30px)](https://github.com/PicchiSeba) | Sales commissions based on paid amount +[sale_commission_partial_settlement](sale_commission_partial_settlement/) | 14.0.2.0.1 | [![aleuffre](https://github.com/aleuffre.png?size=30px)](https://github.com/aleuffre) [![renda-dev](https://github.com/renda-dev.png?size=30px)](https://github.com/renda-dev) [![PicchiSeba](https://github.com/PicchiSeba.png?size=30px)](https://github.com/PicchiSeba) | Sales commissions based on paid amount [sale_commission_pricelist](sale_commission_pricelist/) | 14.0.1.0.0 | | Sales commissions by pricelist [sale_commission_product_criteria](sale_commission_product_criteria/) | 14.0.1.1.6 | [![ilyasProgrammer](https://github.com/ilyasProgrammer.png?size=30px)](https://github.com/ilyasProgrammer) [![aleuffre](https://github.com/aleuffre.png?size=30px)](https://github.com/aleuffre) [![renda-dev](https://github.com/renda-dev.png?size=30px)](https://github.com/renda-dev) [![PicchiSeba](https://github.com/PicchiSeba.png?size=30px)](https://github.com/PicchiSeba) | Advanced commissions rules [sale_commission_product_criteria_discount](sale_commission_product_criteria_discount/) | 14.0.1.0.3 | [![aleuffre](https://github.com/aleuffre.png?size=30px)](https://github.com/aleuffre) [![ilyasProgrammer](https://github.com/ilyasProgrammer.png?size=30px)](https://github.com/ilyasProgrammer) [![renda-dev](https://github.com/renda-dev.png?size=30px)](https://github.com/renda-dev) [![PicchiSeba](https://github.com/PicchiSeba.png?size=30px)](https://github.com/PicchiSeba) | Advanced commissions rules with discount diff --git a/sale_commission_partial_settlement/README.rst b/sale_commission_partial_settlement/README.rst index 3b2a25fcd..5944cbde2 100644 --- a/sale_commission_partial_settlement/README.rst +++ b/sale_commission_partial_settlement/README.rst @@ -7,7 +7,7 @@ Sales commissions based on paid amount !! This file is generated by oca-gen-addon-readme !! !! changes will be overwritten. !! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! - !! source digest: sha256:9596c13efc487356fc34bac45ca9c0138c0ec5127e6e12f5427aea0a1630db80 + !! source digest: sha256:5a28fe32a76a6595689804a4dbbe29bb0256a29216618dc9d53c419256078a6c !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! .. |badge1| image:: https://img.shields.io/badge/maturity-Beta-yellow.png @@ -44,6 +44,18 @@ Usage Behavior for commission settlements will be as per module description. +Known issues / Roadmap +====================== + +Due to the data structure of the module before version 14.0.2.0.0, +there is no way to link partial settlements created before this version +of the module to a specific payment or account move, and therefore to the +new data structure existing after the changes. + +A "best effort" migration of previous data could be developed to +ensure a smoother transition between versions. + + Bug Tracker =========== diff --git a/sale_commission_partial_settlement/__manifest__.py b/sale_commission_partial_settlement/__manifest__.py index 0f6d85fda..54937b8a1 100644 --- a/sale_commission_partial_settlement/__manifest__.py +++ b/sale_commission_partial_settlement/__manifest__.py @@ -1,7 +1,7 @@ # Copyright 2023 Nextev { "name": "Sales commissions based on paid amount", - "version": "14.0.1.2.1", + "version": "14.0.2.0.1", "author": "Nextev Srl," "Ooops," "Odoo Community Association (OCA)", "maintainers": ["aleuffre", "renda-dev", "PicchiSeba"], "category": "Sales Management", @@ -10,7 +10,10 @@ "website": "https://github.com/OCA/commission", "data": [ "security/ir.model.access.csv", + "views/account_invoice_line_agent_views.xml", + "views/account_invoice_line_agent_partial_views.xml", "views/res_config_settings_view.xml", + "views/sale_commission_settlement_line_partial_views.xml", "views/sale_commission_settlement_view.xml", "views/sale_commission_view.xml", ], diff --git a/sale_commission_partial_settlement/i18n/es.po b/sale_commission_partial_settlement/i18n/es.po index 141b671f1..8689331fe 100644 --- a/sale_commission_partial_settlement/i18n/es.po +++ b/sale_commission_partial_settlement/i18n/es.po @@ -34,9 +34,15 @@ msgid "Account Partial Reconcile" msgstr "" #. module: sale_commission_partial_settlement -#: model:ir.model.fields,field_description:sale_commission_partial_settlement.field_account_invoice_line_agent_partial__agent_line -msgid "Agent Line" -msgstr "Línea de Agente" +#: model_terms:ir.ui.view,arch_db:sale_commission_partial_settlement.account_invoice_line_agent_form_partial_only +msgid "Actual" +msgstr "" + +#. module: sale_commission_partial_settlement +#: model:ir.model.fields,field_description:sale_commission_partial_settlement.field_account_invoice_line_agent_partial__agent_id +#: model:ir.model.fields,field_description:sale_commission_partial_settlement.field_sale_commission_settlement_line_partial__agent_id +msgid "Agent" +msgstr "" #. module: sale_commission_partial_settlement #: model:ir.model.fields,field_description:sale_commission_partial_settlement.field_sale_commission_settlement_line__agent_line_partial_ids @@ -48,11 +54,42 @@ msgstr "Agente Línea Parcial" msgid "Agent detail of commission line in invoice lines" msgstr "Detalle de agente de línea de comisión en líneas de pedido" +#. module: sale_commission_partial_settlement +#: model:ir.model.fields,help:sale_commission_partial_settlement.field_sale_commission_settlement_line_partial__reconcile_amount +msgid "" +"Always positive amount concerned by this matching expressed in the company " +"currency." +msgstr "" + +#. module: sale_commission_partial_settlement +#: model:ir.model.fields,field_description:sale_commission_partial_settlement.field_sale_commission_settlement_line_partial__amount +msgid "Amount" +msgstr "" + +#. module: sale_commission_partial_settlement +#: code:addons/sale_commission_partial_settlement/models/sale_commission_settlement_line_partial.py:0 +#, python-format +msgid "" +"Cannot delete Partial Settlement Line for agent %(agent_name)s, amount " +"%(amount)s, date maturity %(date_maturity)s because it is already part of a " +"settlement" +msgstr "" + +#. module: sale_commission_partial_settlement +#: model_terms:ir.ui.view,arch_db:sale_commission_partial_settlement.account_invoice_line_agent_form_partial_only +msgid "Close" +msgstr "" + #. module: sale_commission_partial_settlement #: model:ir.model.fields,field_description:sale_commission_partial_settlement.field_account_invoice_line_agent_partial__amount msgid "Commission Amount" msgstr "Importe de la Comisión" +#. module: sale_commission_partial_settlement +#: model:ir.model.fields,field_description:sale_commission_partial_settlement.field_account_invoice_line_agent__commission_settlement_line_partial_ids +msgid "Commission Settlement Line Partial" +msgstr "" + #. module: sale_commission_partial_settlement #: model:ir.model,name:sale_commission_partial_settlement.model_sale_commission msgid "Commission in sales" @@ -63,6 +100,12 @@ msgstr "Comisión en ventas" msgid "Companies" msgstr "" +#. module: sale_commission_partial_settlement +#: model:ir.model.fields,field_description:sale_commission_partial_settlement.field_account_invoice_line_agent_partial__company_id +#: model:ir.model.fields,field_description:sale_commission_partial_settlement.field_sale_commission_settlement_line_partial__company_id +msgid "Company" +msgstr "" + #. module: sale_commission_partial_settlement #: model:ir.model,name:sale_commission_partial_settlement.model_res_config_settings msgid "Config Settings" @@ -76,19 +119,32 @@ msgstr "Liquidaciones Creadas" #. module: sale_commission_partial_settlement #: model:ir.model.fields,field_description:sale_commission_partial_settlement.field_account_invoice_line_agent_partial__create_uid +#: model:ir.model.fields,field_description:sale_commission_partial_settlement.field_sale_commission_settlement_line_partial__create_uid msgid "Created by" msgstr "Creado por" #. module: sale_commission_partial_settlement #: model:ir.model.fields,field_description:sale_commission_partial_settlement.field_account_invoice_line_agent_partial__create_date +#: model:ir.model.fields,field_description:sale_commission_partial_settlement.field_sale_commission_settlement_line_partial__create_date msgid "Created on" msgstr "Creado el" +#. module: sale_commission_partial_settlement +#: model:ir.model.fields,field_description:sale_commission_partial_settlement.field_sale_commission_settlement_line_partial__reconcile_credit_move_id +msgid "Credit move line" +msgstr "" + #. module: sale_commission_partial_settlement #: model:ir.model.fields,field_description:sale_commission_partial_settlement.field_account_invoice_line_agent_partial__currency_id +#: model:ir.model.fields,field_description:sale_commission_partial_settlement.field_sale_commission_settlement_line_partial__currency_id msgid "Currency" msgstr "Divisa" +#. module: sale_commission_partial_settlement +#: model:ir.model.fields,field_description:sale_commission_partial_settlement.field_sale_commission_settlement_line_partial__reconcile_debit_move_id +msgid "Debit move line" +msgstr "" + #. module: sale_commission_partial_settlement #: model:ir.model.fields,field_description:sale_commission_partial_settlement.field_account_invoice_line_agent__display_name #: model:ir.model.fields,field_description:sale_commission_partial_settlement.field_account_invoice_line_agent_partial__display_name @@ -99,14 +155,30 @@ msgstr "Divisa" #: model:ir.model.fields,field_description:sale_commission_partial_settlement.field_sale_commission_make_settle__display_name #: model:ir.model.fields,field_description:sale_commission_partial_settlement.field_sale_commission_settlement__display_name #: model:ir.model.fields,field_description:sale_commission_partial_settlement.field_sale_commission_settlement_line__display_name +#: model:ir.model.fields,field_description:sale_commission_partial_settlement.field_sale_commission_settlement_line_partial__display_name msgid "Display Name" msgstr "Nombre a Mostrar" +#. module: sale_commission_partial_settlement +#: model:ir.model.fields,field_description:sale_commission_partial_settlement.field_account_invoice_line_agent_partial__date_maturity +msgid "Due Date" +msgstr "" + +#. module: sale_commission_partial_settlement +#: model_terms:ir.ui.view,arch_db:sale_commission_partial_settlement.account_invoice_line_agent_form_partial_only +msgid "Forecast" +msgstr "" + #. module: sale_commission_partial_settlement #: model:ir.model.fields.selection,name:sale_commission_partial_settlement.selection__sale_commission__payment_amount_type__full msgid "Full amount" msgstr "Importe total" +#. module: sale_commission_partial_settlement +#: model:ir.model.fields,field_description:sale_commission_partial_settlement.field_account_invoice_line_agent_partial__is_settled +msgid "Fully settled" +msgstr "" + #. module: sale_commission_partial_settlement #: model:ir.model.fields,field_description:sale_commission_partial_settlement.field_account_invoice_line_agent__id #: model:ir.model.fields,field_description:sale_commission_partial_settlement.field_account_invoice_line_agent_partial__id @@ -117,11 +189,30 @@ msgstr "Importe total" #: model:ir.model.fields,field_description:sale_commission_partial_settlement.field_sale_commission_make_settle__id #: model:ir.model.fields,field_description:sale_commission_partial_settlement.field_sale_commission_settlement__id #: model:ir.model.fields,field_description:sale_commission_partial_settlement.field_sale_commission_settlement_line__id +#: model:ir.model.fields,field_description:sale_commission_partial_settlement.field_sale_commission_settlement_line_partial__id msgid "ID" msgstr "ID" +#. module: sale_commission_partial_settlement +#: model:ir.model.fields,field_description:sale_commission_partial_settlement.field_account_invoice_line_agent_partial__move_id +#: model:ir.model.fields,field_description:sale_commission_partial_settlement.field_sale_commission_settlement_line_partial__move_id +msgid "Invoice" +msgstr "" + +#. module: sale_commission_partial_settlement +#: model:ir.model.fields,field_description:sale_commission_partial_settlement.field_sale_commission_settlement_line_partial__invoice_agent_partial_id +msgid "Invoice Agent Partial" +msgstr "" + +#. module: sale_commission_partial_settlement +#: model:ir.model.fields,field_description:sale_commission_partial_settlement.field_account_invoice_line_agent_partial__invoice_line_id +#: model:ir.model.fields,field_description:sale_commission_partial_settlement.field_sale_commission_settlement_line_partial__invoice_line_id +msgid "Invoice Line" +msgstr "" + #. module: sale_commission_partial_settlement #: model:ir.model.fields,field_description:sale_commission_partial_settlement.field_account_invoice_line_agent_partial__invoice_line_agent_id +#: model:ir.model.fields,field_description:sale_commission_partial_settlement.field_sale_commission_settlement_line_partial__invoice_line_agent_id msgid "Invoice Line Agent" msgstr "Agente de Línea de Facturación" @@ -130,6 +221,12 @@ msgstr "Agente de Línea de Facturación" msgid "Invoice Line Agent Partial" msgstr "" +#. module: sale_commission_partial_settlement +#: model:ir.model.fields,field_description:sale_commission_partial_settlement.field_account_invoice_line_agent_partial__invoice_date +#: model:ir.model.fields,field_description:sale_commission_partial_settlement.field_sale_commission_settlement_line_partial__invoice_date +msgid "Invoice date" +msgstr "" + #. module: sale_commission_partial_settlement #: model:ir.model.fields,field_description:sale_commission_partial_settlement.field_sale_commission_settlement__settlement_date_to msgid "Invoice date up to" @@ -140,6 +237,11 @@ msgstr "" msgid "Is Fully Settled" msgstr "" +#. module: sale_commission_partial_settlement +#: model:ir.model.fields,field_description:sale_commission_partial_settlement.field_sale_commission_settlement_line_partial__is_settled +msgid "Is Settled" +msgstr "" + #. module: sale_commission_partial_settlement #: model:ir.model.fields,field_description:sale_commission_partial_settlement.field_account_invoice_line_agent____last_update #: model:ir.model.fields,field_description:sale_commission_partial_settlement.field_account_invoice_line_agent_partial____last_update @@ -150,16 +252,19 @@ msgstr "" #: model:ir.model.fields,field_description:sale_commission_partial_settlement.field_sale_commission_make_settle____last_update #: model:ir.model.fields,field_description:sale_commission_partial_settlement.field_sale_commission_settlement____last_update #: model:ir.model.fields,field_description:sale_commission_partial_settlement.field_sale_commission_settlement_line____last_update +#: model:ir.model.fields,field_description:sale_commission_partial_settlement.field_sale_commission_settlement_line_partial____last_update msgid "Last Modified on" msgstr "Última Modificación el" #. module: sale_commission_partial_settlement #: model:ir.model.fields,field_description:sale_commission_partial_settlement.field_account_invoice_line_agent_partial__write_uid +#: model:ir.model.fields,field_description:sale_commission_partial_settlement.field_sale_commission_settlement_line_partial__write_uid msgid "Last Updated by" msgstr "Última Actualización por" #. module: sale_commission_partial_settlement #: model:ir.model.fields,field_description:sale_commission_partial_settlement.field_account_invoice_line_agent_partial__write_date +#: model:ir.model.fields,field_description:sale_commission_partial_settlement.field_sale_commission_settlement_line_partial__write_date msgid "Last Updated on" msgstr "Última Actualización el" @@ -168,6 +273,16 @@ msgstr "Última Actualización el" msgid "Line of a commission settlement" msgstr "Línea de liquidación de comisión" +#. module: sale_commission_partial_settlement +#: model:ir.model.fields,field_description:sale_commission_partial_settlement.field_sale_commission_settlement_line_partial__date_maturity +msgid "Max Date of Matched Lines" +msgstr "" + +#. module: sale_commission_partial_settlement +#: model:ir.model.fields,field_description:sale_commission_partial_settlement.field_account_invoice_line_agent_partial__move_line_id +msgid "Move Line" +msgstr "" + #. module: sale_commission_partial_settlement #: model:ir.model.fields.selection,name:sale_commission_partial_settlement.selection__sale_commission__payment_amount_type__paid msgid "Paid amount" @@ -179,21 +294,42 @@ msgid "Partial Commission Amount Settled" msgstr "Comisión Parcial Importe liquidado" #. module: sale_commission_partial_settlement -#: model:ir.model.fields,field_description:sale_commission_partial_settlement.field_account_partial_reconcile__partial_commission_settled -msgid "Partial Commission Settled" -msgstr "Comisión Parcial Liquidada" +#: model:ir.actions.act_window,name:sale_commission_partial_settlement.action_invoice_line_agent_partial +#: model:ir.ui.menu,name:sale_commission_partial_settlement.menu_partial_commission_forecast +msgid "Partial Commission Forecast" +msgstr "" + +#. module: sale_commission_partial_settlement +#: code:addons/sale_commission_partial_settlement/models/account_invoice_line_agent.py:0 +#: model:ir.actions.act_window,name:sale_commission_partial_settlement.action_sale_commission_settlement_line_partial +#: model:ir.ui.menu,name:sale_commission_partial_settlement.menu_partial_commissions +#, python-format +msgid "Partial Commissions" +msgstr "" #. module: sale_commission_partial_settlement #: model:ir.model,name:sale_commission_partial_settlement.model_account_partial_reconcile +#: model:ir.model.fields,field_description:sale_commission_partial_settlement.field_sale_commission_settlement_line_partial__partial_reconcile_id msgid "Partial Reconcile" msgstr "Conciliación Parcial" #. module: sale_commission_partial_settlement #: model:ir.model,name:sale_commission_partial_settlement.model_account_invoice_line_agent_partial -msgid "Partial agent commissions" -msgstr "Comisiones parciales de agente" +msgid "Partial agent commissions. " +msgstr "" + +#. module: sale_commission_partial_settlement +#: model:ir.model,name:sale_commission_partial_settlement.model_sale_commission_settlement_line_partial +msgid "Partial settlements. " +msgstr "" #. module: sale_commission_partial_settlement +#: model:ir.model.fields,field_description:sale_commission_partial_settlement.field_sale_commission_settlement_line_partial__reconcile_amount +msgid "Payment amount" +msgstr "" + +#. module: sale_commission_partial_settlement +#: model:ir.model.fields,field_description:sale_commission_partial_settlement.field_account_invoice_line_agent__payment_amount_type #: model:ir.model.fields,field_description:sale_commission_partial_settlement.field_sale_commission__payment_amount_type msgid "Payment amount type" msgstr "Tipo de importe del pago" @@ -204,15 +340,28 @@ msgid "Payment date up to" msgstr "" #. module: sale_commission_partial_settlement +#: model:ir.model.fields,field_description:sale_commission_partial_settlement.field_account_invoice_line_agent_partial__settled_amount #: model:ir.model.fields,field_description:sale_commission_partial_settlement.field_sale_commission_settlement_line__settled_amount msgid "Settled Amount" msgstr "Importe Liquidado" #. module: sale_commission_partial_settlement #: model:ir.model,name:sale_commission_partial_settlement.model_sale_commission_settlement +#: model:ir.model.fields,field_description:sale_commission_partial_settlement.field_sale_commission_settlement_line_partial__settlement_id msgid "Settlement" msgstr "" +#. module: sale_commission_partial_settlement +#: model:ir.model.fields,field_description:sale_commission_partial_settlement.field_sale_commission_settlement_line_partial__settlement_line_ids +msgid "Settlement Line" +msgstr "" + +#. module: sale_commission_partial_settlement +#: model:ir.model.fields,field_description:sale_commission_partial_settlement.field_account_invoice_line_agent_partial__settlement_line_partial_ids +#: model:ir.model.fields,field_description:sale_commission_partial_settlement.field_sale_commission_settlement_line__settlement_line_partial_ids +msgid "Settlement Line Partial" +msgstr "" + #. module: sale_commission_partial_settlement #: model:ir.model.fields,field_description:sale_commission_partial_settlement.field_res_company__commission_show_settlement_dates #: model:ir.model.fields,field_description:sale_commission_partial_settlement.field_res_config_settings__commission_show_settlement_dates @@ -225,20 +374,49 @@ msgstr "" msgid "Shows the dates used to create the settlement itself" msgstr "" +#. module: sale_commission_partial_settlement +#: model:ir.model.fields,help:sale_commission_partial_settlement.field_sale_commission_settlement_line_partial__date_maturity +msgid "" +"Technical field used to determine at which date this reconciliation needs to " +"be shown on the aged receivable/payable reports." +msgstr "" + #. module: sale_commission_partial_settlement #: model:ir.model.fields,help:sale_commission_partial_settlement.field_sale_commission_settlement__settlement_date_to msgid "The invoice date used to create the settlement" msgstr "" +#. module: sale_commission_partial_settlement +#: model:ir.model.fields,help:sale_commission_partial_settlement.field_account_invoice_line_agent_partial__move_id +#: model:ir.model.fields,help:sale_commission_partial_settlement.field_sale_commission_settlement_line_partial__move_id +msgid "The move of this entry line." +msgstr "" + #. module: sale_commission_partial_settlement #: model:ir.model.fields,help:sale_commission_partial_settlement.field_sale_commission_settlement__settlement_date_payment_to msgid "The payment date used to create the settlement" msgstr "" +#. module: sale_commission_partial_settlement +#: model:ir.model.fields,help:sale_commission_partial_settlement.field_account_invoice_line_agent_partial__date_maturity +msgid "" +"This field is used for payable and receivable journal entries. You can put " +"the limit date for the payment of this line." +msgstr "" + #. module: sale_commission_partial_settlement #: model:ir.model,name:sale_commission_partial_settlement.model_sale_commission_make_settle msgid "Wizard for settling commissions in invoices" msgstr "Asistente para liquidar comisiones en facturas" +#~ msgid "Agent Line" +#~ msgstr "Línea de Agente" + +#~ msgid "Partial Commission Settled" +#~ msgstr "Comisión Parcial Liquidada" + +#~ msgid "Partial agent commissions" +#~ msgstr "Comisiones parciales de agente" + #~ msgid "Settled" #~ msgstr "Liquidado" diff --git a/sale_commission_partial_settlement/i18n/it.po b/sale_commission_partial_settlement/i18n/it.po index 757e24611..43dbefaef 100644 --- a/sale_commission_partial_settlement/i18n/it.po +++ b/sale_commission_partial_settlement/i18n/it.po @@ -6,7 +6,7 @@ msgid "" msgstr "" "Project-Id-Version: Odoo Server 14.0\n" "Report-Msgid-Bugs-To: \n" -"PO-Revision-Date: 2024-11-20 13:06+0000\n" +"PO-Revision-Date: 2025-01-28 11:06+0000\n" "Last-Translator: Francesco Foresti \n" "Language-Team: none\n" "Language: it\n" @@ -36,9 +36,15 @@ msgid "Account Partial Reconcile" msgstr "Riconcilia parziale fattura" #. module: sale_commission_partial_settlement -#: model:ir.model.fields,field_description:sale_commission_partial_settlement.field_account_invoice_line_agent_partial__agent_line -msgid "Agent Line" -msgstr "Riga agente" +#: model_terms:ir.ui.view,arch_db:sale_commission_partial_settlement.account_invoice_line_agent_form_partial_only +msgid "Actual" +msgstr "Reale" + +#. module: sale_commission_partial_settlement +#: model:ir.model.fields,field_description:sale_commission_partial_settlement.field_account_invoice_line_agent_partial__agent_id +#: model:ir.model.fields,field_description:sale_commission_partial_settlement.field_sale_commission_settlement_line_partial__agent_id +msgid "Agent" +msgstr "Agente" #. module: sale_commission_partial_settlement #: model:ir.model.fields,field_description:sale_commission_partial_settlement.field_sale_commission_settlement_line__agent_line_partial_ids @@ -50,11 +56,45 @@ msgstr "Riga agente parziale" msgid "Agent detail of commission line in invoice lines" msgstr "Dettaglio riga provvigione agente nelle righe fattura" +#. module: sale_commission_partial_settlement +#: model:ir.model.fields,help:sale_commission_partial_settlement.field_sale_commission_settlement_line_partial__reconcile_amount +msgid "" +"Always positive amount concerned by this matching expressed in the company " +"currency." +msgstr "Importo sempre positivo nella valuta dell'azienda." + +#. module: sale_commission_partial_settlement +#: model:ir.model.fields,field_description:sale_commission_partial_settlement.field_sale_commission_settlement_line_partial__amount +msgid "Amount" +msgstr "Importo" + +#. module: sale_commission_partial_settlement +#: code:addons/sale_commission_partial_settlement/models/sale_commission_settlement_line_partial.py:0 +#, python-format +msgid "" +"Cannot delete Partial Settlement Line for agent %(agent_name)s, amount " +"%(amount)s, date maturity %(date_maturity)s because it is already part of a " +"settlement" +msgstr "" +"Non è possibile eliminare la riga liquidazione parziale per l'agente " +"%(agent_name)s, importo %(amount)s, data maturazione %(date_maturity)s in " +"quanto è già parte di una liquidazione" + +#. module: sale_commission_partial_settlement +#: model_terms:ir.ui.view,arch_db:sale_commission_partial_settlement.account_invoice_line_agent_form_partial_only +msgid "Close" +msgstr "Chiudi" + #. module: sale_commission_partial_settlement #: model:ir.model.fields,field_description:sale_commission_partial_settlement.field_account_invoice_line_agent_partial__amount msgid "Commission Amount" msgstr "Importo provvigione" +#. module: sale_commission_partial_settlement +#: model:ir.model.fields,field_description:sale_commission_partial_settlement.field_account_invoice_line_agent__commission_settlement_line_partial_ids +msgid "Commission Settlement Line Partial" +msgstr "Riga parziale liquidazioni provvigioni" + #. module: sale_commission_partial_settlement #: model:ir.model,name:sale_commission_partial_settlement.model_sale_commission msgid "Commission in sales" @@ -65,6 +105,12 @@ msgstr "Provvigione nelle vendite" msgid "Companies" msgstr "Aziende" +#. module: sale_commission_partial_settlement +#: model:ir.model.fields,field_description:sale_commission_partial_settlement.field_account_invoice_line_agent_partial__company_id +#: model:ir.model.fields,field_description:sale_commission_partial_settlement.field_sale_commission_settlement_line_partial__company_id +msgid "Company" +msgstr "Azienda" + #. module: sale_commission_partial_settlement #: model:ir.model,name:sale_commission_partial_settlement.model_res_config_settings msgid "Config Settings" @@ -78,19 +124,32 @@ msgstr "Regolazioni create" #. module: sale_commission_partial_settlement #: model:ir.model.fields,field_description:sale_commission_partial_settlement.field_account_invoice_line_agent_partial__create_uid +#: model:ir.model.fields,field_description:sale_commission_partial_settlement.field_sale_commission_settlement_line_partial__create_uid msgid "Created by" msgstr "Creato da" #. module: sale_commission_partial_settlement #: model:ir.model.fields,field_description:sale_commission_partial_settlement.field_account_invoice_line_agent_partial__create_date +#: model:ir.model.fields,field_description:sale_commission_partial_settlement.field_sale_commission_settlement_line_partial__create_date msgid "Created on" msgstr "Creato il" +#. module: sale_commission_partial_settlement +#: model:ir.model.fields,field_description:sale_commission_partial_settlement.field_sale_commission_settlement_line_partial__reconcile_credit_move_id +msgid "Credit move line" +msgstr "Riga movimento di accredito" + #. module: sale_commission_partial_settlement #: model:ir.model.fields,field_description:sale_commission_partial_settlement.field_account_invoice_line_agent_partial__currency_id +#: model:ir.model.fields,field_description:sale_commission_partial_settlement.field_sale_commission_settlement_line_partial__currency_id msgid "Currency" msgstr "Valuta" +#. module: sale_commission_partial_settlement +#: model:ir.model.fields,field_description:sale_commission_partial_settlement.field_sale_commission_settlement_line_partial__reconcile_debit_move_id +msgid "Debit move line" +msgstr "Riga movimento di addebito" + #. module: sale_commission_partial_settlement #: model:ir.model.fields,field_description:sale_commission_partial_settlement.field_account_invoice_line_agent__display_name #: model:ir.model.fields,field_description:sale_commission_partial_settlement.field_account_invoice_line_agent_partial__display_name @@ -101,14 +160,30 @@ msgstr "Valuta" #: model:ir.model.fields,field_description:sale_commission_partial_settlement.field_sale_commission_make_settle__display_name #: model:ir.model.fields,field_description:sale_commission_partial_settlement.field_sale_commission_settlement__display_name #: model:ir.model.fields,field_description:sale_commission_partial_settlement.field_sale_commission_settlement_line__display_name +#: model:ir.model.fields,field_description:sale_commission_partial_settlement.field_sale_commission_settlement_line_partial__display_name msgid "Display Name" msgstr "Nome visualizzato" +#. module: sale_commission_partial_settlement +#: model:ir.model.fields,field_description:sale_commission_partial_settlement.field_account_invoice_line_agent_partial__date_maturity +msgid "Due Date" +msgstr "Scadenza" + +#. module: sale_commission_partial_settlement +#: model_terms:ir.ui.view,arch_db:sale_commission_partial_settlement.account_invoice_line_agent_form_partial_only +msgid "Forecast" +msgstr "Previsione" + #. module: sale_commission_partial_settlement #: model:ir.model.fields.selection,name:sale_commission_partial_settlement.selection__sale_commission__payment_amount_type__full msgid "Full amount" msgstr "Importo totale" +#. module: sale_commission_partial_settlement +#: model:ir.model.fields,field_description:sale_commission_partial_settlement.field_account_invoice_line_agent_partial__is_settled +msgid "Fully settled" +msgstr "Interamente liquidata" + #. module: sale_commission_partial_settlement #: model:ir.model.fields,field_description:sale_commission_partial_settlement.field_account_invoice_line_agent__id #: model:ir.model.fields,field_description:sale_commission_partial_settlement.field_account_invoice_line_agent_partial__id @@ -119,11 +194,30 @@ msgstr "Importo totale" #: model:ir.model.fields,field_description:sale_commission_partial_settlement.field_sale_commission_make_settle__id #: model:ir.model.fields,field_description:sale_commission_partial_settlement.field_sale_commission_settlement__id #: model:ir.model.fields,field_description:sale_commission_partial_settlement.field_sale_commission_settlement_line__id +#: model:ir.model.fields,field_description:sale_commission_partial_settlement.field_sale_commission_settlement_line_partial__id msgid "ID" msgstr "ID" +#. module: sale_commission_partial_settlement +#: model:ir.model.fields,field_description:sale_commission_partial_settlement.field_account_invoice_line_agent_partial__move_id +#: model:ir.model.fields,field_description:sale_commission_partial_settlement.field_sale_commission_settlement_line_partial__move_id +msgid "Invoice" +msgstr "Fattura" + +#. module: sale_commission_partial_settlement +#: model:ir.model.fields,field_description:sale_commission_partial_settlement.field_sale_commission_settlement_line_partial__invoice_agent_partial_id +msgid "Invoice Agent Partial" +msgstr "Parziale agente in fattura" + +#. module: sale_commission_partial_settlement +#: model:ir.model.fields,field_description:sale_commission_partial_settlement.field_account_invoice_line_agent_partial__invoice_line_id +#: model:ir.model.fields,field_description:sale_commission_partial_settlement.field_sale_commission_settlement_line_partial__invoice_line_id +msgid "Invoice Line" +msgstr "Riga fattura" + #. module: sale_commission_partial_settlement #: model:ir.model.fields,field_description:sale_commission_partial_settlement.field_account_invoice_line_agent_partial__invoice_line_agent_id +#: model:ir.model.fields,field_description:sale_commission_partial_settlement.field_sale_commission_settlement_line_partial__invoice_line_agent_id msgid "Invoice Line Agent" msgstr "Riga fattura agente" @@ -132,6 +226,12 @@ msgstr "Riga fattura agente" msgid "Invoice Line Agent Partial" msgstr "Riga fattura parziale agente" +#. module: sale_commission_partial_settlement +#: model:ir.model.fields,field_description:sale_commission_partial_settlement.field_account_invoice_line_agent_partial__invoice_date +#: model:ir.model.fields,field_description:sale_commission_partial_settlement.field_sale_commission_settlement_line_partial__invoice_date +msgid "Invoice date" +msgstr "Data fattura" + #. module: sale_commission_partial_settlement #: model:ir.model.fields,field_description:sale_commission_partial_settlement.field_sale_commission_settlement__settlement_date_to msgid "Invoice date up to" @@ -142,6 +242,11 @@ msgstr "Data fattura fino a" msgid "Is Fully Settled" msgstr "E' totalmente liquidata" +#. module: sale_commission_partial_settlement +#: model:ir.model.fields,field_description:sale_commission_partial_settlement.field_sale_commission_settlement_line_partial__is_settled +msgid "Is Settled" +msgstr "E' liquidata" + #. module: sale_commission_partial_settlement #: model:ir.model.fields,field_description:sale_commission_partial_settlement.field_account_invoice_line_agent____last_update #: model:ir.model.fields,field_description:sale_commission_partial_settlement.field_account_invoice_line_agent_partial____last_update @@ -152,16 +257,19 @@ msgstr "E' totalmente liquidata" #: model:ir.model.fields,field_description:sale_commission_partial_settlement.field_sale_commission_make_settle____last_update #: model:ir.model.fields,field_description:sale_commission_partial_settlement.field_sale_commission_settlement____last_update #: model:ir.model.fields,field_description:sale_commission_partial_settlement.field_sale_commission_settlement_line____last_update +#: model:ir.model.fields,field_description:sale_commission_partial_settlement.field_sale_commission_settlement_line_partial____last_update msgid "Last Modified on" msgstr "Ultima modifica il" #. module: sale_commission_partial_settlement #: model:ir.model.fields,field_description:sale_commission_partial_settlement.field_account_invoice_line_agent_partial__write_uid +#: model:ir.model.fields,field_description:sale_commission_partial_settlement.field_sale_commission_settlement_line_partial__write_uid msgid "Last Updated by" msgstr "Ultimo aggiornamento di" #. module: sale_commission_partial_settlement #: model:ir.model.fields,field_description:sale_commission_partial_settlement.field_account_invoice_line_agent_partial__write_date +#: model:ir.model.fields,field_description:sale_commission_partial_settlement.field_sale_commission_settlement_line_partial__write_date msgid "Last Updated on" msgstr "Ultimo aggiornamento il" @@ -170,6 +278,16 @@ msgstr "Ultimo aggiornamento il" msgid "Line of a commission settlement" msgstr "Riga di regolazione provvigione" +#. module: sale_commission_partial_settlement +#: model:ir.model.fields,field_description:sale_commission_partial_settlement.field_sale_commission_settlement_line_partial__date_maturity +msgid "Max Date of Matched Lines" +msgstr "Data massima delle righe abbinate" + +#. module: sale_commission_partial_settlement +#: model:ir.model.fields,field_description:sale_commission_partial_settlement.field_account_invoice_line_agent_partial__move_line_id +msgid "Move Line" +msgstr "Riga movimento" + #. module: sale_commission_partial_settlement #: model:ir.model.fields.selection,name:sale_commission_partial_settlement.selection__sale_commission__payment_amount_type__paid msgid "Paid amount" @@ -181,21 +299,42 @@ msgid "Partial Commission Amount Settled" msgstr "Importo parziale provvigione regolata" #. module: sale_commission_partial_settlement -#: model:ir.model.fields,field_description:sale_commission_partial_settlement.field_account_partial_reconcile__partial_commission_settled -msgid "Partial Commission Settled" -msgstr "Provvigione parziale regolata" +#: model:ir.actions.act_window,name:sale_commission_partial_settlement.action_invoice_line_agent_partial +#: model:ir.ui.menu,name:sale_commission_partial_settlement.menu_partial_commission_forecast +msgid "Partial Commission Forecast" +msgstr "Previsione provvigioni parziali" + +#. module: sale_commission_partial_settlement +#: code:addons/sale_commission_partial_settlement/models/account_invoice_line_agent.py:0 +#: model:ir.actions.act_window,name:sale_commission_partial_settlement.action_sale_commission_settlement_line_partial +#: model:ir.ui.menu,name:sale_commission_partial_settlement.menu_partial_commissions +#, python-format +msgid "Partial Commissions" +msgstr "Provvigioni parziali" #. module: sale_commission_partial_settlement #: model:ir.model,name:sale_commission_partial_settlement.model_account_partial_reconcile +#: model:ir.model.fields,field_description:sale_commission_partial_settlement.field_sale_commission_settlement_line_partial__partial_reconcile_id msgid "Partial Reconcile" msgstr "Riconciliazione parziale" #. module: sale_commission_partial_settlement #: model:ir.model,name:sale_commission_partial_settlement.model_account_invoice_line_agent_partial -msgid "Partial agent commissions" -msgstr "Provvigioni parziali agente" +msgid "Partial agent commissions. " +msgstr "Provvigioni parziali agente. " + +#. module: sale_commission_partial_settlement +#: model:ir.model,name:sale_commission_partial_settlement.model_sale_commission_settlement_line_partial +msgid "Partial settlements. " +msgstr "Liquidazioni parziali. " + +#. module: sale_commission_partial_settlement +#: model:ir.model.fields,field_description:sale_commission_partial_settlement.field_sale_commission_settlement_line_partial__reconcile_amount +msgid "Payment amount" +msgstr "Importo pagamento" #. module: sale_commission_partial_settlement +#: model:ir.model.fields,field_description:sale_commission_partial_settlement.field_account_invoice_line_agent__payment_amount_type #: model:ir.model.fields,field_description:sale_commission_partial_settlement.field_sale_commission__payment_amount_type msgid "Payment amount type" msgstr "Tipo importo pagamento" @@ -206,15 +345,28 @@ msgid "Payment date up to" msgstr "Data pagamento fino a" #. module: sale_commission_partial_settlement +#: model:ir.model.fields,field_description:sale_commission_partial_settlement.field_account_invoice_line_agent_partial__settled_amount #: model:ir.model.fields,field_description:sale_commission_partial_settlement.field_sale_commission_settlement_line__settled_amount msgid "Settled Amount" msgstr "Importo regolato" #. module: sale_commission_partial_settlement #: model:ir.model,name:sale_commission_partial_settlement.model_sale_commission_settlement +#: model:ir.model.fields,field_description:sale_commission_partial_settlement.field_sale_commission_settlement_line_partial__settlement_id msgid "Settlement" msgstr "Liquidazione" +#. module: sale_commission_partial_settlement +#: model:ir.model.fields,field_description:sale_commission_partial_settlement.field_sale_commission_settlement_line_partial__settlement_line_ids +msgid "Settlement Line" +msgstr "Riga liquidazione" + +#. module: sale_commission_partial_settlement +#: model:ir.model.fields,field_description:sale_commission_partial_settlement.field_account_invoice_line_agent_partial__settlement_line_partial_ids +#: model:ir.model.fields,field_description:sale_commission_partial_settlement.field_sale_commission_settlement_line__settlement_line_partial_ids +msgid "Settlement Line Partial" +msgstr "Parziale riga liquidazione" + #. module: sale_commission_partial_settlement #: model:ir.model.fields,field_description:sale_commission_partial_settlement.field_res_company__commission_show_settlement_dates #: model:ir.model.fields,field_description:sale_commission_partial_settlement.field_res_config_settings__commission_show_settlement_dates @@ -227,20 +379,54 @@ msgstr "Mostra date fattura e pagamenti nelle liquidazioni" msgid "Shows the dates used to create the settlement itself" msgstr "Mostra le date inserite per la creazione della liquidazione" +#. module: sale_commission_partial_settlement +#: model:ir.model.fields,help:sale_commission_partial_settlement.field_sale_commission_settlement_line_partial__date_maturity +msgid "" +"Technical field used to determine at which date this reconciliation needs to " +"be shown on the aged receivable/payable reports." +msgstr "" +"Campo tecnico utilizzato per determinare in quale data questa " +"riconciliazione deve essere mostrata sui rendiconti ricevibili/pagabili " +"maturati." + #. module: sale_commission_partial_settlement #: model:ir.model.fields,help:sale_commission_partial_settlement.field_sale_commission_settlement__settlement_date_to msgid "The invoice date used to create the settlement" msgstr "La data fattura limite usata per creare la liquidazione" +#. module: sale_commission_partial_settlement +#: model:ir.model.fields,help:sale_commission_partial_settlement.field_account_invoice_line_agent_partial__move_id +#: model:ir.model.fields,help:sale_commission_partial_settlement.field_sale_commission_settlement_line_partial__move_id +msgid "The move of this entry line." +msgstr "Il movimento per questa riga di registrazione." + #. module: sale_commission_partial_settlement #: model:ir.model.fields,help:sale_commission_partial_settlement.field_sale_commission_settlement__settlement_date_payment_to msgid "The payment date used to create the settlement" msgstr "La data pagamento limite usata per creare la liquidazione" +#. module: sale_commission_partial_settlement +#: model:ir.model.fields,help:sale_commission_partial_settlement.field_account_invoice_line_agent_partial__date_maturity +msgid "" +"This field is used for payable and receivable journal entries. You can put " +"the limit date for the payment of this line." +msgstr "" +"Questo campo viene usato per pagare e ricevere registrazioni contabili. Si " +"può inserire la data limite per il pagamento di questa riga." + #. module: sale_commission_partial_settlement #: model:ir.model,name:sale_commission_partial_settlement.model_sale_commission_make_settle msgid "Wizard for settling commissions in invoices" msgstr "Procedura per regolare le provvigioni nelle fatture" +#~ msgid "Agent Line" +#~ msgstr "Riga agente" + +#~ msgid "Partial Commission Settled" +#~ msgstr "Provvigione parziale regolata" + +#~ msgid "Partial agent commissions" +#~ msgstr "Provvigioni parziali agente" + #~ msgid "Settled" #~ msgstr "Regolata" diff --git a/sale_commission_partial_settlement/i18n/sale_commission_partial_settlement.pot b/sale_commission_partial_settlement/i18n/sale_commission_partial_settlement.pot index 54813319a..f08feb025 100644 --- a/sale_commission_partial_settlement/i18n/sale_commission_partial_settlement.pot +++ b/sale_commission_partial_settlement/i18n/sale_commission_partial_settlement.pot @@ -31,8 +31,14 @@ msgid "Account Partial Reconcile" msgstr "" #. module: sale_commission_partial_settlement -#: model:ir.model.fields,field_description:sale_commission_partial_settlement.field_account_invoice_line_agent_partial__agent_line -msgid "Agent Line" +#: model_terms:ir.ui.view,arch_db:sale_commission_partial_settlement.account_invoice_line_agent_form_partial_only +msgid "Actual" +msgstr "" + +#. module: sale_commission_partial_settlement +#: model:ir.model.fields,field_description:sale_commission_partial_settlement.field_account_invoice_line_agent_partial__agent_id +#: model:ir.model.fields,field_description:sale_commission_partial_settlement.field_sale_commission_settlement_line_partial__agent_id +msgid "Agent" msgstr "" #. module: sale_commission_partial_settlement @@ -45,11 +51,42 @@ msgstr "" msgid "Agent detail of commission line in invoice lines" msgstr "" +#. module: sale_commission_partial_settlement +#: model:ir.model.fields,help:sale_commission_partial_settlement.field_sale_commission_settlement_line_partial__reconcile_amount +msgid "" +"Always positive amount concerned by this matching expressed in the company " +"currency." +msgstr "" + +#. module: sale_commission_partial_settlement +#: model:ir.model.fields,field_description:sale_commission_partial_settlement.field_sale_commission_settlement_line_partial__amount +msgid "Amount" +msgstr "" + +#. module: sale_commission_partial_settlement +#: code:addons/sale_commission_partial_settlement/models/sale_commission_settlement_line_partial.py:0 +#, python-format +msgid "" +"Cannot delete Partial Settlement Line for agent %(agent_name)s, amount " +"%(amount)s, date maturity %(date_maturity)s because it is already part of a " +"settlement" +msgstr "" + +#. module: sale_commission_partial_settlement +#: model_terms:ir.ui.view,arch_db:sale_commission_partial_settlement.account_invoice_line_agent_form_partial_only +msgid "Close" +msgstr "" + #. module: sale_commission_partial_settlement #: model:ir.model.fields,field_description:sale_commission_partial_settlement.field_account_invoice_line_agent_partial__amount msgid "Commission Amount" msgstr "" +#. module: sale_commission_partial_settlement +#: model:ir.model.fields,field_description:sale_commission_partial_settlement.field_account_invoice_line_agent__commission_settlement_line_partial_ids +msgid "Commission Settlement Line Partial" +msgstr "" + #. module: sale_commission_partial_settlement #: model:ir.model,name:sale_commission_partial_settlement.model_sale_commission msgid "Commission in sales" @@ -60,6 +97,12 @@ msgstr "" msgid "Companies" msgstr "" +#. module: sale_commission_partial_settlement +#: model:ir.model.fields,field_description:sale_commission_partial_settlement.field_account_invoice_line_agent_partial__company_id +#: model:ir.model.fields,field_description:sale_commission_partial_settlement.field_sale_commission_settlement_line_partial__company_id +msgid "Company" +msgstr "" + #. module: sale_commission_partial_settlement #: model:ir.model,name:sale_commission_partial_settlement.model_res_config_settings msgid "Config Settings" @@ -73,19 +116,32 @@ msgstr "" #. module: sale_commission_partial_settlement #: model:ir.model.fields,field_description:sale_commission_partial_settlement.field_account_invoice_line_agent_partial__create_uid +#: model:ir.model.fields,field_description:sale_commission_partial_settlement.field_sale_commission_settlement_line_partial__create_uid msgid "Created by" msgstr "" #. module: sale_commission_partial_settlement #: model:ir.model.fields,field_description:sale_commission_partial_settlement.field_account_invoice_line_agent_partial__create_date +#: model:ir.model.fields,field_description:sale_commission_partial_settlement.field_sale_commission_settlement_line_partial__create_date msgid "Created on" msgstr "" +#. module: sale_commission_partial_settlement +#: model:ir.model.fields,field_description:sale_commission_partial_settlement.field_sale_commission_settlement_line_partial__reconcile_credit_move_id +msgid "Credit move line" +msgstr "" + #. module: sale_commission_partial_settlement #: model:ir.model.fields,field_description:sale_commission_partial_settlement.field_account_invoice_line_agent_partial__currency_id +#: model:ir.model.fields,field_description:sale_commission_partial_settlement.field_sale_commission_settlement_line_partial__currency_id msgid "Currency" msgstr "" +#. module: sale_commission_partial_settlement +#: model:ir.model.fields,field_description:sale_commission_partial_settlement.field_sale_commission_settlement_line_partial__reconcile_debit_move_id +msgid "Debit move line" +msgstr "" + #. module: sale_commission_partial_settlement #: model:ir.model.fields,field_description:sale_commission_partial_settlement.field_account_invoice_line_agent__display_name #: model:ir.model.fields,field_description:sale_commission_partial_settlement.field_account_invoice_line_agent_partial__display_name @@ -96,14 +152,30 @@ msgstr "" #: model:ir.model.fields,field_description:sale_commission_partial_settlement.field_sale_commission_make_settle__display_name #: model:ir.model.fields,field_description:sale_commission_partial_settlement.field_sale_commission_settlement__display_name #: model:ir.model.fields,field_description:sale_commission_partial_settlement.field_sale_commission_settlement_line__display_name +#: model:ir.model.fields,field_description:sale_commission_partial_settlement.field_sale_commission_settlement_line_partial__display_name msgid "Display Name" msgstr "" +#. module: sale_commission_partial_settlement +#: model:ir.model.fields,field_description:sale_commission_partial_settlement.field_account_invoice_line_agent_partial__date_maturity +msgid "Due Date" +msgstr "" + +#. module: sale_commission_partial_settlement +#: model_terms:ir.ui.view,arch_db:sale_commission_partial_settlement.account_invoice_line_agent_form_partial_only +msgid "Forecast" +msgstr "" + #. module: sale_commission_partial_settlement #: model:ir.model.fields.selection,name:sale_commission_partial_settlement.selection__sale_commission__payment_amount_type__full msgid "Full amount" msgstr "" +#. module: sale_commission_partial_settlement +#: model:ir.model.fields,field_description:sale_commission_partial_settlement.field_account_invoice_line_agent_partial__is_settled +msgid "Fully settled" +msgstr "" + #. module: sale_commission_partial_settlement #: model:ir.model.fields,field_description:sale_commission_partial_settlement.field_account_invoice_line_agent__id #: model:ir.model.fields,field_description:sale_commission_partial_settlement.field_account_invoice_line_agent_partial__id @@ -114,11 +186,30 @@ msgstr "" #: model:ir.model.fields,field_description:sale_commission_partial_settlement.field_sale_commission_make_settle__id #: model:ir.model.fields,field_description:sale_commission_partial_settlement.field_sale_commission_settlement__id #: model:ir.model.fields,field_description:sale_commission_partial_settlement.field_sale_commission_settlement_line__id +#: model:ir.model.fields,field_description:sale_commission_partial_settlement.field_sale_commission_settlement_line_partial__id msgid "ID" msgstr "" +#. module: sale_commission_partial_settlement +#: model:ir.model.fields,field_description:sale_commission_partial_settlement.field_account_invoice_line_agent_partial__move_id +#: model:ir.model.fields,field_description:sale_commission_partial_settlement.field_sale_commission_settlement_line_partial__move_id +msgid "Invoice" +msgstr "" + +#. module: sale_commission_partial_settlement +#: model:ir.model.fields,field_description:sale_commission_partial_settlement.field_sale_commission_settlement_line_partial__invoice_agent_partial_id +msgid "Invoice Agent Partial" +msgstr "" + +#. module: sale_commission_partial_settlement +#: model:ir.model.fields,field_description:sale_commission_partial_settlement.field_account_invoice_line_agent_partial__invoice_line_id +#: model:ir.model.fields,field_description:sale_commission_partial_settlement.field_sale_commission_settlement_line_partial__invoice_line_id +msgid "Invoice Line" +msgstr "" + #. module: sale_commission_partial_settlement #: model:ir.model.fields,field_description:sale_commission_partial_settlement.field_account_invoice_line_agent_partial__invoice_line_agent_id +#: model:ir.model.fields,field_description:sale_commission_partial_settlement.field_sale_commission_settlement_line_partial__invoice_line_agent_id msgid "Invoice Line Agent" msgstr "" @@ -127,6 +218,12 @@ msgstr "" msgid "Invoice Line Agent Partial" msgstr "" +#. module: sale_commission_partial_settlement +#: model:ir.model.fields,field_description:sale_commission_partial_settlement.field_account_invoice_line_agent_partial__invoice_date +#: model:ir.model.fields,field_description:sale_commission_partial_settlement.field_sale_commission_settlement_line_partial__invoice_date +msgid "Invoice date" +msgstr "" + #. module: sale_commission_partial_settlement #: model:ir.model.fields,field_description:sale_commission_partial_settlement.field_sale_commission_settlement__settlement_date_to msgid "Invoice date up to" @@ -137,6 +234,11 @@ msgstr "" msgid "Is Fully Settled" msgstr "" +#. module: sale_commission_partial_settlement +#: model:ir.model.fields,field_description:sale_commission_partial_settlement.field_sale_commission_settlement_line_partial__is_settled +msgid "Is Settled" +msgstr "" + #. module: sale_commission_partial_settlement #: model:ir.model.fields,field_description:sale_commission_partial_settlement.field_account_invoice_line_agent____last_update #: model:ir.model.fields,field_description:sale_commission_partial_settlement.field_account_invoice_line_agent_partial____last_update @@ -147,16 +249,19 @@ msgstr "" #: model:ir.model.fields,field_description:sale_commission_partial_settlement.field_sale_commission_make_settle____last_update #: model:ir.model.fields,field_description:sale_commission_partial_settlement.field_sale_commission_settlement____last_update #: model:ir.model.fields,field_description:sale_commission_partial_settlement.field_sale_commission_settlement_line____last_update +#: model:ir.model.fields,field_description:sale_commission_partial_settlement.field_sale_commission_settlement_line_partial____last_update msgid "Last Modified on" msgstr "" #. module: sale_commission_partial_settlement #: model:ir.model.fields,field_description:sale_commission_partial_settlement.field_account_invoice_line_agent_partial__write_uid +#: model:ir.model.fields,field_description:sale_commission_partial_settlement.field_sale_commission_settlement_line_partial__write_uid msgid "Last Updated by" msgstr "" #. module: sale_commission_partial_settlement #: model:ir.model.fields,field_description:sale_commission_partial_settlement.field_account_invoice_line_agent_partial__write_date +#: model:ir.model.fields,field_description:sale_commission_partial_settlement.field_sale_commission_settlement_line_partial__write_date msgid "Last Updated on" msgstr "" @@ -165,6 +270,16 @@ msgstr "" msgid "Line of a commission settlement" msgstr "" +#. module: sale_commission_partial_settlement +#: model:ir.model.fields,field_description:sale_commission_partial_settlement.field_sale_commission_settlement_line_partial__date_maturity +msgid "Max Date of Matched Lines" +msgstr "" + +#. module: sale_commission_partial_settlement +#: model:ir.model.fields,field_description:sale_commission_partial_settlement.field_account_invoice_line_agent_partial__move_line_id +msgid "Move Line" +msgstr "" + #. module: sale_commission_partial_settlement #: model:ir.model.fields.selection,name:sale_commission_partial_settlement.selection__sale_commission__payment_amount_type__paid msgid "Paid amount" @@ -176,21 +291,42 @@ msgid "Partial Commission Amount Settled" msgstr "" #. module: sale_commission_partial_settlement -#: model:ir.model.fields,field_description:sale_commission_partial_settlement.field_account_partial_reconcile__partial_commission_settled -msgid "Partial Commission Settled" +#: model:ir.actions.act_window,name:sale_commission_partial_settlement.action_invoice_line_agent_partial +#: model:ir.ui.menu,name:sale_commission_partial_settlement.menu_partial_commission_forecast +msgid "Partial Commission Forecast" +msgstr "" + +#. module: sale_commission_partial_settlement +#: code:addons/sale_commission_partial_settlement/models/account_invoice_line_agent.py:0 +#: model:ir.actions.act_window,name:sale_commission_partial_settlement.action_sale_commission_settlement_line_partial +#: model:ir.ui.menu,name:sale_commission_partial_settlement.menu_partial_commissions +#, python-format +msgid "Partial Commissions" msgstr "" #. module: sale_commission_partial_settlement #: model:ir.model,name:sale_commission_partial_settlement.model_account_partial_reconcile +#: model:ir.model.fields,field_description:sale_commission_partial_settlement.field_sale_commission_settlement_line_partial__partial_reconcile_id msgid "Partial Reconcile" msgstr "" #. module: sale_commission_partial_settlement #: model:ir.model,name:sale_commission_partial_settlement.model_account_invoice_line_agent_partial -msgid "Partial agent commissions" +msgid "Partial agent commissions. " msgstr "" #. module: sale_commission_partial_settlement +#: model:ir.model,name:sale_commission_partial_settlement.model_sale_commission_settlement_line_partial +msgid "Partial settlements. " +msgstr "" + +#. module: sale_commission_partial_settlement +#: model:ir.model.fields,field_description:sale_commission_partial_settlement.field_sale_commission_settlement_line_partial__reconcile_amount +msgid "Payment amount" +msgstr "" + +#. module: sale_commission_partial_settlement +#: model:ir.model.fields,field_description:sale_commission_partial_settlement.field_account_invoice_line_agent__payment_amount_type #: model:ir.model.fields,field_description:sale_commission_partial_settlement.field_sale_commission__payment_amount_type msgid "Payment amount type" msgstr "" @@ -201,15 +337,28 @@ msgid "Payment date up to" msgstr "" #. module: sale_commission_partial_settlement +#: model:ir.model.fields,field_description:sale_commission_partial_settlement.field_account_invoice_line_agent_partial__settled_amount #: model:ir.model.fields,field_description:sale_commission_partial_settlement.field_sale_commission_settlement_line__settled_amount msgid "Settled Amount" msgstr "" #. module: sale_commission_partial_settlement #: model:ir.model,name:sale_commission_partial_settlement.model_sale_commission_settlement +#: model:ir.model.fields,field_description:sale_commission_partial_settlement.field_sale_commission_settlement_line_partial__settlement_id msgid "Settlement" msgstr "" +#. module: sale_commission_partial_settlement +#: model:ir.model.fields,field_description:sale_commission_partial_settlement.field_sale_commission_settlement_line_partial__settlement_line_ids +msgid "Settlement Line" +msgstr "" + +#. module: sale_commission_partial_settlement +#: model:ir.model.fields,field_description:sale_commission_partial_settlement.field_account_invoice_line_agent_partial__settlement_line_partial_ids +#: model:ir.model.fields,field_description:sale_commission_partial_settlement.field_sale_commission_settlement_line__settlement_line_partial_ids +msgid "Settlement Line Partial" +msgstr "" + #. module: sale_commission_partial_settlement #: model:ir.model.fields,field_description:sale_commission_partial_settlement.field_res_company__commission_show_settlement_dates #: model:ir.model.fields,field_description:sale_commission_partial_settlement.field_res_config_settings__commission_show_settlement_dates @@ -222,16 +371,36 @@ msgstr "" msgid "Shows the dates used to create the settlement itself" msgstr "" +#. module: sale_commission_partial_settlement +#: model:ir.model.fields,help:sale_commission_partial_settlement.field_sale_commission_settlement_line_partial__date_maturity +msgid "" +"Technical field used to determine at which date this reconciliation needs to" +" be shown on the aged receivable/payable reports." +msgstr "" + #. module: sale_commission_partial_settlement #: model:ir.model.fields,help:sale_commission_partial_settlement.field_sale_commission_settlement__settlement_date_to msgid "The invoice date used to create the settlement" msgstr "" +#. module: sale_commission_partial_settlement +#: model:ir.model.fields,help:sale_commission_partial_settlement.field_account_invoice_line_agent_partial__move_id +#: model:ir.model.fields,help:sale_commission_partial_settlement.field_sale_commission_settlement_line_partial__move_id +msgid "The move of this entry line." +msgstr "" + #. module: sale_commission_partial_settlement #: model:ir.model.fields,help:sale_commission_partial_settlement.field_sale_commission_settlement__settlement_date_payment_to msgid "The payment date used to create the settlement" msgstr "" +#. module: sale_commission_partial_settlement +#: model:ir.model.fields,help:sale_commission_partial_settlement.field_account_invoice_line_agent_partial__date_maturity +msgid "" +"This field is used for payable and receivable journal entries. You can put " +"the limit date for the payment of this line." +msgstr "" + #. module: sale_commission_partial_settlement #: model:ir.model,name:sale_commission_partial_settlement.model_sale_commission_make_settle msgid "Wizard for settling commissions in invoices" diff --git a/sale_commission_partial_settlement/migrations/14.0.1.2.1/post-migrate.py b/sale_commission_partial_settlement/migrations/14.0.1.2.1/post-migrate.py index ed23e8407..6bcd625a4 100644 --- a/sale_commission_partial_settlement/migrations/14.0.1.2.1/post-migrate.py +++ b/sale_commission_partial_settlement/migrations/14.0.1.2.1/post-migrate.py @@ -5,8 +5,11 @@ def recompute_partial_commission_settled(env): """ Recompute field "partial_commission_settled" of model "account.partial.reconcile" + Removed in future versions of the module """ - env["account.partial.reconcile"].search([])._compute_partial_commission_settled() + partial_reconcile = env["account.partial.reconcile"] + if getattr(partial_reconcile, "_compute_partial_commission_settled", False): + partial_reconcile.search([])._compute_partial_commission_settled() @openupgrade.migrate() diff --git a/sale_commission_partial_settlement/migrations/14.0.2.0.0/post-migrate.py b/sale_commission_partial_settlement/migrations/14.0.2.0.0/post-migrate.py new file mode 100644 index 000000000..ceef43bda --- /dev/null +++ b/sale_commission_partial_settlement/migrations/14.0.2.0.0/post-migrate.py @@ -0,0 +1,35 @@ +import logging + +from openupgradelib import openupgrade + +_logger = logging.getLogger(__name__) + + +def recompute_partial_commission_forecast(env): + """ + Recompute forecast for all partial commissions + """ + _logger.info( + "Computing partial commission forecast for all invoices. " + "This may take some time..." + ) + limit = 5000 + offset = 0 + while True: + aila = env["account.invoice.line.agent"].search([], limit=limit, offset=offset) + if not aila: + break + offset += limit + aila._compute_invoice_line_agent_partial_ids() + while env.all.tocompute: + aila.flush() + aila.invalidate_cache() # avoid MemoryError + _logger.info( + "%(offset)s invoice commission lines computed!" % {"offset": str(offset)} + ) + _logger.info("Computation of partial commission forecast completed!") + + +@openupgrade.migrate() +def migrate(env, version): + recompute_partial_commission_forecast(env) diff --git a/sale_commission_partial_settlement/models/__init__.py b/sale_commission_partial_settlement/models/__init__.py index da2661b51..562d39d4b 100644 --- a/sale_commission_partial_settlement/models/__init__.py +++ b/sale_commission_partial_settlement/models/__init__.py @@ -6,3 +6,4 @@ from . import sale_commission from . import sale_commission_settlement from . import sale_commission_settlement_line +from . import sale_commission_settlement_line_partial diff --git a/sale_commission_partial_settlement/models/account_invoice_line_agent.py b/sale_commission_partial_settlement/models/account_invoice_line_agent.py index c30b7ab62..62a1705b9 100644 --- a/sale_commission_partial_settlement/models/account_invoice_line_agent.py +++ b/sale_commission_partial_settlement/models/account_invoice_line_agent.py @@ -1,13 +1,14 @@ # Copyright 2023 Nextev # License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). -from odoo import api, fields, models +from odoo import _, api, fields, models from odoo.tools.float_utils import float_compare class AccountInvoiceLineAgent(models.Model): _inherit = "account.invoice.line.agent" + payment_amount_type = fields.Selection(related="commission_id.payment_amount_type") partial_settled = fields.Monetary( string="Partial Commission Amount Settled", compute="_compute_partial_settled", @@ -15,26 +16,30 @@ class AccountInvoiceLineAgent(models.Model): ) is_fully_settled = fields.Boolean(compute="_compute_is_fully_settled", store=True) invoice_line_agent_partial_ids = fields.One2many( - "account.invoice.line.agent.partial", "invoice_line_agent_id" + "account.invoice.line.agent.partial", + "invoice_line_agent_id", + compute="_compute_invoice_line_agent_partial_ids", + store=True, + ) + commission_settlement_line_partial_ids = fields.One2many( + "sale.commission.settlement.line.partial", + compute="_compute_commission_settlement_line_partial_ids", ) @api.depends( - "invoice_line_agent_partial_ids.amount", - "invoice_line_agent_partial_ids.agent_line.settlement_id.state", + "invoice_line_agent_partial_ids.settled_amount", ) def _compute_partial_settled(self): for rec in self: rec.partial_settled = sum( - ailap.amount - for ailap in rec.invoice_line_agent_partial_ids - if any( - settlement.state != "cancel" - for settlement in ailap.mapped("agent_line.settlement_id") - ) + ailap.settled_amount for ailap in rec.invoice_line_agent_partial_ids ) @api.depends( - "commission_id.payment_amount_type", "amount", "settled", "partial_settled" + "commission_id.payment_amount_type", + "amount", + "settled", + "partial_settled", ) def _compute_is_fully_settled(self): for rec in self: @@ -50,62 +55,51 @@ def _compute_is_fully_settled(self): == 0 ) - def _partial_commissions(self, date_payment_to): + @api.depends( + "amount", + "commission_id.payment_amount_type", + "object_id.move_id.move_type", + "object_id.move_id.line_ids.amount_residual", + ) + def _compute_invoice_line_agent_partial_ids(self): """ - This method iterates through agent invoice lines and calculates - partial commissions based on the payment amount. - If the partial payment amount is greater than the invoice line - amount, it fully settles the corresponding agent line. - Otherwise, it calculates the partial commission proportionally to - the amount paid, invoice amount and total commissions. + Create an account.invoice.line.agent.partial for each + payment term move line """ - partial_lines_to_settle = [] - partial_payment_remaining = {} - for line in self: - line_total_amount = line.amount - for ( - partial, - amount, - counterpart_line, - ) in line.invoice_id._get_reconciled_invoices_partials(): - if partial.partial_commission_settled: - continue - elif date_payment_to and date_payment_to < counterpart_line.date: - break - if partial.id in partial_payment_remaining: - payment_amount = partial_payment_remaining[partial.id][ - "remaining_amount" - ] - else: - payment_amount = amount - partial_payment_remaining[partial.id] = {"remaining_amount": amount} - if line.object_id.price_total <= payment_amount: - partial_lines_to_settle.append( - { - "invoice_line_agent_id": line.id, - "currency_id": line.currency_id.id, - "amount": line_total_amount, - "account_partial_reconcile_id": partial.id, - } + for rec in self: + # Prevent compute from running too early + if not rec.id: + continue + ailap_model = rec.invoice_line_agent_partial_ids.browse() + if rec.commission_id.payment_amount_type != "paid" or rec.amount == 0: + rec.invoice_line_agent_partial_ids = False + continue + pay_term_lines = rec.object_id.move_id.line_ids.filtered( + lambda line: line.account_internal_type in ("receivable", "payable") + ) + forecast_lines = rec.invoice_line_agent_partial_ids.mapped("move_line_id") + for move_line in pay_term_lines: + if move_line not in forecast_lines: + ailap_model.create( + {"move_line_id": move_line.id, "invoice_line_agent_id": rec.id} ) - partial_payment_remaining[partial.id] = { - "remaining_amount": amount - line.object_id.price_total - } - break - paid_in_proportion = payment_amount / line.invoice_id.amount_total - partial_commission = ( - line.invoice_id.commission_total * paid_in_proportion - ) - partial_lines_to_settle.append( - { - "invoice_line_agent_id": line.id, - "currency_id": line.currency_id.id, - "amount": partial_commission, - "account_partial_reconcile_id": partial.id, - } - ) - partial_agent_lines = self.env["account.invoice.line.agent.partial"].create( - partial_lines_to_settle + def _compute_commission_settlement_line_partial_ids(self): + for rec in self: + rec.commission_settlement_line_partial_ids = ( + rec.invoice_line_agent_partial_ids.settlement_line_partial_ids + ) + + def action_see_partial_commissions(self): + view = self.env.ref( + "sale_commission_partial_settlement.account_invoice_line_agent_form_partial_only" ) - return partial_agent_lines + return { + "name": _("Partial Commissions"), + "type": "ir.actions.act_window", + "view_mode": "form", + "res_model": self._name, + "views": [(view.id, "form")], + "target": "new", + "res_id": self.id, + } diff --git a/sale_commission_partial_settlement/models/account_invoice_line_agent_partial.py b/sale_commission_partial_settlement/models/account_invoice_line_agent_partial.py index 181a7f8c9..a20f4ac88 100644 --- a/sale_commission_partial_settlement/models/account_invoice_line_agent_partial.py +++ b/sale_commission_partial_settlement/models/account_invoice_line_agent_partial.py @@ -1,28 +1,130 @@ # Copyright 2023 Nextev # License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). -from odoo import fields, models +from odoo import api, fields, models class AccountInvoiceLineAgentPartial(models.Model): _name = "account.invoice.line.agent.partial" - _description = "Partial agent commissions" + _description = "Partial agent commissions. " + "Tracks the expected commissions." + move_line_id = fields.Many2one( + "account.move.line", + required=True, + ondelete="cascade", + ) invoice_line_agent_id = fields.Many2one( "account.invoice.line.agent", required=True, ondelete="cascade" ) - # logically a One2one - agent_line = fields.Many2many( - comodel_name="sale.commission.settlement.line", - relation="settlement_agent_line_partial_rel", - column1="agent_line_partial_id", - column2="settlement_id", - copy=False, + settlement_line_partial_ids = fields.One2many( + "sale.commission.settlement.line.partial", + "invoice_agent_partial_id", + compute="_compute_settlement_line_partial_ids", + store=True, ) - account_partial_reconcile_id = fields.Many2one("account.partial.reconcile") + account_partial_reconcile_id = fields.Many2one( + "account.partial.reconcile" + ) # Deprecated, left for compatibility with previous versions amount = fields.Monetary( + compute="_compute_amount", + store=True, string="Commission Amount", ) currency_id = fields.Many2one( related="invoice_line_agent_id.currency_id", ) + settled_amount = fields.Monetary( + compute="_compute_settled_amount", + store=True, + ) + is_settled = fields.Boolean( + compute="_compute_settled_amount", store=True, string="Fully settled" + ) + + move_id = fields.Many2one(related="move_line_id.move_id", string="Invoice") + date_maturity = fields.Date( + related="move_line_id.date_maturity", + store=True, + ) + invoice_line_id = fields.Many2one( + related="invoice_line_agent_id.object_id", string="Invoice Line" + ) + agent_id = fields.Many2one( + related="invoice_line_agent_id.agent_id", + store=True, + ) + invoice_date = fields.Date( + related="invoice_line_agent_id.invoice_date", + store=True, + ) + company_id = fields.Many2one("res.company", related="move_id.company_id") + + @api.depends( + "settlement_line_partial_ids.amount", + "settlement_line_partial_ids.is_settled", + ) + def _compute_settled_amount(self): + for rec in self: + rec.settled_amount = sum( + x.currency_id._convert( + x.amount, + rec.currency_id, + rec.company_id, + rec.date_maturity or rec.move_id.invoice_date, + ) + for x in rec.settlement_line_partial_ids + if x.is_settled + ) + rec.is_settled = rec.currency_id.is_zero(rec.settled_amount - rec.amount) + + @api.depends( + "move_line_id.balance", + "move_line_id.move_id.amount_total", + "invoice_line_agent_id.amount", + ) + def _compute_amount(self): + for rec in self: + # move_line_id.balance + # invoice_line_agent_id.amount + # move_line_id.move_id.amount_total_signed + # all 3 terms are signed + rec.amount = ( + rec.move_line_id.balance + * rec.invoice_line_agent_id.amount + / rec.move_line_id.move_id.amount_total_signed + ) + + @api.depends( + "invoice_line_agent_id.amount", + "move_line_id.matched_debit_ids", + "move_line_id.matched_credit_ids", + ) + def _compute_settlement_line_partial_ids(self): + """ + Cf. method _get_reconciled_invoices_partials + in odoo.addons.account.models.account_move.AccountMove. + """ + for rec in self: + if not rec.invoice_line_agent_id.amount: + rec.settlement_line_partial_ids = False + continue + pay_term_line = rec.move_line_id + matched_partials = ( + pay_term_line.matched_debit_ids + pay_term_line.matched_credit_ids + ) + if not matched_partials: + continue + existing_partial_settlements = rec.settlement_line_partial_ids + existing_partials = existing_partial_settlements.mapped( + "partial_reconcile_id" + ) + + for partial in matched_partials: + if partial not in existing_partials: + existing_partial_settlements.create( + { + "partial_reconcile_id": partial.id, + "invoice_agent_partial_id": rec.id, + } + ) diff --git a/sale_commission_partial_settlement/models/account_partial_reconcile.py b/sale_commission_partial_settlement/models/account_partial_reconcile.py index e603c6baf..db6416154 100644 --- a/sale_commission_partial_settlement/models/account_partial_reconcile.py +++ b/sale_commission_partial_settlement/models/account_partial_reconcile.py @@ -1,26 +1,9 @@ -from odoo import api, fields, models +from odoo import fields, models class AccountPartialReconcile(models.Model): _inherit = "account.partial.reconcile" - # Logically a One2one account_invoice_line_agent_partial_ids = fields.One2many( "account.invoice.line.agent.partial", "account_partial_reconcile_id" - ) - partial_commission_settled = fields.Boolean( - compute="_compute_partial_commission_settled", store=True - ) - - @api.depends( - "account_invoice_line_agent_partial_ids", - "account_invoice_line_agent_partial_ids.agent_line.settlement_id.state", - ) - def _compute_partial_commission_settled(self): - for rec in self: - rec.partial_commission_settled = any( - settlement.state != "cancel" - for settlement in rec.mapped( - "account_invoice_line_agent_partial_ids.agent_line.settlement_id" - ) - ) + ) # Deprecated, left for compatibility with previous versions diff --git a/sale_commission_partial_settlement/models/sale_commission_settlement.py b/sale_commission_partial_settlement/models/sale_commission_settlement.py index 0f5225704..f5d6727fe 100644 --- a/sale_commission_partial_settlement/models/sale_commission_settlement.py +++ b/sale_commission_partial_settlement/models/sale_commission_settlement.py @@ -17,7 +17,3 @@ class SaleCommissionSettlement(models.Model): string="Payment date up to", help="The payment date used to create the settlement", ) - - def unlink(self): - self.mapped("line_ids.agent_line_partial_ids").unlink() - return super().unlink() diff --git a/sale_commission_partial_settlement/models/sale_commission_settlement_line.py b/sale_commission_partial_settlement/models/sale_commission_settlement_line.py index a5ebda029..1eb0d047d 100644 --- a/sale_commission_partial_settlement/models/sale_commission_settlement_line.py +++ b/sale_commission_partial_settlement/models/sale_commission_settlement_line.py @@ -9,6 +9,10 @@ class SettlementLine(models.Model): relation="settlement_agent_line_partial_rel", column1="settlement_id", column2="agent_line_partial_id", + ) # Deprecated, left for compatibility with previous versions + settlement_line_partial_ids = fields.Many2many( + comodel_name="sale.commission.settlement.line.partial", + relation="settlement_line_line_partial_rel", ) settled_amount = fields.Monetary( compute="_compute_settled_amount", @@ -21,10 +25,11 @@ class SettlementLine(models.Model): def _compute_settled_amount(self): for rec in self: if rec.commission_id.payment_amount_type == "paid": - rec.settled_amount = rec.agent_line_partial_ids[:1].amount + if rec.settlement_line_partial_ids: + rec.settled_amount = sum( + x.amount for x in rec.settlement_line_partial_ids + ) + else: # compatibility with previous versions + rec.settled_amount = rec.agent_line_partial_ids[:1].amount else: rec.settled_amount = rec.agent_line[:1].amount - - def unlink(self): - self.mapped("agent_line_partial_ids").unlink() - return super().unlink() diff --git a/sale_commission_partial_settlement/models/sale_commission_settlement_line_partial.py b/sale_commission_partial_settlement/models/sale_commission_settlement_line_partial.py new file mode 100644 index 000000000..6c9221245 --- /dev/null +++ b/sale_commission_partial_settlement/models/sale_commission_settlement_line_partial.py @@ -0,0 +1,122 @@ +from odoo import _, api, fields, models +from odoo.exceptions import UserError + + +class SettlementLinePartial(models.Model): + _name = "sale.commission.settlement.line.partial" + _description = "Partial settlements. " + "Tracks the effective settled amounts relative to the expected." + + settlement_line_ids = fields.Many2many( + comodel_name="sale.commission.settlement.line", + relation="settlement_line_line_partial_rel", + ) + invoice_agent_partial_id = fields.Many2one( + comodel_name="account.invoice.line.agent.partial", + required=True, + ondelete="cascade", + ) + partial_reconcile_id = fields.Many2one( + comodel_name="account.partial.reconcile", + required=True, + ondelete="cascade", + ) + amount = fields.Monetary( + compute="_compute_amount", + store=True, + ) + move_id = fields.Many2one(related="invoice_agent_partial_id.move_id") + company_id = fields.Many2one(related="move_id.company_id") + invoice_line_id = fields.Many2one( + related="invoice_agent_partial_id.invoice_line_id" + ) + invoice_date = fields.Date( + related="invoice_agent_partial_id.invoice_date", store=True + ) + invoice_line_agent_id = fields.Many2one( + related="invoice_agent_partial_id.invoice_line_agent_id" + ) + agent_id = fields.Many2one( + related="invoice_agent_partial_id.agent_id", store=True, index=True + ) + currency_id = fields.Many2one(related="invoice_agent_partial_id.currency_id") + reconcile_amount = fields.Monetary( + related="partial_reconcile_id.amount", string="Payment amount" + ) + date_maturity = fields.Date( + related="partial_reconcile_id.max_date", store=True, index=True + ) + reconcile_debit_move_id = fields.Many2one( + "account.move.line", + related="partial_reconcile_id.debit_move_id", + string="Debit move line", + ) + reconcile_credit_move_id = fields.Many2one( + "account.move.line", + related="partial_reconcile_id.credit_move_id", + string="Credit move line", + ) + # Mostly to ease user navigation + settlement_id = fields.Many2one( + "sale.commission.settlement", + compute="_compute_settlement_id", + store=True, + ) + is_settled = fields.Boolean( + compute="_compute_settlement_id", store=True, index=True + ) + + def name_get(self): + return [ + ( + rec.id, + "%(invoice_line)s - %(amount)s" + % { + "invoice_line": rec.invoice_line_id.display_name, + "amount": rec.amount, + }, + ) + for rec in self + ] + + @api.depends( + "partial_reconcile_id.amount", + "invoice_agent_partial_id.invoice_line_agent_id.amount", + "invoice_agent_partial_id.move_id.amount_total", + ) + def _compute_amount(self): + for rec in self: + # partial_reconcile_id.amount is unsigned + # invoice_agent_partial_id.move_id.amount_total is unsigned + # -> Sign depends only on + # invoice_agent_partial_id.invoice_line_agent_id.amount + rec.amount = ( + rec.partial_reconcile_id.amount + * rec.invoice_agent_partial_id.invoice_line_agent_id.amount + / rec.invoice_agent_partial_id.move_id.amount_total + ) + + @api.depends("settlement_line_ids.settlement_id.state") + def _compute_settlement_id(self): + for rec in self: + settlements = rec.settlement_line_ids.mapped("settlement_id").filtered( + lambda x: x.state != "cancel" + ) + rec.settlement_id = settlements[:1] + rec.is_settled = bool(settlements) + + def unlink(self): + for rec in self: + if rec.is_settled: + raise UserError( + _( + "Cannot delete Partial Settlement Line " + "for agent %(agent_name)s, amount %(amount)s, " + "date maturity %(date_maturity)s because it is " + "already part of a settlement", + agent_name=rec.agent_id.display_name, + amount=rec.amount, + date_maturity=rec.date_maturity, + ) + ) + super().unlink() diff --git a/sale_commission_partial_settlement/readme/ROADMAP.rst b/sale_commission_partial_settlement/readme/ROADMAP.rst new file mode 100644 index 000000000..0c9e55a2c --- /dev/null +++ b/sale_commission_partial_settlement/readme/ROADMAP.rst @@ -0,0 +1,8 @@ +Due to the data structure of the module before version 14.0.2.0.0, +there is no way to link partial settlements created before this version +of the module to a specific payment or account move, and therefore to the +new data structure existing after the changes. + +A "best effort" migration of previous data could be developed to +ensure a smoother transition between versions. + diff --git a/sale_commission_partial_settlement/security/ir.model.access.csv b/sale_commission_partial_settlement/security/ir.model.access.csv index 4c54861bb..81a6173bf 100644 --- a/sale_commission_partial_settlement/security/ir.model.access.csv +++ b/sale_commission_partial_settlement/security/ir.model.access.csv @@ -1,3 +1,5 @@ id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink access_account_invoice_line_agent_partial,access_account_invoice_line_agent_partial,model_account_invoice_line_agent_partial,sales_team.group_sale_salesman,1,1,1,1 access_account_invoice_line_agent_partial_user,access_account_invoice_line_agent_partial_user,model_account_invoice_line_agent_partial,base.group_user,1,0,0,0 +access_sale_commission_settlement_line_partial,access_sale_commission_settlement_line_partial,model_sale_commission_settlement_line_partial,sales_team.group_sale_salesman,1,1,1,1 +access_sale_commission_settlement_line_partial_user,access_sale_commission_settlement_line_partial_user,model_sale_commission_settlement_line_partial,base.group_user,1,0,0,0 diff --git a/sale_commission_partial_settlement/static/description/index.html b/sale_commission_partial_settlement/static/description/index.html index 9cca39c7a..7e74f9684 100644 --- a/sale_commission_partial_settlement/static/description/index.html +++ b/sale_commission_partial_settlement/static/description/index.html @@ -367,7 +367,7 @@

Sales commissions based on paid amount

!! This file is generated by oca-gen-addon-readme !! !! changes will be overwritten. !! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -!! source digest: sha256:9596c13efc487356fc34bac45ca9c0138c0ec5127e6e12f5427aea0a1630db80 +!! source digest: sha256:5a28fe32a76a6595689804a4dbbe29bb0256a29216618dc9d53c419256078a6c !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -->

Beta License: AGPL-3 OCA/commission Translate me on Weblate Try me on Runboat

This module allows to settle commissions based on paid amount.

@@ -375,11 +375,12 @@

Sales commissions based on paid amount

Behavior for commission settlements will be as per module description.

+
+

Known issues / Roadmap

+

Due to the data structure of the module before version 14.0.2.0.0, +there is no way to link partial settlements created before this version +of the module to a specific payment or account move, and therefore to the +new data structure existing after the changes.

+

A “best effort” migration of previous data could be developed to +ensure a smoother transition between versions.

+
-

Bug Tracker

+

Bug Tracker

Bugs are tracked on GitHub Issues. In case of trouble, please check there if your issue has already been reported. If you spotted it first, help us to smash it by providing a detailed and welcomed @@ -402,16 +412,16 @@

Bug Tracker

Do not contact contributors directly about support or help with technical issues.

-

Credits

+

Credits

-

Authors

+

Authors

  • Nextev Srl
  • Ooops
-

Contributors

+

Contributors

-

Maintainers

+

Maintainers

This module is maintained by the OCA.

Odoo Community Association diff --git a/sale_commission_partial_settlement/tests/test_partial_settlement.py b/sale_commission_partial_settlement/tests/test_partial_settlement.py index 66ba38ea4..2f510b07d 100644 --- a/sale_commission_partial_settlement/tests/test_partial_settlement.py +++ b/sale_commission_partial_settlement/tests/test_partial_settlement.py @@ -19,7 +19,7 @@ def setUpClass(cls): "name": "20% fixed commission (Net amount) - Payment Based - Partial", "fix_qty": 20.0, "invoice_state": "paid", - "amount_base_type": "net_amount", + "amount_base_type": "gross_amount", "payment_amount_type": "paid", } ) @@ -61,7 +61,7 @@ def setUpClass(cls): { "name": "10% fixed commission (Net amount) - Invoice Based", "fix_qty": 10.0, - "amount_base_type": "net_amount", + "amount_base_type": "gross_amount", } ) cls.agent_biweekly = cls.res_partner_model.create( @@ -142,11 +142,10 @@ def _invoice_sale_order(self, sale_order, date=None): def _settle_agent(self, agent=None, period=None, date=None, date_payment_to=None): vals = { "date_to": ( - fields.Datetime.from_string(fields.Datetime.now()) - + relativedelta(months=period) - ) - if period - else date, + (fields.Datetime.now() + relativedelta(months=period)) + if period + else date + ), "date_payment_to": date_payment_to, } if agent: @@ -202,7 +201,13 @@ def test_partial_payment_amount_settlement(self): payment_difference_handling="open", ) self.assertTrue(invoice._get_reconciled_invoices_partials()) - self._settle_agent(self.agent_monthly, 1, date_payment_to=datetime.now()) + # fix flaky test and ensure computes run + invoice.flush() + self._settle_agent( + self.agent_monthly, + 2, + date_payment_to=datetime.today() + relativedelta(months=2), + ) settlements = self.env["sale.commission.settlement"].search( [ ( diff --git a/sale_commission_partial_settlement/views/account_invoice_line_agent_partial_views.xml b/sale_commission_partial_settlement/views/account_invoice_line_agent_partial_views.xml new file mode 100644 index 000000000..5cbab28a6 --- /dev/null +++ b/sale_commission_partial_settlement/views/account_invoice_line_agent_partial_views.xml @@ -0,0 +1,56 @@ + + + + invoice.line.agent.partial.tree.embedded + account.invoice.line.agent.partial + 999 + + + + + + + + + + + + + invoice.line.agent.partial.tree + account.invoice.line.agent.partial + + primary + + + 0 + + + + + + + + + invoice.line.agent.partial.search + account.invoice.line.agent.partial + + + + + + + + + + Partial Commission Forecast + account.invoice.line.agent.partial + tree + + + diff --git a/sale_commission_partial_settlement/views/account_invoice_line_agent_views.xml b/sale_commission_partial_settlement/views/account_invoice_line_agent_views.xml new file mode 100644 index 000000000..62d1e2c0c --- /dev/null +++ b/sale_commission_partial_settlement/views/account_invoice_line_agent_views.xml @@ -0,0 +1,52 @@ + + + + account.invoice.line.agent + + + + +