From 251c7393fb62bbbbfe9c26c7ac6beb2f5660eab3 Mon Sep 17 00:00:00 2001
From: oca-git-bot
Date: Mon, 12 Dec 2022 00:24:13 +0100
Subject: [PATCH 01/12] [16.0][ADD] hr_timesheet_name_customer:custom desc
This module added new field Customer Description in list view
In this module in report pdf instead of Description you can see Customer
Description. This field can see only Timesheets:Administrator
---
hr_timesheet_name_customer/README.rst | 103 ++++
hr_timesheet_name_customer/__init__.py | 1 +
hr_timesheet_name_customer/__manifest__.py | 17 +
.../i18n/hr_timesheet_name_customer.pot | 49 ++
hr_timesheet_name_customer/models/__init__.py | 1 +
.../models/hr_timesheet_name_customer.py | 17 +
.../readme/DESCRIPTION.rst | 7 +
hr_timesheet_name_customer/readme/HISTORY.rst | 5 +
hr_timesheet_name_customer/readme/USAGE.rst | 5 +
.../report/name_customer_template.xml | 83 ++++
.../static/description/icon.png | Bin 0 -> 9455 bytes
.../static/description/index.html | 442 ++++++++++++++++++
hr_timesheet_name_customer/tests/__init__.py | 2 +
hr_timesheet_name_customer/tests/common.py | 79 ++++
.../tests/test_name_customer.py | 35 ++
.../hr_timesheet_name_customer_views.xml | 17 +
16 files changed, 863 insertions(+)
create mode 100644 hr_timesheet_name_customer/README.rst
create mode 100644 hr_timesheet_name_customer/__init__.py
create mode 100644 hr_timesheet_name_customer/__manifest__.py
create mode 100644 hr_timesheet_name_customer/i18n/hr_timesheet_name_customer.pot
create mode 100644 hr_timesheet_name_customer/models/__init__.py
create mode 100644 hr_timesheet_name_customer/models/hr_timesheet_name_customer.py
create mode 100644 hr_timesheet_name_customer/readme/DESCRIPTION.rst
create mode 100644 hr_timesheet_name_customer/readme/HISTORY.rst
create mode 100644 hr_timesheet_name_customer/readme/USAGE.rst
create mode 100644 hr_timesheet_name_customer/report/name_customer_template.xml
create mode 100644 hr_timesheet_name_customer/static/description/icon.png
create mode 100644 hr_timesheet_name_customer/static/description/index.html
create mode 100644 hr_timesheet_name_customer/tests/__init__.py
create mode 100644 hr_timesheet_name_customer/tests/common.py
create mode 100644 hr_timesheet_name_customer/tests/test_name_customer.py
create mode 100644 hr_timesheet_name_customer/views/hr_timesheet_name_customer_views.xml
diff --git a/hr_timesheet_name_customer/README.rst b/hr_timesheet_name_customer/README.rst
new file mode 100644
index 0000000000..c1ede8f877
--- /dev/null
+++ b/hr_timesheet_name_customer/README.rst
@@ -0,0 +1,103 @@
+==============================
+Timesheet Description Customer
+==============================
+
+.. !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+ !! This file is generated by oca-gen-addon-readme !!
+ !! changes will be overwritten. !!
+ !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+
+.. |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-LGPL--3-blue.png
+ :target: http://www.gnu.org/licenses/lgpl-3.0-standalone.html
+ :alt: License: LGPL-3
+.. |badge3| image:: https://img.shields.io/badge/github-OCA%2Ftimesheet-lightgray.png?logo=github
+ :target: https://github.com/OCA/timesheet/tree/16.0/hr_timesheet_name_customer
+ :alt: OCA/timesheet
+.. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png
+ :target: https://translation.odoo-community.org/projects/timesheet-16-0/timesheet-16-0-hr_timesheet_name_customer
+ :alt: Translate me on Weblate
+.. |badge5| image:: https://img.shields.io/badge/runbot-Try%20me-875A7B.png
+ :target: https://runbot.odoo-community.org/runbot/117/16.0
+ :alt: Try me on Runbot
+
+|badge1| |badge2| |badge3| |badge4| |badge5|
+
+This module adds additional field "Description Customer" which is used for customer timesheet reports.
+This might be useful if you need to translate original timesheet description or add some additional information into it while leaving original description intact.
+This field is visible only for "Timesheets: Administrator" group.
+
+By default this field will be populated from the "Description" field of the timesheet.
+
+New report "Timesheet Customer" is used to print timesheets with "Customer Description" instead of the "Description" field.
+
+**Table of contents**
+
+.. contents::
+ :local:
+
+Usage
+=====
+
+To use this module you need to:
+
+#. Modify "Description Customer" field value.
+#. Select timesheets you want to print add choose "Timesheets Customer" report.
+#. "Description" column values will be populated from the "Description Customer" field.
+
+Changelog
+=========
+
+16.0.1.0.0 (2023-02-26)
+~~~~~~~~~~~~~~~~~~~~~~~
+
+* [ADD] Initial release for Odoo 16.
+ (`#568 `_)
+
+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 smashing it by providing a detailed and welcomed
+`feedback `_.
+
+Do not contact contributors directly about support or help with technical issues.
+
+Credits
+=======
+
+Authors
+~~~~~~~
+
+* Cetmix
+
+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.
+
+.. |maintainer-solo4games| image:: https://github.com/solo4games.png?size=40px
+ :target: https://github.com/solo4games
+ :alt: solo4games
+.. |maintainer-CetmixGitDrone| image:: https://github.com/CetmixGitDrone.png?size=40px
+ :target: https://github.com/CetmixGitDrone
+ :alt: CetmixGitDrone
+
+Current `maintainers `__:
+
+|maintainer-solo4games| |maintainer-CetmixGitDrone|
+
+This module is part of the `OCA/timesheet `_ project on GitHub.
+
+You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute.
diff --git a/hr_timesheet_name_customer/__init__.py b/hr_timesheet_name_customer/__init__.py
new file mode 100644
index 0000000000..0650744f6b
--- /dev/null
+++ b/hr_timesheet_name_customer/__init__.py
@@ -0,0 +1 @@
+from . import models
diff --git a/hr_timesheet_name_customer/__manifest__.py b/hr_timesheet_name_customer/__manifest__.py
new file mode 100644
index 0000000000..3dce212ed4
--- /dev/null
+++ b/hr_timesheet_name_customer/__manifest__.py
@@ -0,0 +1,17 @@
+{
+ "name": "Timesheet Description Customer",
+ "summary": "Add ‘Description Customer’ field for timesheets",
+ "version": "16.0.1.0.0",
+ "category": "Timesheet",
+ "website": "https://github.com/OCA/timesheet",
+ "maintainers": ["solo4games", "CetmixGitDrone"],
+ "author": "Odoo Community Association (OCA), Cetmix",
+ "license": "LGPL-3",
+ "application": False,
+ "installable": True,
+ "depends": ["hr_timesheet"],
+ "data": [
+ "views/hr_timesheet_name_customer_views.xml",
+ "report/name_customer_template.xml",
+ ],
+}
diff --git a/hr_timesheet_name_customer/i18n/hr_timesheet_name_customer.pot b/hr_timesheet_name_customer/i18n/hr_timesheet_name_customer.pot
new file mode 100644
index 0000000000..8df8fab00b
--- /dev/null
+++ b/hr_timesheet_name_customer/i18n/hr_timesheet_name_customer.pot
@@ -0,0 +1,49 @@
+# Translation of Odoo Server.
+# This file contains the translation of the following modules:
+# * hr_timesheet_name_customer
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: Odoo Server 16.0\n"
+"Report-Msgid-Bugs-To: \n"
+"Last-Translator: \n"
+"Language-Team: \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: \n"
+"Plural-Forms: \n"
+
+#. module: hr_timesheet_name_customer
+#: model_terms:ir.ui.view,arch_db:hr_timesheet_name_customer.name_customer_table
+msgid "Description"
+msgstr ""
+
+#. module: hr_timesheet_name_customer
+#: model:ir.model,name:hr_timesheet_name_customer.model_account_analytic_line
+msgid "Analytic Line"
+msgstr ""
+
+#. module: hr_timesheet_name_customer
+#: model:ir.model.fields,field_description:hr_timesheet_name_customer.field_account_analytic_line__name_customer
+msgid "Customer Description"
+msgstr ""
+
+#. module: hr_timesheet_name_customer
+#: model_terms:ir.ui.view,arch_db:hr_timesheet_name_customer.report_timesheet_custom
+msgid "Project"
+msgstr ""
+
+#. module: hr_timesheet_name_customer
+#: model:ir.actions.report,name:hr_timesheet_name_customer.timesheet_report_name_custom
+msgid "Timesheet Customer"
+msgstr ""
+
+#. module: hr_timesheet_name_customer
+#: model_terms:ir.ui.view,arch_db:hr_timesheet_name_customer.report_timesheet_custom
+msgid "Timesheets"
+msgstr ""
+
+#. module: hr_timesheet_name_customer
+#: model_terms:ir.ui.view,arch_db:hr_timesheet_name_customer.report_timesheet_custom
+msgid "for the"
+msgstr ""
diff --git a/hr_timesheet_name_customer/models/__init__.py b/hr_timesheet_name_customer/models/__init__.py
new file mode 100644
index 0000000000..0aa7ac196f
--- /dev/null
+++ b/hr_timesheet_name_customer/models/__init__.py
@@ -0,0 +1 @@
+from . import hr_timesheet_name_customer
diff --git a/hr_timesheet_name_customer/models/hr_timesheet_name_customer.py b/hr_timesheet_name_customer/models/hr_timesheet_name_customer.py
new file mode 100644
index 0000000000..d766ce3a7f
--- /dev/null
+++ b/hr_timesheet_name_customer/models/hr_timesheet_name_customer.py
@@ -0,0 +1,17 @@
+# Copyright 2023-nowdays Cetmix OU (https://cetmix.com)
+# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl)
+from odoo import api, fields, models
+
+
+class NameCustomer(models.Model):
+ _inherit = "account.analytic.line"
+
+ name_customer = fields.Char(string="Customer Description")
+ """override create method, initialize name_customer"""
+
+ @api.model_create_multi
+ def create(self, vals_list):
+ for vals in vals_list:
+ if not vals.get("name_customer"):
+ vals["name_customer"] = vals["name"]
+ return super(NameCustomer, self).create(vals_list)
diff --git a/hr_timesheet_name_customer/readme/DESCRIPTION.rst b/hr_timesheet_name_customer/readme/DESCRIPTION.rst
new file mode 100644
index 0000000000..90aa7c8322
--- /dev/null
+++ b/hr_timesheet_name_customer/readme/DESCRIPTION.rst
@@ -0,0 +1,7 @@
+This module adds additional field "Description Customer" which is used for customer timesheet reports.
+This might be useful if you need to translate original timesheet description or add some additional information into it while leaving original description intact.
+This field is visible only for "Timesheets: Administrator" group.
+
+By default this field will be populated from the "Description" field of the timesheet.
+
+New report "Timesheet Customer" is used to print timesheets with "Customer Description" instead of the "Description" field.
diff --git a/hr_timesheet_name_customer/readme/HISTORY.rst b/hr_timesheet_name_customer/readme/HISTORY.rst
new file mode 100644
index 0000000000..4edc788a54
--- /dev/null
+++ b/hr_timesheet_name_customer/readme/HISTORY.rst
@@ -0,0 +1,5 @@
+16.0.1.0.0 (2023-02-26)
+~~~~~~~~~~~~~~~~~~~~~~~
+
+* [ADD] Initial release for Odoo 16.
+ (`#568 `_)
diff --git a/hr_timesheet_name_customer/readme/USAGE.rst b/hr_timesheet_name_customer/readme/USAGE.rst
new file mode 100644
index 0000000000..311b8bce06
--- /dev/null
+++ b/hr_timesheet_name_customer/readme/USAGE.rst
@@ -0,0 +1,5 @@
+To use this module you need to:
+
+#. Modify "Description Customer" field value.
+#. Select timesheets you want to print add choose "Timesheets Customer" report.
+#. "Description" column values will be populated from the "Description Customer" field.
diff --git a/hr_timesheet_name_customer/report/name_customer_template.xml b/hr_timesheet_name_customer/report/name_customer_template.xml
new file mode 100644
index 0000000000..3b728f7429
--- /dev/null
+++ b/hr_timesheet_name_customer/report/name_customer_template.xml
@@ -0,0 +1,83 @@
+
+
+
+
+ not show_desc
+
+
+
+ |
+ Description
+ |
+
+
+
+ not show_desc
+
+
+
+
+
+ |
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Timesheets
+
+ for the Project
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Timesheet Customer
+ account.analytic.line
+ qweb-pdf
+ hr_timesheet_name_customer.report_timesheet_custom
+ report_timesheet_custom
+
+ report
+
+
diff --git a/hr_timesheet_name_customer/static/description/icon.png b/hr_timesheet_name_customer/static/description/icon.png
new file mode 100644
index 0000000000000000000000000000000000000000..3a0328b516c4980e8e44cdb63fd945757ddd132d
GIT binary patch
literal 9455
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
z
z?n?eq1XP>p-IM$Z^C;2L3itnbJZAip*Zo0aw2bs8@(s^~*8T9go!%dHcAz2lM;`yp
zD=7&xjFV$S&5uDaiScyD?B-i1ze`+CoRtz`Wn+Zls4&}MO{@N!ufrzjG$B79)Y2d3tBk&)TxUTw@QS0TEL_?njX|@vq?Uz(nBFK5Pq7*xj#u*R&i|?7+6#
z+|r_n#SW&LXhtheZdah{ZVoqwyT{D>MC3nkFF#N)xLi{p7J1jXlmVeb;cP5?e(=f#
zuT7fvjSbjS781v?7{)-X3*?>tq?)Yd)~|1{BDS(pqC
zC}~H#WXlkUW*H5CDOo<)#x7%RY)A;ShGhI5s*#cRDA8YgqG(HeKDx+#(ZQ?386dv!
zlXCO)w91~Vw4AmOcATuV653fa9R$fyK8ul%rG
z-wfS
zihugoZyr38Im?Zuh6@RcF~t1anQu7>#lPpb#}4cOA!EM11`%f*07RqOVkmX{p~KJ9
z^zP;K#|)$`^Rb{rnHGH{~>1(fawV0*Z#)}M`m8-?ZJV<+e}s9wE#
z)l&az?w^5{)`S(%MRzxdNqrs1n*-=jS^_jqE*5XDrA0+VE`5^*p3CuM<&dZEeCjoz
zR;uu_H9ZPZV|fQq`Cyw4nscrVwi!fE6ciMmX$!_hN7uF;jjKG)d2@aC4ropY)8etW=xJvni)8eHi`H$%#zn^WJ5NLc-rqk|u&&4Z6fD_m&JfSI1Bvb?b<*n&sfl0^t
z=HnmRl`XrFvMKB%9}>PaA`m-fK6a0(8=qPkWS5bb4=v?XcWi&hRY?O5HdulRi4?fN
zlsJ*N-0Qw+Yic@s0(2uy%F@ib;GjXt01Fmx5XbRo6+n|pP(&nodMoap^z{~q
ziEeaUT@Mxe3vJSfI6?uLND(CNr=#^W<1b}jzW58bIfyWTDle$mmS(|x-0|2UlX+9k
zQ^EX7Nw}?EzVoBfT(-LT|=9N@^hcn-_p&sqG
z&*oVs2JSU+N4ZD`FhCAWaS;>|wH2G*Id|?pa#@>tyxX`+4HyIArWDvVrX)2WAOQff
z0qyHu&-S@i^MS-+j--!pr4fPBj~_8({~e1bfcl0wI1kaoN>mJL6KUPQm5N7lB(ui1
zE-o%kq)&djzWJ}ob<-GfDlkB;F31j-VHKvQUGQ3sp`CwyGJk_i!y^sD0fqC@$9|jO
zOqN!r!8-p==F@ZVP=U$qSpY(gQ0)59P1&t@y?5rvg<}E+GB}26NYPp4f2YFQrQtot5mn3wu_qprZ=>Ig-$
zbW26Ws~IgY>}^5w`vTB(G`PTZaDiGBo5o(tp)qli|NeV(
z@H_=R8V39rt5J5YB2Ky?4eJJ#b`_iBe2ot~6%7mLt5t8Vwi^Jy7|jWXqa3amOIoRb
zOr}WVFP--DsS`1WpN%~)t3R!arKF^Q$e12KEqU36AWwnCBICpH4XCsfnyrHr>$I$4
z!DpKX$OKLWarN7nv@!uIA+~RNO)l$$w}p(;b>mx8pwYvu;dD_unryX_NhT8*Tj>BTrTTL&!?O+%Rv;b?B??gSzdp?6Uug9{
zd@V08Z$BdI?fpoCS$)t4mg4rT8Q_I}h`0d-vYZ^|dOB*Q^S|xqTV*vIg?@fVFSmMpaw0qtTRbx}
z({Pg?#{2`sc9)M5N$*N|4;^t$+QP?#mov
zGVC@I*lBVrOU-%2y!7%)fAKjpEFsgQc4{amtiHb95KQEwvf<(3T<9-Zm$xIew#P22
zc2Ix|App^>v6(3L_MCU0d3W##AB0M~3D00EWoKZqsJYT(#@w$Y_H7G22M~ApVFTRHMI_3be)Lkn#0F*V8Pq
zc}`Cjy$bE;FJ6H7p=0y#R>`}-m4(0F>%@P|?7fx{=R^uFdISRnZ2W_xQhD{YuR3t<
z{6yxu=4~JkeA;|(J6_nv#>Nvs&FuLA&PW^he@t(UwFFE8)|a!R{`E`K`i^ZnyE4$k
z;(749Ix|oi$c3QbEJ3b~D_kQsPz~fIUKym($a_7dJ?o+40*OLl^{=&oq$<#Q(yyrp
z{J-FAniyAw9tPbe&IhQ|a`DqFTVQGQ&Gq3!C2==4x{6EJwiPZ8zub-iXoUtkJiG{}
zPaR&}_fn8_z~(=;5lD-aPWD3z8PZS@AaUiomF!G8I}Mf>e~0g#BelA-5#`cj;O5>N
Xviia!U7SGha1wx#SCgwmn*{w2TRX*I
literal 0
HcmV?d00001
diff --git a/hr_timesheet_name_customer/static/description/index.html b/hr_timesheet_name_customer/static/description/index.html
new file mode 100644
index 0000000000..8a99f820be
--- /dev/null
+++ b/hr_timesheet_name_customer/static/description/index.html
@@ -0,0 +1,442 @@
+
+
+
+
+
+
+Timesheet Description Customer
+
+
+
+
+
Timesheet Description Customer
+
+
+

+
This module adds additional field “Description Customer” which is used for customer timesheet reports.
+This might be useful if you need to translate original timesheet description or add some additional information into it while leaving original description intact.
+This field is visible only for “Timesheets: Administrator” group.
+
By default this field will be populated from the “Description” field of the timesheet.
+
New report “Timesheet Customer” is used to print timesheets with “Customer Description” instead of the “Description” field.
+
Table of contents
+
+
+
+
To use this module you need to:
+
+- Modify “Description Customer” field value.
+- Select timesheets you want to print add choose “Timesheets Customer” report.
+- “Description” column values will be populated from the “Description Customer” field.
+
+
+
+
+
+
+
+- [ADD] Initial release for Odoo 16.
+(#568)
+
+
+
+
+
+
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 smashing it by providing a detailed and welcomed
+feedback.
+
Do not contact contributors directly about support or help with technical issues.
+
+
+
+
+
+
+
This module is maintained by the OCA.
+

+
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.
+
Current maintainers:
+

+
This module is part of the OCA/timesheet project on GitHub.
+
You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute.
+
+
+
+
+
diff --git a/hr_timesheet_name_customer/tests/__init__.py b/hr_timesheet_name_customer/tests/__init__.py
new file mode 100644
index 0000000000..41567ecdfe
--- /dev/null
+++ b/hr_timesheet_name_customer/tests/__init__.py
@@ -0,0 +1,2 @@
+from . import test_name_customer
+from . import common
diff --git a/hr_timesheet_name_customer/tests/common.py b/hr_timesheet_name_customer/tests/common.py
new file mode 100644
index 0000000000..4f9d2175f1
--- /dev/null
+++ b/hr_timesheet_name_customer/tests/common.py
@@ -0,0 +1,79 @@
+# Copyright 2023-nowdays Cetmix OU (https://cetmix.com)
+# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl)
+from odoo.tests.common import TransactionCase
+
+
+class TestCommonNameCustomer(TransactionCase):
+ @classmethod
+ def setUpClass(cls):
+ super(TestCommonNameCustomer, cls).setUpClass()
+
+ # customer partner
+ cls.partner = cls.env["res.partner"].create(
+ {
+ "name": "Customer For Analytic Account",
+ "email": "customer@task.com",
+ "phone": "42",
+ }
+ )
+
+ cls.analytic_plan = cls.env["account.analytic.plan"].create(
+ {
+ "name": "Plan Test",
+ "company_id": False,
+ }
+ )
+ cls.analytic_account = cls.env["account.analytic.account"].create(
+ {
+ "name": "Analytic Account for Test Customer",
+ "partner_id": cls.partner.id,
+ "plan_id": cls.analytic_plan.id,
+ "code": "TEST",
+ }
+ )
+
+ # project and tasks
+ cls.project_customer = cls.env["project.project"].create(
+ {
+ "name": "Project X",
+ "allow_timesheets": True,
+ "partner_id": cls.partner.id,
+ "analytic_account_id": cls.analytic_account.id,
+ }
+ )
+ cls.task1 = cls.env["project.task"].create(
+ {
+ "name": "Task One",
+ "priority": "0",
+ "kanban_state": "normal",
+ "project_id": cls.project_customer.id,
+ "partner_id": cls.partner.id,
+ }
+ )
+ cls.task2 = cls.env["project.task"].create(
+ {
+ "name": "Task Two",
+ "priority": "1",
+ "kanban_state": "done",
+ "project_id": cls.project_customer.id,
+ }
+ )
+ # users
+ cls.user_employee = cls.env["res.users"].create(
+ {
+ "name": "User Employee",
+ "login": "user_employee",
+ "email": "useremployee@test.com",
+ "groups_id": [
+ (6, 0, [cls.env.ref("hr_timesheet.group_hr_timesheet_user").id])
+ ],
+ }
+ )
+
+ # employees
+ cls.empl_employee = cls.env["hr.employee"].create(
+ {
+ "name": "User Empl Employee",
+ "user_id": cls.user_employee.id,
+ }
+ )
diff --git a/hr_timesheet_name_customer/tests/test_name_customer.py b/hr_timesheet_name_customer/tests/test_name_customer.py
new file mode 100644
index 0000000000..d08af9d261
--- /dev/null
+++ b/hr_timesheet_name_customer/tests/test_name_customer.py
@@ -0,0 +1,35 @@
+# Copyright 2023-nowdays Cetmix OU (https://cetmix.com)
+# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl)
+from .common import TestCommonNameCustomer
+
+
+class TestTimesheet(TestCommonNameCustomer):
+ def test_custom_name(self):
+ """Test when Customer Description set or not: check name and name_customer equality"""
+ Timesheet = self.env["account.analytic.line"]
+ timesheet1 = Timesheet.with_user(self.user_employee).create(
+ {
+ "project_id": self.project_customer.id,
+ "task_id": self.task1.id,
+ "name": "my first timesheet",
+ }
+ )
+ self.assertEqual(
+ timesheet1.name,
+ timesheet1.name_customer,
+ "Description and Custom Description should be the same",
+ )
+
+ timesheet2 = Timesheet.with_user(self.user_employee).create(
+ {
+ "project_id": self.project_customer.id,
+ "task_id": self.task2.id,
+ "name": "my second timesheet",
+ "name_customer": "my second timesheet with another description",
+ }
+ )
+ self.assertNotEqual(
+ timesheet2.name,
+ timesheet2.name_customer,
+ "Description and Custom Description should be different",
+ )
diff --git a/hr_timesheet_name_customer/views/hr_timesheet_name_customer_views.xml b/hr_timesheet_name_customer/views/hr_timesheet_name_customer_views.xml
new file mode 100644
index 0000000000..ffe9210469
--- /dev/null
+++ b/hr_timesheet_name_customer/views/hr_timesheet_name_customer_views.xml
@@ -0,0 +1,17 @@
+
+
+
+ Name Customer
+ account.analytic.line
+
+
+
+
+
+
+
+
From 7fb758ae31e1d5ba59e1b8683f17769d08b113d0 Mon Sep 17 00:00:00 2001
From: mymage
Date: Sat, 8 Jul 2023 08:40:12 +0000
Subject: [PATCH 02/12] Added translation using Weblate (Italian)
---
hr_timesheet_name_customer/i18n/it.po | 52 +++++++++++++++++++++++++++
1 file changed, 52 insertions(+)
create mode 100644 hr_timesheet_name_customer/i18n/it.po
diff --git a/hr_timesheet_name_customer/i18n/it.po b/hr_timesheet_name_customer/i18n/it.po
new file mode 100644
index 0000000000..a623b11363
--- /dev/null
+++ b/hr_timesheet_name_customer/i18n/it.po
@@ -0,0 +1,52 @@
+# Translation of Odoo Server.
+# This file contains the translation of the following modules:
+# * hr_timesheet_name_customer
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: Odoo Server 16.0\n"
+"Report-Msgid-Bugs-To: \n"
+"PO-Revision-Date: 2023-07-08 08:43+0000\n"
+"Last-Translator: mymage \n"
+"Language-Team: none\n"
+"Language: it\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: \n"
+"Plural-Forms: nplurals=2; plural=n != 1;\n"
+"X-Generator: Weblate 4.17\n"
+
+#. module: hr_timesheet_name_customer
+#: model_terms:ir.ui.view,arch_db:hr_timesheet_name_customer.name_customer_table
+msgid "Description"
+msgstr "Descrizione"
+
+#. module: hr_timesheet_name_customer
+#: model:ir.model,name:hr_timesheet_name_customer.model_account_analytic_line
+msgid "Analytic Line"
+msgstr "Riga analitica"
+
+#. module: hr_timesheet_name_customer
+#: model:ir.model.fields,field_description:hr_timesheet_name_customer.field_account_analytic_line__name_customer
+msgid "Customer Description"
+msgstr "Descrizione cliente"
+
+#. module: hr_timesheet_name_customer
+#: model_terms:ir.ui.view,arch_db:hr_timesheet_name_customer.report_timesheet_custom
+msgid "Project"
+msgstr "Progetto"
+
+#. module: hr_timesheet_name_customer
+#: model:ir.actions.report,name:hr_timesheet_name_customer.timesheet_report_name_custom
+msgid "Timesheet Customer"
+msgstr "Foglio ore cliente"
+
+#. module: hr_timesheet_name_customer
+#: model_terms:ir.ui.view,arch_db:hr_timesheet_name_customer.report_timesheet_custom
+msgid "Timesheets"
+msgstr "Foglio ore"
+
+#. module: hr_timesheet_name_customer
+#: model_terms:ir.ui.view,arch_db:hr_timesheet_name_customer.report_timesheet_custom
+msgid "for the"
+msgstr "per il"
From ea9c77b186ff4eed9a2ae8bd4b3a1291f3727af1 Mon Sep 17 00:00:00 2001
From: Ivorra78
Date: Sun, 27 Aug 2023 17:19:51 +0000
Subject: [PATCH 03/12] Translated using Weblate (Spanish)
Currently translated at 100.0% (7 of 7 strings)
Translation: timesheet-16.0/timesheet-16.0-hr_timesheet_name_customer
Translate-URL: https://translation.odoo-community.org/projects/timesheet-16-0/timesheet-16-0-hr_timesheet_name_customer/es/
---
hr_timesheet_name_customer/README.rst | 15 +++---
hr_timesheet_name_customer/i18n/es.po | 52 +++++++++++++++++++
.../static/description/index.html | 46 ++++++++--------
3 files changed, 85 insertions(+), 28 deletions(-)
create mode 100644 hr_timesheet_name_customer/i18n/es.po
diff --git a/hr_timesheet_name_customer/README.rst b/hr_timesheet_name_customer/README.rst
index c1ede8f877..6f9b2ce00a 100644
--- a/hr_timesheet_name_customer/README.rst
+++ b/hr_timesheet_name_customer/README.rst
@@ -2,10 +2,13 @@
Timesheet Description Customer
==============================
-.. !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+..
+ !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!! This file is generated by oca-gen-addon-readme !!
!! changes will be overwritten. !!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+ !! source digest: sha256:a139b3ee9578cb57ab839882d7f212465c84cd1bb3e1afc9136455876194e7f3
+ !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
.. |badge1| image:: https://img.shields.io/badge/maturity-Beta-yellow.png
:target: https://odoo-community.org/page/development-status
@@ -19,11 +22,11 @@ Timesheet Description Customer
.. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png
:target: https://translation.odoo-community.org/projects/timesheet-16-0/timesheet-16-0-hr_timesheet_name_customer
:alt: Translate me on Weblate
-.. |badge5| image:: https://img.shields.io/badge/runbot-Try%20me-875A7B.png
- :target: https://runbot.odoo-community.org/runbot/117/16.0
- :alt: Try me on Runbot
+.. |badge5| image:: https://img.shields.io/badge/runboat-Try%20me-875A7B.png
+ :target: https://runboat.odoo-community.org/builds?repo=OCA/timesheet&target_branch=16.0
+ :alt: Try me on Runboat
-|badge1| |badge2| |badge3| |badge4| |badge5|
+|badge1| |badge2| |badge3| |badge4| |badge5|
This module adds additional field "Description Customer" which is used for customer timesheet reports.
This might be useful if you need to translate original timesheet description or add some additional information into it while leaving original description intact.
@@ -61,7 +64,7 @@ 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 smashing it by providing a detailed and welcomed
+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.
diff --git a/hr_timesheet_name_customer/i18n/es.po b/hr_timesheet_name_customer/i18n/es.po
new file mode 100644
index 0000000000..e376f6dd54
--- /dev/null
+++ b/hr_timesheet_name_customer/i18n/es.po
@@ -0,0 +1,52 @@
+# Translation of Odoo Server.
+# This file contains the translation of the following modules:
+# * hr_timesheet_name_customer
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: Odoo Server 16.0\n"
+"Report-Msgid-Bugs-To: \n"
+"PO-Revision-Date: 2023-09-03 05:14+0000\n"
+"Last-Translator: Ivorra78 \n"
+"Language-Team: none\n"
+"Language: es\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: \n"
+"Plural-Forms: nplurals=2; plural=n != 1;\n"
+"X-Generator: Weblate 4.17\n"
+
+#. module: hr_timesheet_name_customer
+#: model_terms:ir.ui.view,arch_db:hr_timesheet_name_customer.name_customer_table
+msgid "Description"
+msgstr "Descripción"
+
+#. module: hr_timesheet_name_customer
+#: model:ir.model,name:hr_timesheet_name_customer.model_account_analytic_line
+msgid "Analytic Line"
+msgstr "Línea Analítica"
+
+#. module: hr_timesheet_name_customer
+#: model:ir.model.fields,field_description:hr_timesheet_name_customer.field_account_analytic_line__name_customer
+msgid "Customer Description"
+msgstr "Descripción del Cliente"
+
+#. module: hr_timesheet_name_customer
+#: model_terms:ir.ui.view,arch_db:hr_timesheet_name_customer.report_timesheet_custom
+msgid "Project"
+msgstr "Proyecto"
+
+#. module: hr_timesheet_name_customer
+#: model:ir.actions.report,name:hr_timesheet_name_customer.timesheet_report_name_custom
+msgid "Timesheet Customer"
+msgstr "Hoja de horas del cliente"
+
+#. module: hr_timesheet_name_customer
+#: model_terms:ir.ui.view,arch_db:hr_timesheet_name_customer.report_timesheet_custom
+msgid "Timesheets"
+msgstr "Hojas de Tiempo"
+
+#. module: hr_timesheet_name_customer
+#: model_terms:ir.ui.view,arch_db:hr_timesheet_name_customer.report_timesheet_custom
+msgid "for the"
+msgstr "para la/el"
diff --git a/hr_timesheet_name_customer/static/description/index.html b/hr_timesheet_name_customer/static/description/index.html
index 8a99f820be..092f020aa9 100644
--- a/hr_timesheet_name_customer/static/description/index.html
+++ b/hr_timesheet_name_customer/static/description/index.html
@@ -1,20 +1,20 @@
-
+
-
+
Timesheet Description Customer
-
-
Timesheet Description Customer
+
+
+
+
+
+
-
+
Sometimes you might need to add different description for customer
timesheets while keeping the original description for internal use. Eg
your team records timesheets in English but your customer prefers to see
timesheets in French.
-
+
No configuration is required.
-
+
New field “Description Customer” is added to the timesheet list and form
views. This field is visible only for “Timesheets/Administrator” group.
If this field is not set, the “Description” field value will be
@@ -420,9 +425,9 @@
-
+
-
+
- [ADD] Initial release for Odoo 16.
(#568)
@@ -430,7 +435,7 @@
-
+
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
@@ -438,15 +443,15 @@
Do not contact contributors directly about support or help with technical issues.
+
From 3dfc227e489a98e3a9ebaebf4bbd818c848cf5db Mon Sep 17 00:00:00 2001
From: uncannycs
Date: Wed, 20 May 2026 18:11:58 +0530
Subject: [PATCH 12/12] [19.0] [MIG] hr_timesheet_name_customer : Migration to
19.0.
---
hr_timesheet_name_customer/README.rst | 10 ++--
hr_timesheet_name_customer/__manifest__.py | 2 +-
.../models/hr_timesheet_name_customer.py | 5 +-
.../static/description/index.html | 6 +--
hr_timesheet_name_customer/tests/common.py | 4 +-
.../tests/test_name_customer.py | 51 +++++++++++++------
6 files changed, 49 insertions(+), 29 deletions(-)
diff --git a/hr_timesheet_name_customer/README.rst b/hr_timesheet_name_customer/README.rst
index e2e1eb23e2..3a563af632 100644
--- a/hr_timesheet_name_customer/README.rst
+++ b/hr_timesheet_name_customer/README.rst
@@ -21,13 +21,13 @@ Timesheet Description Customer
:target: http://www.gnu.org/licenses/lgpl-3.0-standalone.html
:alt: License: LGPL-3
.. |badge3| image:: https://img.shields.io/badge/github-OCA%2Ftimesheet-lightgray.png?logo=github
- :target: https://github.com/OCA/timesheet/tree/18.0/hr_timesheet_name_customer
+ :target: https://github.com/OCA/timesheet/tree/19.0/hr_timesheet_name_customer
:alt: OCA/timesheet
.. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png
- :target: https://translation.odoo-community.org/projects/timesheet-18-0/timesheet-18-0-hr_timesheet_name_customer
+ :target: https://translation.odoo-community.org/projects/timesheet-19-0/timesheet-19-0-hr_timesheet_name_customer
: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/timesheet&target_branch=18.0
+ :target: https://runboat.odoo-community.org/builds?repo=OCA/timesheet&target_branch=19.0
:alt: Try me on Runboat
|badge1| |badge2| |badge3| |badge4| |badge5|
@@ -88,7 +88,7 @@ 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 `_.
+`feedback `_.
Do not contact contributors directly about support or help with technical issues.
@@ -113,6 +113,6 @@ 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/timesheet `_ project on GitHub.
+This module is part of the `OCA/timesheet `_ project on GitHub.
You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute.
diff --git a/hr_timesheet_name_customer/__manifest__.py b/hr_timesheet_name_customer/__manifest__.py
index 5fd2638bdb..25d62d6862 100644
--- a/hr_timesheet_name_customer/__manifest__.py
+++ b/hr_timesheet_name_customer/__manifest__.py
@@ -1,7 +1,7 @@
{
"name": "Timesheet Description Customer",
"summary": "Add 'Description Customer' field for timesheets",
- "version": "18.0.1.0.0",
+ "version": "19.0.1.0.0",
"category": "Timesheet",
"website": "https://github.com/OCA/timesheet",
"author": "Odoo Community Association (OCA), Cetmix",
diff --git a/hr_timesheet_name_customer/models/hr_timesheet_name_customer.py b/hr_timesheet_name_customer/models/hr_timesheet_name_customer.py
index d73744a1a5..70c06beeea 100644
--- a/hr_timesheet_name_customer/models/hr_timesheet_name_customer.py
+++ b/hr_timesheet_name_customer/models/hr_timesheet_name_customer.py
@@ -15,6 +15,5 @@ class NameCustomer(models.Model):
@api.depends("name")
def _compute_name_customer(self):
- for rec in self:
- if not rec.name_customer and rec.name:
- rec.name_customer = rec.name
+ for rec in self.filtered(lambda r: r.name and r.name != "/"):
+ rec.name_customer = rec.name
diff --git a/hr_timesheet_name_customer/static/description/index.html b/hr_timesheet_name_customer/static/description/index.html
index 3b066dbcd3..af8fea7f5c 100644
--- a/hr_timesheet_name_customer/static/description/index.html
+++ b/hr_timesheet_name_customer/static/description/index.html
@@ -374,7 +374,7 @@ Timesheet Description Customer
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!! source digest: sha256:ddb3b4ce95637877dc62ac4a21cfef0021f6ad8da4aaf6d34f3a9b26ad050b46
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -->
-

+

This module adds additional field “Description Customer” which is used
for customer timesheet reports. It also shows the “Description Customer”
instead of the “Description” field in the customer portal. By default
@@ -439,7 +439,7 @@
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.
+feedback.
Do not contact contributors directly about support or help with technical issues.
@@ -459,7 +459,7 @@
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/timesheet project on GitHub.
+
This module is part of the OCA/timesheet project on GitHub.
You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute.
diff --git a/hr_timesheet_name_customer/tests/common.py b/hr_timesheet_name_customer/tests/common.py
index 8a1e32988f..a0f97573ad 100644
--- a/hr_timesheet_name_customer/tests/common.py
+++ b/hr_timesheet_name_customer/tests/common.py
@@ -7,7 +7,7 @@ class TestCommonNameCustomer(TransactionCase):
@classmethod
def setUpClass(cls):
super().setUpClass()
-
+ cls.env = cls.env(context=dict(cls.env.context, tracking_disable=True))
# customer partner
cls.partner = cls.env["res.partner"].create(
{
@@ -60,7 +60,7 @@ def setUpClass(cls):
"name": "User Employee",
"login": "user_employee",
"email": "useremployee@test.com",
- "groups_id": [
+ "group_ids": [
(6, 0, [cls.env.ref("hr_timesheet.group_hr_timesheet_user").id])
],
}
diff --git a/hr_timesheet_name_customer/tests/test_name_customer.py b/hr_timesheet_name_customer/tests/test_name_customer.py
index 259721a42f..f100802c1d 100644
--- a/hr_timesheet_name_customer/tests/test_name_customer.py
+++ b/hr_timesheet_name_customer/tests/test_name_customer.py
@@ -4,33 +4,54 @@
class TestTimesheet(TestCommonNameCustomer):
- def test_custom_name(self):
- """Test when Customer Description set or not:
- check name and name_customer equality"""
+ def test_01_create_default(self):
+ """Test unset Customer Description: check name equality"""
Timesheet = self.env["account.analytic.line"]
- timesheet1 = Timesheet.with_user(self.user_employee).create(
+ timesheet = Timesheet.with_user(self.user_employee).create(
{
"project_id": self.project_customer.id,
"task_id": self.task1.id,
"name": "my first timesheet",
}
)
- self.assertEqual(
- timesheet1.name,
- timesheet1.name_customer,
- "Description and Custom Description should be the same",
+ self.assertEqual(timesheet.name_customer, "my first timesheet")
+
+ def test_02_update_recompute(self):
+ """Test if name_customer recomputes when name changes"""
+ Timesheet = self.env["account.analytic.line"]
+ timesheet = Timesheet.with_user(self.user_employee).create(
+ {
+ "project_id": self.project_customer.id,
+ "task_id": self.task1.id,
+ "name": "initial",
+ }
)
+ timesheet.name = "updated"
+ # Force recompute if necessary
+ timesheet._compute_name_customer()
+ self.assertEqual(timesheet.name_customer, "updated")
- timesheet2 = Timesheet.with_user(self.user_employee).create(
+ def test_03_explicit_value(self):
+ """Test when Customer Description is explicitly set"""
+ Timesheet = self.env["account.analytic.line"]
+ timesheet = Timesheet.with_user(self.user_employee).create(
{
"project_id": self.project_customer.id,
"task_id": self.task2.id,
- "name": "my second timesheet",
- "name_customer": "my second timesheet with another description",
+ "name": "technical name",
+ "name_customer": "customer friendly name",
}
)
- self.assertNotEqual(
- timesheet2.name,
- timesheet2.name_customer,
- "Description and Custom Description should be different",
+ self.assertEqual(timesheet.name_customer, "customer friendly name")
+
+ def test_04_empty_name(self):
+ """Test with empty name"""
+ Timesheet = self.env["account.analytic.line"]
+ timesheet = Timesheet.with_user(self.user_employee).create(
+ {
+ "project_id": self.project_customer.id,
+ "task_id": self.task1.id,
+ "name": False,
+ }
)
+ self.assertFalse(timesheet.name_customer)