diff --git a/res_partner_expense_link/README.rst b/res_partner_expense_link/README.rst new file mode 100644 index 00000000000..c047bb0ad1d --- /dev/null +++ b/res_partner_expense_link/README.rst @@ -0,0 +1,76 @@ +======================== +Res partner expense link +======================== + +.. + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + !! This file is generated by oca-gen-addon-readme !! + !! changes will be overwritten. !! + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + !! source digest: sha256:c5794d38e39d83abff67095c05d4a7338eb917e03e34c931c9265841c133d629 + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + +.. |badge1| image:: https://img.shields.io/badge/maturity-Beta-yellow.png + :target: https://odoo-community.org/page/development-status + :alt: Beta +.. |badge2| image:: https://img.shields.io/badge/licence-AGPL--3-blue.png + :target: http://www.gnu.org/licenses/agpl-3.0-standalone.html + :alt: License: AGPL-3 +.. |badge3| image:: https://img.shields.io/badge/github-OCA%2Fpartner--contact-lightgray.png?logo=github + :target: https://github.com/OCA/partner-contact/tree/15.0/res_partner_expense_link + :alt: OCA/partner-contact +.. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png + :target: https://translation.odoo-community.org/projects/partner-contact-15-0/partner-contact-15-0-res_partner_expense_link + :alt: Translate me on Weblate +.. |badge5| image:: https://img.shields.io/badge/runboat-Try%20me-875A7B.png + :target: https://runboat.odoo-community.org/builds?repo=OCA/partner-contact&target_branch=15.0 + :alt: Try me on Runboat + +|badge1| |badge2| |badge3| |badge4| |badge5| + +This module adds a smart button to the client file to grant direct access to their expenses + +**Table of contents** + +.. contents:: + :local: + +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 +`feedback `_. + +Do not contact contributors directly about support or help with technical issues. + +Credits +======= + +Authors +~~~~~~~ + +* Ecosoft + +Contributors +~~~~~~~~~~~~ + +* Saran Lim. + +Maintainers +~~~~~~~~~~~ + +This module is maintained by the OCA. + +.. image:: https://odoo-community.org/logo.png + :alt: Odoo Community Association + :target: https://odoo-community.org + +OCA, or the Odoo Community Association, is a nonprofit organization whose +mission is to support the collaborative development of Odoo features and +promote its widespread use. + +This module is part of the `OCA/partner-contact `_ project on GitHub. + +You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute. diff --git a/res_partner_expense_link/__init__.py b/res_partner_expense_link/__init__.py new file mode 100644 index 00000000000..0650744f6bc --- /dev/null +++ b/res_partner_expense_link/__init__.py @@ -0,0 +1 @@ +from . import models diff --git a/res_partner_expense_link/__manifest__.py b/res_partner_expense_link/__manifest__.py new file mode 100644 index 00000000000..a0924cb164e --- /dev/null +++ b/res_partner_expense_link/__manifest__.py @@ -0,0 +1,21 @@ +# Copyright 2024 Ecosoft Co., Ltd. (http://ecosoft.co.th) +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + +{ + "name": "Res partner expense link", + "summary": "Adds a smart button to grant direct access to their expenses", + "version": "15.0.1.0.0", + "category": "Expenses", + "author": "Ecosoft, Odoo Community Association (OCA)", + "website": "https://github.com/OCA/partner-contact", + "license": "AGPL-3", + "depends": [ + "contacts", + "hr_expense", + ], + "data": [ + "views/hr_expense_views.xml", + "views/res_partner_view.xml", + ], + "installable": True, +} diff --git a/res_partner_expense_link/models/__init__.py b/res_partner_expense_link/models/__init__.py new file mode 100644 index 00000000000..91fed54d404 --- /dev/null +++ b/res_partner_expense_link/models/__init__.py @@ -0,0 +1 @@ +from . import res_partner diff --git a/res_partner_expense_link/models/res_partner.py b/res_partner_expense_link/models/res_partner.py new file mode 100644 index 00000000000..93446fda7b9 --- /dev/null +++ b/res_partner_expense_link/models/res_partner.py @@ -0,0 +1,29 @@ +# Copyright 2024 Ecosoft Co., Ltd. (http://ecosoft.co.th) +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + +from odoo import fields, models + + +class ResPartner(models.Model): + _inherit = "res.partner" + + expense_sheet_count = fields.Integer( + compute="_compute_expense_count", + ) + + def _compute_expense_count(self): + sheet_model = self.env["hr.expense.sheet"] + employee_model = self.env["hr.employee"] + for partner in self: + employee_partner = employee_model.search_read( + domain=[("address_home_id", "=", partner.id)], fields=["id"] + ) + # Skip if no employee link to this partner + if not employee_partner: + partner.expense_sheet_count = 0 + continue + + expense_link = sheet_model.search_count( + [("employee_id", "=", employee_partner[0]["id"])] + ) + partner.expense_sheet_count = expense_link diff --git a/res_partner_expense_link/readme/CONTRIBUTORS.rst b/res_partner_expense_link/readme/CONTRIBUTORS.rst new file mode 100644 index 00000000000..cc6b23102b9 --- /dev/null +++ b/res_partner_expense_link/readme/CONTRIBUTORS.rst @@ -0,0 +1 @@ +* Saran Lim. diff --git a/res_partner_expense_link/readme/DESCRIPTION.rst b/res_partner_expense_link/readme/DESCRIPTION.rst new file mode 100644 index 00000000000..8eae3d1b813 --- /dev/null +++ b/res_partner_expense_link/readme/DESCRIPTION.rst @@ -0,0 +1 @@ +This module adds a smart button to the client file to grant direct access to their expenses diff --git a/res_partner_expense_link/static/description/icon.png b/res_partner_expense_link/static/description/icon.png new file mode 100644 index 00000000000..3a0328b516c Binary files /dev/null and b/res_partner_expense_link/static/description/icon.png differ diff --git a/res_partner_expense_link/static/description/index.html b/res_partner_expense_link/static/description/index.html new file mode 100644 index 00000000000..008ab019af1 --- /dev/null +++ b/res_partner_expense_link/static/description/index.html @@ -0,0 +1,423 @@ + + + + + +Res partner expense link + + + + + + diff --git a/res_partner_expense_link/views/hr_expense_views.xml b/res_partner_expense_link/views/hr_expense_views.xml new file mode 100644 index 00000000000..ca5d0ba476c --- /dev/null +++ b/res_partner_expense_link/views/hr_expense_views.xml @@ -0,0 +1,8 @@ + + + + Expense Reports Filter Partner + hr.expense.sheet + [('employee_id.address_home_id', 'in', active_ids)] + + diff --git a/res_partner_expense_link/views/res_partner_view.xml b/res_partner_expense_link/views/res_partner_view.xml new file mode 100644 index 00000000000..761cf5c1a6f --- /dev/null +++ b/res_partner_expense_link/views/res_partner_view.xml @@ -0,0 +1,24 @@ + + + + res.partner.form.view + res.partner + + + + + + + + diff --git a/setup/res_partner_expense_link/odoo/addons/res_partner_expense_link b/setup/res_partner_expense_link/odoo/addons/res_partner_expense_link new file mode 120000 index 00000000000..7c04ca6da99 --- /dev/null +++ b/setup/res_partner_expense_link/odoo/addons/res_partner_expense_link @@ -0,0 +1 @@ +../../../../res_partner_expense_link \ No newline at end of file diff --git a/setup/res_partner_expense_link/setup.py b/setup/res_partner_expense_link/setup.py new file mode 100644 index 00000000000..28c57bb6403 --- /dev/null +++ b/setup/res_partner_expense_link/setup.py @@ -0,0 +1,6 @@ +import setuptools + +setuptools.setup( + setup_requires=['setuptools-odoo'], + odoo_addon=True, +)