From c0e280b43f86a96fc53adb185f87883527f356f4 Mon Sep 17 00:00:00 2001 From: ps-tubtim Date: Tue, 8 Oct 2019 15:02:11 +0700 Subject: [PATCH 01/25] [12.0][ADD] hr_expense_tier_validation --- hr_expense_tier_validation/README.rst | 113 +++++ hr_expense_tier_validation/__init__.py | 4 + hr_expense_tier_validation/__manifest__.py | 21 + .../i18n/hr_expense_tier_validation.pot | 81 ++++ hr_expense_tier_validation/models/__init__.py | 5 + .../models/hr_expense_sheet.py | 11 + .../models/tier_definition.py | 14 + .../readme/CONFIGURE.rst | 4 + .../readme/CONTRIBUTORS.rst | 1 + .../readme/DESCRIPTION.rst | 1 + hr_expense_tier_validation/readme/INSTALL.rst | 2 + hr_expense_tier_validation/readme/USAGE.rst | 14 + .../static/description/icon.png | Bin 0 -> 9455 bytes .../static/description/index.html | 455 ++++++++++++++++++ hr_expense_tier_validation/tests/__init__.py | 4 + .../tests/test_hr_expense_tier_validation.py | 14 + .../views/hr_expense_sheet_view.xml | 83 ++++ 17 files changed, 827 insertions(+) create mode 100644 hr_expense_tier_validation/README.rst create mode 100644 hr_expense_tier_validation/__init__.py create mode 100644 hr_expense_tier_validation/__manifest__.py create mode 100644 hr_expense_tier_validation/i18n/hr_expense_tier_validation.pot create mode 100644 hr_expense_tier_validation/models/__init__.py create mode 100644 hr_expense_tier_validation/models/hr_expense_sheet.py create mode 100644 hr_expense_tier_validation/models/tier_definition.py create mode 100644 hr_expense_tier_validation/readme/CONFIGURE.rst create mode 100644 hr_expense_tier_validation/readme/CONTRIBUTORS.rst create mode 100644 hr_expense_tier_validation/readme/DESCRIPTION.rst create mode 100644 hr_expense_tier_validation/readme/INSTALL.rst create mode 100644 hr_expense_tier_validation/readme/USAGE.rst create mode 100644 hr_expense_tier_validation/static/description/icon.png create mode 100644 hr_expense_tier_validation/static/description/index.html create mode 100644 hr_expense_tier_validation/tests/__init__.py create mode 100644 hr_expense_tier_validation/tests/test_hr_expense_tier_validation.py create mode 100644 hr_expense_tier_validation/views/hr_expense_sheet_view.xml diff --git a/hr_expense_tier_validation/README.rst b/hr_expense_tier_validation/README.rst new file mode 100644 index 000000000..d4d5b56ec --- /dev/null +++ b/hr_expense_tier_validation/README.rst @@ -0,0 +1,113 @@ +======================= +Expense Tier Validation +======================= + +.. !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + !! 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-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%2Fhr-lightgray.png?logo=github + :target: https://github.com/OCA/hr/tree/12.0/hr_expense_tier_validation + :alt: OCA/hr +.. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png + :target: https://translation.odoo-community.org/projects/hr-12-0/hr-12-0-hr_expense_tier_validation + :alt: Translate me on Weblate +.. |badge5| image:: https://img.shields.io/badge/runbot-Try%20me-875A7B.png + :target: https://runbot.odoo-community.org/runbot/116/12.0 + :alt: Try me on Runbot + +|badge1| |badge2| |badge3| |badge4| |badge5| + +This module extends the functionality of Expense Reports to support a tier validation process. + +**Table of contents** + +.. contents:: + :local: + +Installation +============ + +This module depends on ``base_tier_validation``. +You can find it at `OCA/server-ux ` + +Configuration +============= + +To configure this module, you need to: + +#. Go to *Settings > Technical > Tier Validations > Tier Definition*. +#. Create as many tiers as you want for hr_expense model. + +Usage +===== + +To use this module, you need to: + +#. Create a Expense Report triggering at least one "Tier Definition". +#. Click on *Request Validation* button. +#. Under the tab *Reviews* have a look to pending reviews and their statuses. +#. Once all reviews are validated click on *Confirm Order*. + +Additional features: + +* You can filter the Expense Reports requesting your review through the + filter *Needs my Review*. +* User with rights to confirm the Expense Report (validate all tiers that would + be generated) can directly do the operation, this is, there is no need for + her/him to request a validation. + +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 +~~~~~~~ + +* Ecosoft + +Contributors +~~~~~~~~~~~~ + +* Pimolnat Suntian + +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-ps-tubtim| image:: https://github.com/ps-tubtim.png?size=40px + :target: https://github.com/ps-tubtim + :alt: ps-tubtim + +Current `maintainer `__: + +|maintainer-ps-tubtim| + +This module is part of the `OCA/hr `_ project on GitHub. + +You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute. diff --git a/hr_expense_tier_validation/__init__.py b/hr_expense_tier_validation/__init__.py new file mode 100644 index 000000000..4fb530fd1 --- /dev/null +++ b/hr_expense_tier_validation/__init__.py @@ -0,0 +1,4 @@ +# Copyright 2019 Ecosoft Co., Ltd. (http://ecosoft.co.th) +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + +from . import models diff --git a/hr_expense_tier_validation/__manifest__.py b/hr_expense_tier_validation/__manifest__.py new file mode 100644 index 000000000..9b815d1bf --- /dev/null +++ b/hr_expense_tier_validation/__manifest__.py @@ -0,0 +1,21 @@ +# Copyright 2019 Ecosoft Co., Ltd. (http://ecosoft.co.th) +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + +{ + 'name': 'Expense Tier Validation', + 'version': '12.0.1.0.0', + 'category': 'Human Resources', + 'author': 'Ecosoft, ' + 'Odoo Community Association (OCA)', + 'license': 'AGPL-3', + 'website': 'https://github.com/OCA/hr', + 'depends': [ + 'hr_expense', + 'base_tier_validation', + ], + 'data': [ + 'views/hr_expense_sheet_view.xml', + ], + 'installable': True, + 'maintainers': ['ps-tubtim'], +} diff --git a/hr_expense_tier_validation/i18n/hr_expense_tier_validation.pot b/hr_expense_tier_validation/i18n/hr_expense_tier_validation.pot new file mode 100644 index 000000000..35ce4438c --- /dev/null +++ b/hr_expense_tier_validation/i18n/hr_expense_tier_validation.pot @@ -0,0 +1,81 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * hr_expense_tier_validation +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 12.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_expense_tier_validation +#: model_terms:ir.ui.view,arch_db:hr_expense_tier_validation.view_hr_expense_sheet_form +msgid "\n" +" This expense report needs to be validated." +msgstr "" + +#. module: hr_expense_tier_validation +#: model_terms:ir.ui.view,arch_db:hr_expense_tier_validation.view_hr_expense_sheet_form +msgid " Operation has been rejected." +msgstr "" + +#. module: hr_expense_tier_validation +#: model_terms:ir.ui.view,arch_db:hr_expense_tier_validation.view_hr_expense_sheet_form +msgid " Operation has been validated!" +msgstr "" + +#. module: hr_expense_tier_validation +#: model:ir.model,name:hr_expense_tier_validation.model_hr_expense_sheet +msgid "Expense Report" +msgstr "" + +#. module: hr_expense_tier_validation +#: model_terms:ir.ui.view,arch_db:hr_expense_tier_validation.view_hr_expense_sheet_filter +msgid "Expense report validated and ready to be approved" +msgstr "" + +#. module: hr_expense_tier_validation +#: model_terms:ir.ui.view,arch_db:hr_expense_tier_validation.view_hr_expense_sheet_filter +msgid "My Expense report to review" +msgstr "" + +#. module: hr_expense_tier_validation +#: model_terms:ir.ui.view,arch_db:hr_expense_tier_validation.view_hr_expense_sheet_filter +msgid "Needs my Review" +msgstr "" + +#. module: hr_expense_tier_validation +#: model_terms:ir.ui.view,arch_db:hr_expense_tier_validation.view_hr_expense_sheet_form +msgid "Reject" +msgstr "" + +#. module: hr_expense_tier_validation +#: model_terms:ir.ui.view,arch_db:hr_expense_tier_validation.view_hr_expense_sheet_form +msgid "Request Validation" +msgstr "" + +#. module: hr_expense_tier_validation +#: model_terms:ir.ui.view,arch_db:hr_expense_tier_validation.view_hr_expense_sheet_form +msgid "Restart Validation" +msgstr "" + +#. module: hr_expense_tier_validation +#: model:ir.model,name:hr_expense_tier_validation.model_tier_definition +msgid "Tier Definition" +msgstr "" + +#. module: hr_expense_tier_validation +#: model_terms:ir.ui.view,arch_db:hr_expense_tier_validation.view_hr_expense_sheet_form +msgid "Validate" +msgstr "" + +#. module: hr_expense_tier_validation +#: model_terms:ir.ui.view,arch_db:hr_expense_tier_validation.view_hr_expense_sheet_filter +msgid "Validated" +msgstr "" + diff --git a/hr_expense_tier_validation/models/__init__.py b/hr_expense_tier_validation/models/__init__.py new file mode 100644 index 000000000..89b01d5da --- /dev/null +++ b/hr_expense_tier_validation/models/__init__.py @@ -0,0 +1,5 @@ +# Copyright 2019 Ecosoft Co., Ltd. (http://ecosoft.co.th) +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + +from . import hr_expense_sheet +from . import tier_definition diff --git a/hr_expense_tier_validation/models/hr_expense_sheet.py b/hr_expense_tier_validation/models/hr_expense_sheet.py new file mode 100644 index 000000000..bfdfce545 --- /dev/null +++ b/hr_expense_tier_validation/models/hr_expense_sheet.py @@ -0,0 +1,11 @@ +# Copyright 2019 Ecosoft Co., Ltd. (http://ecosoft.co.th) +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + +from odoo import models + + +class HrExpenseSheet(models.Model): + _name = 'hr.expense.sheet' + _inherit = ['hr.expense.sheet', 'tier.validation'] + _state_from = ['draft'] + _state_to = ['submit', 'approve', 'post', 'done'] diff --git a/hr_expense_tier_validation/models/tier_definition.py b/hr_expense_tier_validation/models/tier_definition.py new file mode 100644 index 000000000..31113cd34 --- /dev/null +++ b/hr_expense_tier_validation/models/tier_definition.py @@ -0,0 +1,14 @@ +# Copyright 2019 Ecosoft Co., Ltd. (http://ecosoft.co.th) +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + +from odoo import api, models + + +class TierDefinition(models.Model): + _inherit = 'tier.definition' + + @api.model + def _get_tier_validation_model_names(self): + res = super(TierDefinition, self)._get_tier_validation_model_names() + res.append('hr.expense.sheet') + return res diff --git a/hr_expense_tier_validation/readme/CONFIGURE.rst b/hr_expense_tier_validation/readme/CONFIGURE.rst new file mode 100644 index 000000000..d09a3e0bb --- /dev/null +++ b/hr_expense_tier_validation/readme/CONFIGURE.rst @@ -0,0 +1,4 @@ +To configure this module, you need to: + +#. Go to *Settings > Technical > Tier Validations > Tier Definition*. +#. Create as many tiers as you want for hr_expense model. diff --git a/hr_expense_tier_validation/readme/CONTRIBUTORS.rst b/hr_expense_tier_validation/readme/CONTRIBUTORS.rst new file mode 100644 index 000000000..0ef1f84c3 --- /dev/null +++ b/hr_expense_tier_validation/readme/CONTRIBUTORS.rst @@ -0,0 +1 @@ +* Pimolnat Suntian diff --git a/hr_expense_tier_validation/readme/DESCRIPTION.rst b/hr_expense_tier_validation/readme/DESCRIPTION.rst new file mode 100644 index 000000000..59623d7bb --- /dev/null +++ b/hr_expense_tier_validation/readme/DESCRIPTION.rst @@ -0,0 +1 @@ +This module extends the functionality of Expense Reports to support a tier validation process. diff --git a/hr_expense_tier_validation/readme/INSTALL.rst b/hr_expense_tier_validation/readme/INSTALL.rst new file mode 100644 index 000000000..1a40eb744 --- /dev/null +++ b/hr_expense_tier_validation/readme/INSTALL.rst @@ -0,0 +1,2 @@ +This module depends on ``base_tier_validation``. +You can find it at `OCA/server-ux ` diff --git a/hr_expense_tier_validation/readme/USAGE.rst b/hr_expense_tier_validation/readme/USAGE.rst new file mode 100644 index 000000000..fc812f6e9 --- /dev/null +++ b/hr_expense_tier_validation/readme/USAGE.rst @@ -0,0 +1,14 @@ +To use this module, you need to: + +#. Create a Expense Report triggering at least one "Tier Definition". +#. Click on *Request Validation* button. +#. Under the tab *Reviews* have a look to pending reviews and their statuses. +#. Once all reviews are validated click on *Confirm Order*. + +Additional features: + +* You can filter the Expense Reports requesting your review through the + filter *Needs my Review*. +* User with rights to confirm the Expense Report (validate all tiers that would + be generated) can directly do the operation, this is, there is no need for + her/him to request a validation. diff --git a/hr_expense_tier_validation/static/description/icon.png b/hr_expense_tier_validation/static/description/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..3a0328b516c4980e8e44cdb63fd945757ddd132d GIT binary patch literal 9455 zcmW++2RxMjAAjx~&dlBk9S+%}OXg)AGE&Cb*&}d0jUxM@u(PQx^-s)697TX`ehR4?GS^qbkof1cslKgkU)h65qZ9Oc=ml_0temigYLJfnz{IDzUf>bGs4N!v3=Z3jMq&A#7%rM5eQ#dc?k~! zVpnB`o+K7|Al`Q_U;eD$B zfJtP*jH`siUq~{KE)`jP2|#TUEFGRryE2`i0**z#*^6~AI|YzIWy$Cu#CSLW3q=GA z6`?GZymC;dCPk~rBS%eCb`5OLr;RUZ;D`}um=H)BfVIq%7VhiMr)_#G0N#zrNH|__ zc+blN2UAB0=617@>_u;MPHN;P;N#YoE=)R#i$k_`UAA>WWCcEVMh~L_ zj--gtp&|K1#58Yz*AHCTMziU1Jzt_jG0I@qAOHsk$2}yTmVkBp_eHuY$A9)>P6o~I z%aQ?!(GqeQ-Y+b0I(m9pwgi(IIZZzsbMv+9w{PFtd_<_(LA~0H(xz{=FhLB@(1&qHA5EJw1>>=%q2f&^X>IQ{!GJ4e9U z&KlB)z(84HmNgm2hg2C0>WM{E(DdPr+EeU_N@57;PC2&DmGFW_9kP&%?X4}+xWi)( z;)z%wI5>D4a*5XwD)P--sPkoY(a~WBw;E~AW`Yue4kFa^LM3X`8x|}ZUeMnqr}>kH zG%WWW>3ml$Yez?i%)2pbKPI7?5o?hydokgQyZsNEr{a|mLdt;X2TX(#B1j35xPnPW z*bMSSOauW>o;*=kO8ojw91VX!qoOQb)zHJ!odWB}d+*K?#sY_jqPdg{Sm2HdYzdEx zOGVPhVRTGPtv0o}RfVP;Nd(|CB)I;*t&QO8h zFfekr30S!-LHmV_Su-W+rEwYXJ^;6&3|L$mMC8*bQptyOo9;>Qb9Q9`ySe3%V$A*9 zeKEe+b0{#KWGp$F+tga)0RtI)nhMa-K@JS}2krK~n8vJ=Ngm?R!9G<~RyuU0d?nz# z-5EK$o(!F?hmX*2Yt6+coY`6jGbb7tF#6nHA zuKk=GGJ;ZwON1iAfG$E#Y7MnZVmrY|j0eVI(DN_MNFJmyZ|;w4tf@=CCDZ#5N_0K= z$;R~bbk?}TpfDjfB&aiQ$VA}s?P}xPERJG{kxk5~R`iRS(SK5d+Xs9swCozZISbnS zk!)I0>t=A<-^z(cmSFz3=jZ23u13X><0b)P)^1T_))Kr`e!-pb#q&J*Q`p+B6la%C zuVl&0duN<;uOsB3%T9Fp8t{ED108<+W(nOZd?gDnfNBC3>M8WE61$So|P zVvqH0SNtDTcsUdzaMDpT=Ty0pDHHNL@Z0w$Y`XO z2M-_r1S+GaH%pz#Uy0*w$Vdl=X=rQXEzO}d6J^R6zjM1u&c9vYLvLp?W7w(?np9x1 zE_0JSAJCPB%i7p*Wvg)pn5T`8k3-uR?*NT|J`eS#_#54p>!p(mLDvmc-3o0mX*mp_ zN*AeS<>#^-{S%W<*mz^!X$w_2dHWpcJ6^j64qFBft-o}o_Vx80o0>}Du;>kLts;$8 zC`7q$QI(dKYG`Wa8#wl@V4jVWBRGQ@1dr-hstpQL)Tl+aqVpGpbSfN>5i&QMXfiZ> zaA?T1VGe?rpQ@;+pkrVdd{klI&jVS@I5_iz!=UMpTsa~mBga?1r}aRBm1WS;TT*s0f0lY=JBl66Upy)-k4J}lh=P^8(SXk~0xW=T9v*B|gzIhN z>qsO7dFd~mgxAy4V?&)=5ieYq?zi?ZEoj)&2o)RLy=@hbCRcfT5jigwtQGE{L*8<@Yd{zg;CsL5mvzfDY}P-wos_6PfprFVaeqNE%h zKZhLtcQld;ZD+>=nqN~>GvROfueSzJD&BE*}XfU|H&(FssBqY=hPCt`d zH?@s2>I(|;fcW&YM6#V#!kUIP8$Nkdh0A(bEVj``-AAyYgwY~jB zT|I7Bf@%;7aL7Wf4dZ%VqF$eiaC38OV6oy3Z#TER2G+fOCd9Iaoy6aLYbPTN{XRPz z;U!V|vBf%H!}52L2gH_+j;`bTcQRXB+y9onc^wLm5wi3-Be}U>k_u>2Eg$=k!(l@I zcCg+flakT2Nej3i0yn+g+}%NYb?ta;R?(g5SnwsQ49U8Wng8d|{B+lyRcEDvR3+`O{zfmrmvFrL6acVP%yG98X zo&+VBg@px@i)%o?dG(`T;n*$S5*rnyiR#=wW}}GsAcfyQpE|>a{=$Hjg=-*_K;UtD z#z-)AXwSRY?OPefw^iI+ z)AXz#PfEjlwTes|_{sB?4(O@fg0AJ^g8gP}ex9Ucf*@_^J(s_5jJV}c)s$`Myn|Kd z$6>}#q^n{4vN@+Os$m7KV+`}c%4)4pv@06af4-x5#wj!KKb%caK{A&Y#Rfs z-po?Dcb1({W=6FKIUirH&(yg=*6aLCekcKwyfK^JN5{wcA3nhO(o}SK#!CINhI`-I z1)6&n7O&ZmyFMuNwvEic#IiOAwNkR=u5it{B9n2sAJV5pNhar=j5`*N!Na;c7g!l$ z3aYBqUkqqTJ=Re-;)s!EOeij=7SQZ3Hq}ZRds%IM*PtM$wV z@;rlc*NRK7i3y5BETSKuumEN`Xu_8GP1Ri=OKQ$@I^ko8>H6)4rjiG5{VBM>B|%`&&s^)jS|-_95&yc=GqjNo{zFkw%%HHhS~e=s zD#sfS+-?*t|J!+ozP6KvtOl!R)@@-z24}`9{QaVLD^9VCSR2b`b!KC#o;Ki<+wXB6 zx3&O0LOWcg4&rv4QG0)4yb}7BFSEg~=IR5#ZRj8kg}dS7_V&^%#Do==#`u zpy6{ox?jWuR(;pg+f@mT>#HGWHAJRRDDDv~@(IDw&R>9643kK#HN`!1vBJHnC+RM&yIh8{gG2q zA%e*U3|N0XSRa~oX-3EAneep)@{h2vvd3Xvy$7og(sayr@95+e6~Xvi1tUqnIxoIH zVWo*OwYElb#uyW{Imam6f2rGbjR!Y3`#gPqkv57dB6K^wRGxc9B(t|aYDGS=m$&S!NmCtrMMaUg(c zc2qC=2Z`EEFMW-me5B)24AqF*bV5Dr-M5ig(l-WPS%CgaPzs6p_gnCIvTJ=Y<6!gT zVt@AfYCzjjsMEGi=rDQHo0yc;HqoRNnNFeWZgcm?f;cp(6CNylj36DoL(?TS7eU#+ z7&mfr#y))+CJOXQKUMZ7QIdS9@#-}7y2K1{8)cCt0~-X0O!O?Qx#E4Og+;A2SjalQ zs7r?qn0H044=sDN$SRG$arw~n=+T_DNdSrarmu)V6@|?1-ZB#hRn`uilTGPJ@fqEy zGt(f0B+^JDP&f=r{#Y_wi#AVDf-y!RIXU^0jXsFpf>=Ji*TeqSY!H~AMbJdCGLhC) zn7Rx+sXw6uYj;WRYrLd^5IZq@6JI1C^YkgnedZEYy<&4(z%Q$5yv#Boo{AH8n$a zhb4Y3PWdr269&?V%uI$xMcUrMzl=;w<_nm*qr=c3Rl@i5wWB;e-`t7D&c-mcQl7x! zZWB`UGcw=Y2=}~wzrfLx=uet<;m3~=8I~ZRuzvMQUQdr+yTV|ATf1Uuomr__nDf=X zZ3WYJtHp_ri(}SQAPjv+Y+0=fH4krOP@S&=zZ-t1jW1o@}z;xk8 z(Nz1co&El^HK^NrhVHa-_;&88vTU>_J33=%{if;BEY*J#1n59=07jrGQ#IP>@u#3A z;!q+E1Rj3ZJ+!4bq9F8PXJ@yMgZL;>&gYA0%_Kbi8?S=XGM~dnQZQ!yBSgcZhY96H zrWnU;k)qy`rX&&xlDyA%(a1Hhi5CWkmg(`Gb%m(HKi-7Z!LKGRP_B8@`7&hdDy5n= z`OIxqxiVfX@OX1p(mQu>0Ai*v_cTMiw4qRt3~NBvr9oBy0)r>w3p~V0SCm=An6@3n)>@z!|o-$HvDK z|3D2ZMJkLE5loMKl6R^ez@Zz%S$&mbeoqH5`Bb){Ei21q&VP)hWS2tjShfFtGE+$z zzCR$P#uktu+#!w)cX!lWN1XU%K-r=s{|j?)Akf@q#3b#{6cZCuJ~gCxuMXRmI$nGtnH+-h z+GEi!*X=AP<|fG`1>MBdTb?28JYc=fGvAi2I<$B(rs$;eoJCyR6_bc~p!XR@O-+sD z=eH`-ye})I5ic1eL~TDmtfJ|8`0VJ*Yr=hNCd)G1p2MMz4C3^Mj?7;!w|Ly%JqmuW zlIEW^Ft%z?*|fpXda>Jr^1noFZEwFgVV%|*XhH@acv8rdGxeEX{M$(vG{Zw+x(ei@ zmfXb22}8-?Fi`vo-YVrTH*C?a8%M=Hv9MqVH7H^J$KsD?>!SFZ;ZsvnHr_gn=7acz z#W?0eCdVhVMWN12VV^$>WlQ?f;P^{(&pYTops|btm6aj>_Uz+hqpGwB)vWp0Cf5y< zft8-je~nn?W11plq}N)4A{l8I7$!ks_x$PXW-2XaRFswX_BnF{R#6YIwMhAgd5F9X zGmwdadS6(a^fjHtXg8=l?Rc0Sm%hk6E9!5cLVloEy4eh(=FwgP`)~I^5~pBEWo+F6 zSf2ncyMurJN91#cJTy_u8Y}@%!bq1RkGC~-bV@SXRd4F{R-*V`bS+6;W5vZ(&+I<9$;-V|eNfLa5n-6% z2(}&uGRF;p92eS*sE*oR$@pexaqr*meB)VhmIg@h{uzkk$9~qh#cHhw#>O%)b@+(| z^IQgqzuj~Sk(J;swEM-3TrJAPCq9k^^^`q{IItKBRXYe}e0Tdr=Huf7da3$l4PdpwWDop%^}n;dD#K4s#DYA8SHZ z&1!riV4W4R7R#C))JH1~axJ)RYnM$$lIR%6fIVA@zV{XVyx}C+a-Dt8Y9M)^KU0+H zR4IUb2CJ{Hg>CuaXtD50jB(_Tcx=Z$^WYu2u5kubqmwp%drJ6 z?Fo40g!Qd<-l=TQxqHEOuPX0;^z7iX?Ke^a%XT<13TA^5`4Xcw6D@Ur&VT&CUe0d} z1GjOVF1^L@>O)l@?bD~$wzgf(nxX1OGD8fEV?TdJcZc2KoUe|oP1#=$$7ee|xbY)A zDZq+cuTpc(fFdj^=!;{k03C69lMQ(|>uhRfRu%+!k&YOi-3|1QKB z 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 Xviia!U7SGha1wx#SCgwmn*{w2TRX*I literal 0 HcmV?d00001 diff --git a/hr_expense_tier_validation/static/description/index.html b/hr_expense_tier_validation/static/description/index.html new file mode 100644 index 000000000..432a6895f --- /dev/null +++ b/hr_expense_tier_validation/static/description/index.html @@ -0,0 +1,455 @@ + + + + + + +Expense Tier Validation + + + +
+

Expense Tier Validation

+ + +

Beta License: AGPL-3 OCA/hr Translate me on Weblate Try me on Runbot

+

This module extends the functionality of Expense Reports to support a tier validation process.

+

Table of contents

+ +
+

Installation

+

This module depends on base_tier_validation. +You can find it at OCA/server-ux <https://github.com/OCA/server-ux>

+
+
+

Configuration

+

To configure this module, you need to:

+
    +
  1. Go to Settings > Technical > Tier Validations > Tier Definition.
  2. +
  3. Create as many tiers as you want for hr_expense model.
  4. +
+
+
+

Usage

+

To use this module, you need to:

+
    +
  1. Create a Expense Report triggering at least one “Tier Definition”.
  2. +
  3. Click on Request Validation button.
  4. +
  5. Under the tab Reviews have a look to pending reviews and their statuses.
  6. +
  7. Once all reviews are validated click on Confirm Order.
  8. +
+

Additional features:

+
    +
  • You can filter the Expense Reports requesting your review through the +filter Needs my Review.
  • +
  • User with rights to confirm the Expense Report (validate all tiers that would +be generated) can directly do the operation, this is, there is no need for +her/him to request a validation.
  • +
+
+
+

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

+
    +
  • Ecosoft
  • +
+
+
+

Contributors

+ +
+
+

Maintainers

+

This module is maintained by the OCA.

+Odoo Community Association +

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 maintainer:

+

ps-tubtim

+

This module is part of the OCA/hr project on GitHub.

+

You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute.

+
+
+
+ + diff --git a/hr_expense_tier_validation/tests/__init__.py b/hr_expense_tier_validation/tests/__init__.py new file mode 100644 index 000000000..85b34ee31 --- /dev/null +++ b/hr_expense_tier_validation/tests/__init__.py @@ -0,0 +1,4 @@ +# Copyright 2019 Ecosoft Co., Ltd. (http://ecosoft.co.th) +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + +from . import test_hr_expense_tier_validation diff --git a/hr_expense_tier_validation/tests/test_hr_expense_tier_validation.py b/hr_expense_tier_validation/tests/test_hr_expense_tier_validation.py new file mode 100644 index 000000000..13a469c2c --- /dev/null +++ b/hr_expense_tier_validation/tests/test_hr_expense_tier_validation.py @@ -0,0 +1,14 @@ +# Copyright 2019 Ecosoft Co., Ltd. (http://ecosoft.co.th) +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + +from odoo.tests import common + + +class TestHrExpenseTierValidation(common.TransactionCase): + def setUp(self): + super(TestHrExpenseTierValidation, self).setUp() + self.tier_definition = self.env['tier.definition'] + + def test_get_tier_validation_model_names(self): + self.assertIn('hr.expense.sheet', + self.tier_definition._get_tier_validation_model_names()) diff --git a/hr_expense_tier_validation/views/hr_expense_sheet_view.xml b/hr_expense_tier_validation/views/hr_expense_sheet_view.xml new file mode 100644 index 000000000..86f257368 --- /dev/null +++ b/hr_expense_tier_validation/views/hr_expense_sheet_view.xml @@ -0,0 +1,83 @@ + + + + + hr.expense.sheet.form + hr.expense.sheet + + + +
+ + + + + + +
+ + + +
+
+ + + hr.expense.sheet.filter - hr_expense_tier_validation + hr.expense.sheet + + + + + + + + + + +
From df36219584d24f77e4de7c6234c5725c79f920ab Mon Sep 17 00:00:00 2001 From: Saran440 Date: Tue, 31 Mar 2020 11:43:56 +0700 Subject: [PATCH 02/25] [IMP] hr_expense_tier_validation: black, isort --- hr_expense_tier_validation/__manifest__.py | 26 ++-- .../models/hr_expense_sheet.py | 8 +- .../models/tier_definition.py | 4 +- .../tests/test_hr_expense_tier_validation.py | 7 +- .../views/hr_expense_sheet_view.xml | 119 +++++++++++------- 5 files changed, 91 insertions(+), 73 deletions(-) diff --git a/hr_expense_tier_validation/__manifest__.py b/hr_expense_tier_validation/__manifest__.py index 9b815d1bf..29ec9139c 100644 --- a/hr_expense_tier_validation/__manifest__.py +++ b/hr_expense_tier_validation/__manifest__.py @@ -2,20 +2,14 @@ # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). { - 'name': 'Expense Tier Validation', - 'version': '12.0.1.0.0', - 'category': 'Human Resources', - 'author': 'Ecosoft, ' - 'Odoo Community Association (OCA)', - 'license': 'AGPL-3', - 'website': 'https://github.com/OCA/hr', - 'depends': [ - 'hr_expense', - 'base_tier_validation', - ], - 'data': [ - 'views/hr_expense_sheet_view.xml', - ], - 'installable': True, - 'maintainers': ['ps-tubtim'], + "name": "Expense Tier Validation", + "version": "12.0.1.0.0", + "category": "Human Resources", + "author": "Ecosoft, Odoo Community Association (OCA)", + "license": "AGPL-3", + "website": "https://github.com/OCA/hr-expense", + "depends": ["hr_expense", "base_tier_validation"], + "data": ["views/hr_expense_sheet_view.xml"], + "installable": True, + "maintainers": ["ps-tubtim"], } diff --git a/hr_expense_tier_validation/models/hr_expense_sheet.py b/hr_expense_tier_validation/models/hr_expense_sheet.py index bfdfce545..7fa276a64 100644 --- a/hr_expense_tier_validation/models/hr_expense_sheet.py +++ b/hr_expense_tier_validation/models/hr_expense_sheet.py @@ -5,7 +5,7 @@ class HrExpenseSheet(models.Model): - _name = 'hr.expense.sheet' - _inherit = ['hr.expense.sheet', 'tier.validation'] - _state_from = ['draft'] - _state_to = ['submit', 'approve', 'post', 'done'] + _name = "hr.expense.sheet" + _inherit = ["hr.expense.sheet", "tier.validation"] + _state_from = ["draft"] + _state_to = ["submit", "approve", "post", "done"] diff --git a/hr_expense_tier_validation/models/tier_definition.py b/hr_expense_tier_validation/models/tier_definition.py index 31113cd34..850976957 100644 --- a/hr_expense_tier_validation/models/tier_definition.py +++ b/hr_expense_tier_validation/models/tier_definition.py @@ -5,10 +5,10 @@ class TierDefinition(models.Model): - _inherit = 'tier.definition' + _inherit = "tier.definition" @api.model def _get_tier_validation_model_names(self): res = super(TierDefinition, self)._get_tier_validation_model_names() - res.append('hr.expense.sheet') + res.append("hr.expense.sheet") return res diff --git a/hr_expense_tier_validation/tests/test_hr_expense_tier_validation.py b/hr_expense_tier_validation/tests/test_hr_expense_tier_validation.py index 13a469c2c..e46baafba 100644 --- a/hr_expense_tier_validation/tests/test_hr_expense_tier_validation.py +++ b/hr_expense_tier_validation/tests/test_hr_expense_tier_validation.py @@ -7,8 +7,9 @@ class TestHrExpenseTierValidation(common.TransactionCase): def setUp(self): super(TestHrExpenseTierValidation, self).setUp() - self.tier_definition = self.env['tier.definition'] + self.tier_definition = self.env["tier.definition"] def test_get_tier_validation_model_names(self): - self.assertIn('hr.expense.sheet', - self.tier_definition._get_tier_validation_model_names()) + self.assertIn( + "hr.expense.sheet", self.tier_definition._get_tier_validation_model_names() + ) diff --git a/hr_expense_tier_validation/views/hr_expense_sheet_view.xml b/hr_expense_tier_validation/views/hr_expense_sheet_view.xml index 86f257368..643656310 100644 --- a/hr_expense_tier_validation/views/hr_expense_sheet_view.xml +++ b/hr_expense_tier_validation/views/hr_expense_sheet_view.xml @@ -1,83 +1,106 @@ - + - hr.expense.sheet.form hr.expense.sheet - +
- - - -
- +
- hr.expense.sheet.filter - hr_expense_tier_validation hr.expense.sheet - + - - + + -
From c7318ffc5fcfe0217e7da883f28232c4a6eeccfd Mon Sep 17 00:00:00 2001 From: Saran440 Date: Tue, 31 Mar 2020 11:45:15 +0700 Subject: [PATCH 03/25] [13.0][MIG] hr_expense_tier_validation --- hr_expense_tier_validation/README.rst | 19 ++++++++++--------- hr_expense_tier_validation/__manifest__.py | 2 +- .../i18n/hr_expense_tier_validation.pot | 18 +++++++++--------- .../readme/CONTRIBUTORS.rst | 1 + hr_expense_tier_validation/readme/USAGE.rst | 2 +- .../static/description/index.html | 11 ++++++----- .../views/hr_expense_sheet_view.xml | 8 +++++--- 7 files changed, 33 insertions(+), 28 deletions(-) diff --git a/hr_expense_tier_validation/README.rst b/hr_expense_tier_validation/README.rst index d4d5b56ec..dbc3e7511 100644 --- a/hr_expense_tier_validation/README.rst +++ b/hr_expense_tier_validation/README.rst @@ -13,14 +13,14 @@ Expense Tier Validation .. |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%2Fhr-lightgray.png?logo=github - :target: https://github.com/OCA/hr/tree/12.0/hr_expense_tier_validation - :alt: OCA/hr +.. |badge3| image:: https://img.shields.io/badge/github-OCA%2Fhr--expense-lightgray.png?logo=github + :target: https://github.com/OCA/hr-expense/tree/13.0/hr_expense_tier_validation + :alt: OCA/hr-expense .. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png - :target: https://translation.odoo-community.org/projects/hr-12-0/hr-12-0-hr_expense_tier_validation + :target: https://translation.odoo-community.org/projects/hr-expense-13-0/hr-expense-13-0-hr_expense_tier_validation :alt: Translate me on Weblate .. |badge5| image:: https://img.shields.io/badge/runbot-Try%20me-875A7B.png - :target: https://runbot.odoo-community.org/runbot/116/12.0 + :target: https://runbot.odoo-community.org/runbot/289/13.0 :alt: Try me on Runbot |badge1| |badge2| |badge3| |badge4| |badge5| @@ -54,7 +54,7 @@ To use this module, you need to: #. Create a Expense Report triggering at least one "Tier Definition". #. Click on *Request Validation* button. #. Under the tab *Reviews* have a look to pending reviews and their statuses. -#. Once all reviews are validated click on *Confirm Order*. +#. Once all reviews are validated click on *Submit to Manager*. Additional features: @@ -67,10 +67,10 @@ Additional features: Bug Tracker =========== -Bugs are tracked on `GitHub Issues `_. +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 `_. +`feedback `_. Do not contact contributors directly about support or help with technical issues. @@ -86,6 +86,7 @@ Contributors ~~~~~~~~~~~~ * Pimolnat Suntian +* Saran Lim. Maintainers ~~~~~~~~~~~ @@ -108,6 +109,6 @@ Current `maintainer `__: |maintainer-ps-tubtim| -This module is part of the `OCA/hr `_ project on GitHub. +This module is part of the `OCA/hr-expense `_ project on GitHub. You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute. diff --git a/hr_expense_tier_validation/__manifest__.py b/hr_expense_tier_validation/__manifest__.py index 29ec9139c..dc083d009 100644 --- a/hr_expense_tier_validation/__manifest__.py +++ b/hr_expense_tier_validation/__manifest__.py @@ -3,7 +3,7 @@ { "name": "Expense Tier Validation", - "version": "12.0.1.0.0", + "version": "13.0.1.0.0", "category": "Human Resources", "author": "Ecosoft, Odoo Community Association (OCA)", "license": "AGPL-3", diff --git a/hr_expense_tier_validation/i18n/hr_expense_tier_validation.pot b/hr_expense_tier_validation/i18n/hr_expense_tier_validation.pot index 35ce4438c..1a0fd3af6 100644 --- a/hr_expense_tier_validation/i18n/hr_expense_tier_validation.pot +++ b/hr_expense_tier_validation/i18n/hr_expense_tier_validation.pot @@ -1,12 +1,12 @@ # Translation of Odoo Server. # This file contains the translation of the following modules: -# * hr_expense_tier_validation +# * hr_expense_tier_validation # msgid "" msgstr "" -"Project-Id-Version: Odoo Server 12.0\n" +"Project-Id-Version: Odoo Server 13.0\n" "Report-Msgid-Bugs-To: \n" -"Last-Translator: <>\n" +"Last-Translator: \n" "Language-Team: \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -15,7 +15,8 @@ msgstr "" #. module: hr_expense_tier_validation #: model_terms:ir.ui.view,arch_db:hr_expense_tier_validation.view_hr_expense_sheet_form -msgid "\n" +msgid "" +"\n" " This expense report needs to be validated." msgstr "" @@ -35,17 +36,17 @@ msgid "Expense Report" msgstr "" #. module: hr_expense_tier_validation -#: model_terms:ir.ui.view,arch_db:hr_expense_tier_validation.view_hr_expense_sheet_filter +#: model_terms:ir.ui.view,arch_db:hr_expense_tier_validation.hr_expense_sheet_view_search msgid "Expense report validated and ready to be approved" msgstr "" #. module: hr_expense_tier_validation -#: model_terms:ir.ui.view,arch_db:hr_expense_tier_validation.view_hr_expense_sheet_filter +#: model_terms:ir.ui.view,arch_db:hr_expense_tier_validation.hr_expense_sheet_view_search msgid "My Expense report to review" msgstr "" #. module: hr_expense_tier_validation -#: model_terms:ir.ui.view,arch_db:hr_expense_tier_validation.view_hr_expense_sheet_filter +#: model_terms:ir.ui.view,arch_db:hr_expense_tier_validation.hr_expense_sheet_view_search msgid "Needs my Review" msgstr "" @@ -75,7 +76,6 @@ msgid "Validate" msgstr "" #. module: hr_expense_tier_validation -#: model_terms:ir.ui.view,arch_db:hr_expense_tier_validation.view_hr_expense_sheet_filter +#: model_terms:ir.ui.view,arch_db:hr_expense_tier_validation.hr_expense_sheet_view_search msgid "Validated" msgstr "" - diff --git a/hr_expense_tier_validation/readme/CONTRIBUTORS.rst b/hr_expense_tier_validation/readme/CONTRIBUTORS.rst index 0ef1f84c3..720bec61f 100644 --- a/hr_expense_tier_validation/readme/CONTRIBUTORS.rst +++ b/hr_expense_tier_validation/readme/CONTRIBUTORS.rst @@ -1 +1,2 @@ * Pimolnat Suntian +* Saran Lim. diff --git a/hr_expense_tier_validation/readme/USAGE.rst b/hr_expense_tier_validation/readme/USAGE.rst index fc812f6e9..7ccb7c16e 100644 --- a/hr_expense_tier_validation/readme/USAGE.rst +++ b/hr_expense_tier_validation/readme/USAGE.rst @@ -3,7 +3,7 @@ To use this module, you need to: #. Create a Expense Report triggering at least one "Tier Definition". #. Click on *Request Validation* button. #. Under the tab *Reviews* have a look to pending reviews and their statuses. -#. Once all reviews are validated click on *Confirm Order*. +#. Once all reviews are validated click on *Submit to Manager*. Additional features: diff --git a/hr_expense_tier_validation/static/description/index.html b/hr_expense_tier_validation/static/description/index.html index 432a6895f..5fe50835c 100644 --- a/hr_expense_tier_validation/static/description/index.html +++ b/hr_expense_tier_validation/static/description/index.html @@ -367,7 +367,7 @@

Expense Tier Validation

!! This file is generated by oca-gen-addon-readme !! !! changes will be overwritten. !! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! --> -

Beta License: AGPL-3 OCA/hr Translate me on Weblate Try me on Runbot

+

Beta License: AGPL-3 OCA/hr-expense Translate me on Weblate Try me on Runbot

This module extends the functionality of Expense Reports to support a tier validation process.

Table of contents

@@ -404,7 +404,7 @@

Usage

  • Create a Expense Report triggering at least one “Tier Definition”.
  • Click on Request Validation button.
  • Under the tab Reviews have a look to pending reviews and their statuses.
  • -
  • Once all reviews are validated click on Confirm Order.
  • +
  • Once all reviews are validated click on Submit to Manager.
  • Additional features:

      @@ -417,10 +417,10 @@

      Usage

    Bug Tracker

    -

    Bugs are tracked on GitHub Issues. +

    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.

    +feedback.

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

    @@ -435,6 +435,7 @@

    Authors

    Contributors

    @@ -446,7 +447,7 @@

    Maintainers

    promote its widespread use.

    Current maintainer:

    ps-tubtim

    -

    This module is part of the OCA/hr project on GitHub.

    +

    This module is part of the OCA/hr-expense project on GitHub.

    You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute.

    diff --git a/hr_expense_tier_validation/views/hr_expense_sheet_view.xml b/hr_expense_tier_validation/views/hr_expense_sheet_view.xml index 643656310..1736ce337 100644 --- a/hr_expense_tier_validation/views/hr_expense_sheet_view.xml +++ b/hr_expense_tier_validation/views/hr_expense_sheet_view.xml @@ -81,10 +81,12 @@ - - hr.expense.sheet.filter - hr_expense_tier_validation + + hr.expense.sheet.view.search - hr_expense_tier_validation hr.expense.sheet - + From a7f0b0423bebe3aff77abe315d0f2da1c6e74416 Mon Sep 17 00:00:00 2001 From: aphon61bank Date: Mon, 8 Feb 2021 16:22:22 +0700 Subject: [PATCH 04/25] [14.0][MIG] hr_expense_tier_validation --- hr_expense_tier_validation/README.rst | 12 +-- hr_expense_tier_validation/__manifest__.py | 2 +- .../i18n/hr_expense_tier_validation.pot | 60 ++++++++------ .../models/hr_expense_sheet.py | 6 +- .../models/tier_definition.py | 2 +- hr_expense_tier_validation/readme/USAGE.rst | 2 +- .../static/description/index.html | 8 +- .../tests/test_hr_expense_tier_validation.py | 2 +- .../views/hr_expense_sheet_view.xml | 83 +------------------ 9 files changed, 55 insertions(+), 122 deletions(-) diff --git a/hr_expense_tier_validation/README.rst b/hr_expense_tier_validation/README.rst index dbc3e7511..879e90c61 100644 --- a/hr_expense_tier_validation/README.rst +++ b/hr_expense_tier_validation/README.rst @@ -14,13 +14,13 @@ Expense Tier Validation :target: http://www.gnu.org/licenses/agpl-3.0-standalone.html :alt: License: AGPL-3 .. |badge3| image:: https://img.shields.io/badge/github-OCA%2Fhr--expense-lightgray.png?logo=github - :target: https://github.com/OCA/hr-expense/tree/13.0/hr_expense_tier_validation + :target: https://github.com/OCA/hr-expense/tree/14.0/hr_expense_tier_validation :alt: OCA/hr-expense .. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png - :target: https://translation.odoo-community.org/projects/hr-expense-13-0/hr-expense-13-0-hr_expense_tier_validation + :target: https://translation.odoo-community.org/projects/hr-expense-14-0/hr-expense-14-0-hr_expense_tier_validation :alt: Translate me on Weblate .. |badge5| image:: https://img.shields.io/badge/runbot-Try%20me-875A7B.png - :target: https://runbot.odoo-community.org/runbot/289/13.0 + :target: https://runbot.odoo-community.org/runbot/289/14.0 :alt: Try me on Runbot |badge1| |badge2| |badge3| |badge4| |badge5| @@ -54,7 +54,7 @@ To use this module, you need to: #. Create a Expense Report triggering at least one "Tier Definition". #. Click on *Request Validation* button. #. Under the tab *Reviews* have a look to pending reviews and their statuses. -#. Once all reviews are validated click on *Submit to Manager*. +#. Once all reviews are validated click on *Approve*. Additional features: @@ -70,7 +70,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 -`feedback `_. +`feedback `_. Do not contact contributors directly about support or help with technical issues. @@ -109,6 +109,6 @@ Current `maintainer `__: |maintainer-ps-tubtim| -This module is part of the `OCA/hr-expense `_ project on GitHub. +This module is part of the `OCA/hr-expense `_ project on GitHub. You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute. diff --git a/hr_expense_tier_validation/__manifest__.py b/hr_expense_tier_validation/__manifest__.py index dc083d009..dda61cf31 100644 --- a/hr_expense_tier_validation/__manifest__.py +++ b/hr_expense_tier_validation/__manifest__.py @@ -3,7 +3,7 @@ { "name": "Expense Tier Validation", - "version": "13.0.1.0.0", + "version": "14.0.1.0.0", "category": "Human Resources", "author": "Ecosoft, Odoo Community Association (OCA)", "license": "AGPL-3", diff --git a/hr_expense_tier_validation/i18n/hr_expense_tier_validation.pot b/hr_expense_tier_validation/i18n/hr_expense_tier_validation.pot index 1a0fd3af6..62fa6c149 100644 --- a/hr_expense_tier_validation/i18n/hr_expense_tier_validation.pot +++ b/hr_expense_tier_validation/i18n/hr_expense_tier_validation.pot @@ -4,7 +4,7 @@ # msgid "" msgstr "" -"Project-Id-Version: Odoo Server 13.0\n" +"Project-Id-Version: Odoo Server 14.0\n" "Report-Msgid-Bugs-To: \n" "Last-Translator: \n" "Language-Team: \n" @@ -14,20 +14,14 @@ msgstr "" "Plural-Forms: \n" #. module: hr_expense_tier_validation -#: model_terms:ir.ui.view,arch_db:hr_expense_tier_validation.view_hr_expense_sheet_form -msgid "" -"\n" -" This expense report needs to be validated." -msgstr "" - -#. module: hr_expense_tier_validation -#: model_terms:ir.ui.view,arch_db:hr_expense_tier_validation.view_hr_expense_sheet_form -msgid " Operation has been rejected." +#: model:ir.model.fields,field_description:hr_expense_tier_validation.field_hr_expense_sheet__can_review +msgid "Can Review" msgstr "" #. module: hr_expense_tier_validation -#: model_terms:ir.ui.view,arch_db:hr_expense_tier_validation.view_hr_expense_sheet_form -msgid " Operation has been validated!" +#: model:ir.model.fields,field_description:hr_expense_tier_validation.field_hr_expense_sheet__display_name +#: model:ir.model.fields,field_description:hr_expense_tier_validation.field_tier_definition__display_name +msgid "Display Name" msgstr "" #. module: hr_expense_tier_validation @@ -40,29 +34,46 @@ msgstr "" msgid "Expense report validated and ready to be approved" msgstr "" +#. module: hr_expense_tier_validation +#: model:ir.model.fields,field_description:hr_expense_tier_validation.field_hr_expense_sheet__has_comment +msgid "Has Comment" +msgstr "" + +#. module: hr_expense_tier_validation +#: model:ir.model.fields,field_description:hr_expense_tier_validation.field_hr_expense_sheet__id +#: model:ir.model.fields,field_description:hr_expense_tier_validation.field_tier_definition__id +msgid "ID" +msgstr "" + +#. module: hr_expense_tier_validation +#: model:ir.model.fields,field_description:hr_expense_tier_validation.field_hr_expense_sheet____last_update +#: model:ir.model.fields,field_description:hr_expense_tier_validation.field_tier_definition____last_update +msgid "Last Modified on" +msgstr "" + #. module: hr_expense_tier_validation #: model_terms:ir.ui.view,arch_db:hr_expense_tier_validation.hr_expense_sheet_view_search msgid "My Expense report to review" msgstr "" #. module: hr_expense_tier_validation -#: model_terms:ir.ui.view,arch_db:hr_expense_tier_validation.hr_expense_sheet_view_search -msgid "Needs my Review" +#: model:ir.model.fields,field_description:hr_expense_tier_validation.field_hr_expense_sheet__need_validation +msgid "Need Validation" msgstr "" #. module: hr_expense_tier_validation -#: model_terms:ir.ui.view,arch_db:hr_expense_tier_validation.view_hr_expense_sheet_form -msgid "Reject" +#: model_terms:ir.ui.view,arch_db:hr_expense_tier_validation.hr_expense_sheet_view_search +msgid "Needs my Review" msgstr "" #. module: hr_expense_tier_validation -#: model_terms:ir.ui.view,arch_db:hr_expense_tier_validation.view_hr_expense_sheet_form -msgid "Request Validation" +#: model:ir.model.fields,field_description:hr_expense_tier_validation.field_hr_expense_sheet__rejected +msgid "Rejected" msgstr "" #. module: hr_expense_tier_validation -#: model_terms:ir.ui.view,arch_db:hr_expense_tier_validation.view_hr_expense_sheet_form -msgid "Restart Validation" +#: model:ir.model.fields,field_description:hr_expense_tier_validation.field_hr_expense_sheet__reviewer_ids +msgid "Reviewers" msgstr "" #. module: hr_expense_tier_validation @@ -71,11 +82,12 @@ msgid "Tier Definition" msgstr "" #. module: hr_expense_tier_validation -#: model_terms:ir.ui.view,arch_db:hr_expense_tier_validation.view_hr_expense_sheet_form -msgid "Validate" +#: model:ir.model.fields,field_description:hr_expense_tier_validation.field_hr_expense_sheet__validated +#: model_terms:ir.ui.view,arch_db:hr_expense_tier_validation.hr_expense_sheet_view_search +msgid "Validated" msgstr "" #. module: hr_expense_tier_validation -#: model_terms:ir.ui.view,arch_db:hr_expense_tier_validation.hr_expense_sheet_view_search -msgid "Validated" +#: model:ir.model.fields,field_description:hr_expense_tier_validation.field_hr_expense_sheet__review_ids +msgid "Validations" msgstr "" diff --git a/hr_expense_tier_validation/models/hr_expense_sheet.py b/hr_expense_tier_validation/models/hr_expense_sheet.py index 7fa276a64..6edeacaab 100644 --- a/hr_expense_tier_validation/models/hr_expense_sheet.py +++ b/hr_expense_tier_validation/models/hr_expense_sheet.py @@ -7,5 +7,7 @@ class HrExpenseSheet(models.Model): _name = "hr.expense.sheet" _inherit = ["hr.expense.sheet", "tier.validation"] - _state_from = ["draft"] - _state_to = ["submit", "approve", "post", "done"] + _state_from = ["draft", "submit"] + _state_to = ["approve", "post", "done"] + + _tier_validation_manual_config = False diff --git a/hr_expense_tier_validation/models/tier_definition.py b/hr_expense_tier_validation/models/tier_definition.py index 850976957..6bdb77749 100644 --- a/hr_expense_tier_validation/models/tier_definition.py +++ b/hr_expense_tier_validation/models/tier_definition.py @@ -9,6 +9,6 @@ class TierDefinition(models.Model): @api.model def _get_tier_validation_model_names(self): - res = super(TierDefinition, self)._get_tier_validation_model_names() + res = super()._get_tier_validation_model_names() res.append("hr.expense.sheet") return res diff --git a/hr_expense_tier_validation/readme/USAGE.rst b/hr_expense_tier_validation/readme/USAGE.rst index 7ccb7c16e..ac8bc97cd 100644 --- a/hr_expense_tier_validation/readme/USAGE.rst +++ b/hr_expense_tier_validation/readme/USAGE.rst @@ -3,7 +3,7 @@ To use this module, you need to: #. Create a Expense Report triggering at least one "Tier Definition". #. Click on *Request Validation* button. #. Under the tab *Reviews* have a look to pending reviews and their statuses. -#. Once all reviews are validated click on *Submit to Manager*. +#. Once all reviews are validated click on *Approve*. Additional features: diff --git a/hr_expense_tier_validation/static/description/index.html b/hr_expense_tier_validation/static/description/index.html index 5fe50835c..833430ef1 100644 --- a/hr_expense_tier_validation/static/description/index.html +++ b/hr_expense_tier_validation/static/description/index.html @@ -367,7 +367,7 @@

    Expense Tier Validation

    !! This file is generated by oca-gen-addon-readme !! !! changes will be overwritten. !! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! --> -

    Beta License: AGPL-3 OCA/hr-expense Translate me on Weblate Try me on Runbot

    +

    Beta License: AGPL-3 OCA/hr-expense Translate me on Weblate Try me on Runbot

    This module extends the functionality of Expense Reports to support a tier validation process.

    Table of contents

    @@ -404,7 +404,7 @@

    Usage

  • Create a Expense Report triggering at least one “Tier Definition”.
  • Click on Request Validation button.
  • Under the tab Reviews have a look to pending reviews and their statuses.
  • -
  • Once all reviews are validated click on Submit to Manager.
  • +
  • Once all reviews are validated click on Approve.
  • Additional features:

      @@ -420,7 +420,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 -feedback.

      +feedback.

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

    @@ -447,7 +447,7 @@

    Maintainers

    promote its widespread use.

    Current maintainer:

    ps-tubtim

    -

    This module is part of the OCA/hr-expense project on GitHub.

    +

    This module is part of the OCA/hr-expense project on GitHub.

    You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute.

    diff --git a/hr_expense_tier_validation/tests/test_hr_expense_tier_validation.py b/hr_expense_tier_validation/tests/test_hr_expense_tier_validation.py index e46baafba..5f6357303 100644 --- a/hr_expense_tier_validation/tests/test_hr_expense_tier_validation.py +++ b/hr_expense_tier_validation/tests/test_hr_expense_tier_validation.py @@ -6,7 +6,7 @@ class TestHrExpenseTierValidation(common.TransactionCase): def setUp(self): - super(TestHrExpenseTierValidation, self).setUp() + super().setUp() self.tier_definition = self.env["tier.definition"] def test_get_tier_validation_model_names(self): diff --git a/hr_expense_tier_validation/views/hr_expense_sheet_view.xml b/hr_expense_tier_validation/views/hr_expense_sheet_view.xml index 1736ce337..e20223c02 100644 --- a/hr_expense_tier_validation/views/hr_expense_sheet_view.xml +++ b/hr_expense_tier_validation/views/hr_expense_sheet_view.xml @@ -1,86 +1,5 @@ - - hr.expense.sheet.form - hr.expense.sheet - - - -
    - - - - - - -
    - - - -
    -
    Date: Fri, 20 Aug 2021 10:29:44 +0700 Subject: [PATCH 05/25] [FIX] tier validated state submit --- hr_expense_tier_validation/README.rst | 2 +- hr_expense_tier_validation/__manifest__.py | 2 +- .../i18n/hr_expense_tier_validation.pot | 20 +++++++++++++++++++ .../models/hr_expense_sheet.py | 4 ++-- hr_expense_tier_validation/readme/USAGE.rst | 2 +- .../static/description/index.html | 2 +- .../views/hr_expense_sheet_view.xml | 2 +- 7 files changed, 27 insertions(+), 7 deletions(-) diff --git a/hr_expense_tier_validation/README.rst b/hr_expense_tier_validation/README.rst index 879e90c61..9677fef52 100644 --- a/hr_expense_tier_validation/README.rst +++ b/hr_expense_tier_validation/README.rst @@ -54,7 +54,7 @@ To use this module, you need to: #. Create a Expense Report triggering at least one "Tier Definition". #. Click on *Request Validation* button. #. Under the tab *Reviews* have a look to pending reviews and their statuses. -#. Once all reviews are validated click on *Approve*. +#. Once all reviews are validated click on *Submit to Manager*. Additional features: diff --git a/hr_expense_tier_validation/__manifest__.py b/hr_expense_tier_validation/__manifest__.py index dda61cf31..746192a6e 100644 --- a/hr_expense_tier_validation/__manifest__.py +++ b/hr_expense_tier_validation/__manifest__.py @@ -3,7 +3,7 @@ { "name": "Expense Tier Validation", - "version": "14.0.1.0.0", + "version": "14.0.1.1.0", "category": "Human Resources", "author": "Ecosoft, Odoo Community Association (OCA)", "license": "AGPL-3", diff --git a/hr_expense_tier_validation/i18n/hr_expense_tier_validation.pot b/hr_expense_tier_validation/i18n/hr_expense_tier_validation.pot index 62fa6c149..5858ddb25 100644 --- a/hr_expense_tier_validation/i18n/hr_expense_tier_validation.pot +++ b/hr_expense_tier_validation/i18n/hr_expense_tier_validation.pot @@ -66,11 +66,21 @@ msgstr "" msgid "Needs my Review" msgstr "" +#. module: hr_expense_tier_validation +#: model:ir.model.fields,field_description:hr_expense_tier_validation.field_hr_expense_sheet__next_review +msgid "Next Review" +msgstr "" + #. module: hr_expense_tier_validation #: model:ir.model.fields,field_description:hr_expense_tier_validation.field_hr_expense_sheet__rejected msgid "Rejected" msgstr "" +#. module: hr_expense_tier_validation +#: model:ir.model.fields,field_description:hr_expense_tier_validation.field_hr_expense_sheet__rejected_message +msgid "Rejected Message" +msgstr "" + #. module: hr_expense_tier_validation #: model:ir.model.fields,field_description:hr_expense_tier_validation.field_hr_expense_sheet__reviewer_ids msgid "Reviewers" @@ -81,12 +91,22 @@ msgstr "" msgid "Tier Definition" msgstr "" +#. module: hr_expense_tier_validation +#: model:ir.model.fields,field_description:hr_expense_tier_validation.field_hr_expense_sheet__to_validate_message +msgid "To Validate Message" +msgstr "" + #. module: hr_expense_tier_validation #: model:ir.model.fields,field_description:hr_expense_tier_validation.field_hr_expense_sheet__validated #: model_terms:ir.ui.view,arch_db:hr_expense_tier_validation.hr_expense_sheet_view_search msgid "Validated" msgstr "" +#. module: hr_expense_tier_validation +#: model:ir.model.fields,field_description:hr_expense_tier_validation.field_hr_expense_sheet__validated_message +msgid "Validated Message" +msgstr "" + #. module: hr_expense_tier_validation #: model:ir.model.fields,field_description:hr_expense_tier_validation.field_hr_expense_sheet__review_ids msgid "Validations" diff --git a/hr_expense_tier_validation/models/hr_expense_sheet.py b/hr_expense_tier_validation/models/hr_expense_sheet.py index 6edeacaab..a8aac6678 100644 --- a/hr_expense_tier_validation/models/hr_expense_sheet.py +++ b/hr_expense_tier_validation/models/hr_expense_sheet.py @@ -7,7 +7,7 @@ class HrExpenseSheet(models.Model): _name = "hr.expense.sheet" _inherit = ["hr.expense.sheet", "tier.validation"] - _state_from = ["draft", "submit"] - _state_to = ["approve", "post", "done"] + _state_from = ["draft"] + _state_to = ["submit", "approve", "post", "done"] _tier_validation_manual_config = False diff --git a/hr_expense_tier_validation/readme/USAGE.rst b/hr_expense_tier_validation/readme/USAGE.rst index ac8bc97cd..7ccb7c16e 100644 --- a/hr_expense_tier_validation/readme/USAGE.rst +++ b/hr_expense_tier_validation/readme/USAGE.rst @@ -3,7 +3,7 @@ To use this module, you need to: #. Create a Expense Report triggering at least one "Tier Definition". #. Click on *Request Validation* button. #. Under the tab *Reviews* have a look to pending reviews and their statuses. -#. Once all reviews are validated click on *Approve*. +#. Once all reviews are validated click on *Submit to Manager*. Additional features: diff --git a/hr_expense_tier_validation/static/description/index.html b/hr_expense_tier_validation/static/description/index.html index 833430ef1..6816e897f 100644 --- a/hr_expense_tier_validation/static/description/index.html +++ b/hr_expense_tier_validation/static/description/index.html @@ -404,7 +404,7 @@

    Usage

  • Create a Expense Report triggering at least one “Tier Definition”.
  • Click on Request Validation button.
  • Under the tab Reviews have a look to pending reviews and their statuses.
  • -
  • Once all reviews are validated click on Approve.
  • +
  • Once all reviews are validated click on Submit to Manager.
  • Additional features:

      diff --git a/hr_expense_tier_validation/views/hr_expense_sheet_view.xml b/hr_expense_tier_validation/views/hr_expense_sheet_view.xml index e20223c02..19d81cf7b 100644 --- a/hr_expense_tier_validation/views/hr_expense_sheet_view.xml +++ b/hr_expense_tier_validation/views/hr_expense_sheet_view.xml @@ -12,7 +12,7 @@ Date: Wed, 8 Jun 2022 16:43:01 +0700 Subject: [PATCH 06/25] [14.0][FIX] hr_expense_tier_validation: disallow editable expense from the expense report is under validation --- hr_expense_tier_validation/__manifest__.py | 2 +- .../i18n/hr_expense_tier_validation.pot | 14 ++++ hr_expense_tier_validation/models/__init__.py | 1 + .../models/hr_expense.py | 34 +++++++++ .../tests/test_hr_expense_tier_validation.py | 73 ++++++++++++++++++- 5 files changed, 119 insertions(+), 5 deletions(-) create mode 100644 hr_expense_tier_validation/models/hr_expense.py diff --git a/hr_expense_tier_validation/__manifest__.py b/hr_expense_tier_validation/__manifest__.py index 746192a6e..400f354a9 100644 --- a/hr_expense_tier_validation/__manifest__.py +++ b/hr_expense_tier_validation/__manifest__.py @@ -3,7 +3,7 @@ { "name": "Expense Tier Validation", - "version": "14.0.1.1.0", + "version": "14.0.1.2.0", "category": "Human Resources", "author": "Ecosoft, Odoo Community Association (OCA)", "license": "AGPL-3", diff --git a/hr_expense_tier_validation/i18n/hr_expense_tier_validation.pot b/hr_expense_tier_validation/i18n/hr_expense_tier_validation.pot index 5858ddb25..03dee6c92 100644 --- a/hr_expense_tier_validation/i18n/hr_expense_tier_validation.pot +++ b/hr_expense_tier_validation/i18n/hr_expense_tier_validation.pot @@ -19,11 +19,17 @@ msgid "Can Review" msgstr "" #. module: hr_expense_tier_validation +#: model:ir.model.fields,field_description:hr_expense_tier_validation.field_hr_expense__display_name #: model:ir.model.fields,field_description:hr_expense_tier_validation.field_hr_expense_sheet__display_name #: model:ir.model.fields,field_description:hr_expense_tier_validation.field_tier_definition__display_name msgid "Display Name" msgstr "" +#. module: hr_expense_tier_validation +#: model:ir.model,name:hr_expense_tier_validation.model_hr_expense +msgid "Expense" +msgstr "" + #. module: hr_expense_tier_validation #: model:ir.model,name:hr_expense_tier_validation.model_hr_expense_sheet msgid "Expense Report" @@ -40,12 +46,14 @@ msgid "Has Comment" msgstr "" #. module: hr_expense_tier_validation +#: model:ir.model.fields,field_description:hr_expense_tier_validation.field_hr_expense__id #: model:ir.model.fields,field_description:hr_expense_tier_validation.field_hr_expense_sheet__id #: model:ir.model.fields,field_description:hr_expense_tier_validation.field_tier_definition__id msgid "ID" msgstr "" #. module: hr_expense_tier_validation +#: model:ir.model.fields,field_description:hr_expense_tier_validation.field_hr_expense____last_update #: model:ir.model.fields,field_description:hr_expense_tier_validation.field_hr_expense_sheet____last_update #: model:ir.model.fields,field_description:hr_expense_tier_validation.field_tier_definition____last_update msgid "Last Modified on" @@ -86,6 +94,12 @@ msgstr "" msgid "Reviewers" msgstr "" +#. module: hr_expense_tier_validation +#: code:addons/hr_expense_tier_validation/models/hr_expense.py:0 +#, python-format +msgid "The expense report is under validation." +msgstr "" + #. module: hr_expense_tier_validation #: model:ir.model,name:hr_expense_tier_validation.model_tier_definition msgid "Tier Definition" diff --git a/hr_expense_tier_validation/models/__init__.py b/hr_expense_tier_validation/models/__init__.py index 89b01d5da..dfb758b42 100644 --- a/hr_expense_tier_validation/models/__init__.py +++ b/hr_expense_tier_validation/models/__init__.py @@ -2,4 +2,5 @@ # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). from . import hr_expense_sheet +from . import hr_expense from . import tier_definition diff --git a/hr_expense_tier_validation/models/hr_expense.py b/hr_expense_tier_validation/models/hr_expense.py new file mode 100644 index 000000000..771f813f9 --- /dev/null +++ b/hr_expense_tier_validation/models/hr_expense.py @@ -0,0 +1,34 @@ +# Copyright 2022 Ecosoft Co., Ltd. (http://ecosoft.co.th) +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + +from odoo import _, api, models +from odoo.exceptions import ValidationError + + +class HrExpense(models.Model): + _inherit = "hr.expense" + + @api.model + def _get_under_validation_exceptions(self): + """Extend for more field exceptions.""" + return ["message_follower_ids", "access_token"] + + def _check_allow_write_under_validation(self, vals): + """Allow to add exceptions for fields that are allowed to be written + even when the record is under validation.""" + exceptions = self._get_under_validation_exceptions() + if any(val not in exceptions for val in vals): + return False + return True + + def write(self, vals): + for rec in self: + if ( + rec.sheet_id.state == "draft" + and rec.sheet_id.review_ids + and not rec.sheet_id.validated + and not rec.sheet_id.rejected + and not rec._check_allow_write_under_validation(vals) + ): + raise ValidationError(_("The expense report is under validation.")) + return super().write(vals) diff --git a/hr_expense_tier_validation/tests/test_hr_expense_tier_validation.py b/hr_expense_tier_validation/tests/test_hr_expense_tier_validation.py index 5f6357303..eb691b7a7 100644 --- a/hr_expense_tier_validation/tests/test_hr_expense_tier_validation.py +++ b/hr_expense_tier_validation/tests/test_hr_expense_tier_validation.py @@ -1,15 +1,80 @@ # Copyright 2019 Ecosoft Co., Ltd. (http://ecosoft.co.th) # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). -from odoo.tests import common +from odoo.exceptions import ValidationError +from odoo.tests.common import Form, TransactionCase -class TestHrExpenseTierValidation(common.TransactionCase): +class TestHrExpenseTierValidation(TransactionCase): def setUp(self): super().setUp() - self.tier_definition = self.env["tier.definition"] + self.tier_def_obj = self.env["tier.definition"] + self.expense_sheet_model = self.env["hr.expense.sheet"] + self.partner = self.env.ref("base.res_partner_2") + # Create users: + group_ids = self.env.ref("base.group_system").ids + self.test_user_1 = self.env["res.users"].create( + {"name": "John", "login": "test1", "groups_id": [(6, 0, group_ids)]} + ) + # Create tier validation + self.tier_def_obj.create( + { + "model_id": self.env["ir.model"] + .search([("model", "=", "hr.expense.sheet")]) + .id, + "review_type": "individual", + "reviewer_id": self.test_user_1.id, + } + ) + employee_home = self.env["res.partner"].create( + {"name": "Employee Home Address"} + ) + self.employee = self.env["hr.employee"].create( + {"name": "Employee A", "address_home_id": employee_home.id} + ) + self.product_1 = self.env.ref("product.product_product_1") + + def _create_expense( + self, + description, + employee, + product, + amount, + payment_mode="own_account", + ): + with Form(self.env["hr.expense"]) as expense: + expense.name = description + expense.employee_id = employee + expense.product_id = product + expense.unit_amount = amount + expense.payment_mode = payment_mode + expense = expense.save() + expense.tax_ids = False # Test no vat + return expense def test_get_tier_validation_model_names(self): self.assertIn( - "hr.expense.sheet", self.tier_definition._get_tier_validation_model_names() + "hr.expense.sheet", self.tier_def_obj._get_tier_validation_model_names() + ) + + def test_edit_value_expense(self): + expense = self._create_expense( + "Test - Expense", + self.employee, + self.product_1, + 1.0, ) + sheet_dict = expense.action_submit_expenses() + sheet = self.expense_sheet_model.search([("id", "=", sheet_dict["res_id"])]) + # Must request validation before submit to manager + with self.assertRaises(ValidationError): + sheet.action_submit_sheet() + sheet.request_validation() + # tier validation but state still draft + self.assertEqual(sheet.state, "draft") + # not allow edit expense when under validation + with self.assertRaises(ValidationError): + with Form(expense) as ex: + ex.name = "New name" + # Test change message follower + expense.write({"message_follower_ids": self.partner.ids}) From 7768917098b75940519e92f9be7d926ab0524fa4 Mon Sep 17 00:00:00 2001 From: Panca Date: Sun, 24 Apr 2022 16:24:32 +0700 Subject: [PATCH 07/25] [IMP] hr_expense_tier_validation: before this PR, after the reviewer validate the tier validation, then the user has to click the Submit to Manager button. By this PR, requester has to click the Submit to Manager button first, then the tier validation is activated. --- hr_expense_tier_validation/models/hr_expense.py | 2 +- hr_expense_tier_validation/models/hr_expense_sheet.py | 4 ++-- hr_expense_tier_validation/readme/USAGE.rst | 2 +- .../tests/test_hr_expense_tier_validation.py | 11 +++++++---- .../views/hr_expense_sheet_view.xml | 2 +- 5 files changed, 12 insertions(+), 9 deletions(-) diff --git a/hr_expense_tier_validation/models/hr_expense.py b/hr_expense_tier_validation/models/hr_expense.py index 771f813f9..9be934197 100644 --- a/hr_expense_tier_validation/models/hr_expense.py +++ b/hr_expense_tier_validation/models/hr_expense.py @@ -24,7 +24,7 @@ def _check_allow_write_under_validation(self, vals): def write(self, vals): for rec in self: if ( - rec.sheet_id.state == "draft" + rec.sheet_id.state == "submit" and rec.sheet_id.review_ids and not rec.sheet_id.validated and not rec.sheet_id.rejected diff --git a/hr_expense_tier_validation/models/hr_expense_sheet.py b/hr_expense_tier_validation/models/hr_expense_sheet.py index a8aac6678..b1d0316c5 100644 --- a/hr_expense_tier_validation/models/hr_expense_sheet.py +++ b/hr_expense_tier_validation/models/hr_expense_sheet.py @@ -7,7 +7,7 @@ class HrExpenseSheet(models.Model): _name = "hr.expense.sheet" _inherit = ["hr.expense.sheet", "tier.validation"] - _state_from = ["draft"] - _state_to = ["submit", "approve", "post", "done"] + _state_from = ["submit"] + _state_to = ["approve", "post", "done"] _tier_validation_manual_config = False diff --git a/hr_expense_tier_validation/readme/USAGE.rst b/hr_expense_tier_validation/readme/USAGE.rst index 7ccb7c16e..ac8bc97cd 100644 --- a/hr_expense_tier_validation/readme/USAGE.rst +++ b/hr_expense_tier_validation/readme/USAGE.rst @@ -3,7 +3,7 @@ To use this module, you need to: #. Create a Expense Report triggering at least one "Tier Definition". #. Click on *Request Validation* button. #. Under the tab *Reviews* have a look to pending reviews and their statuses. -#. Once all reviews are validated click on *Submit to Manager*. +#. Once all reviews are validated click on *Approve*. Additional features: diff --git a/hr_expense_tier_validation/tests/test_hr_expense_tier_validation.py b/hr_expense_tier_validation/tests/test_hr_expense_tier_validation.py index eb691b7a7..22f16b597 100644 --- a/hr_expense_tier_validation/tests/test_hr_expense_tier_validation.py +++ b/hr_expense_tier_validation/tests/test_hr_expense_tier_validation.py @@ -66,12 +66,15 @@ def test_edit_value_expense(self): ) sheet_dict = expense.action_submit_expenses() sheet = self.expense_sheet_model.search([("id", "=", sheet_dict["res_id"])]) - # Must request validation before submit to manager + self.assertEqual(sheet.state, "draft") + sheet.action_submit_sheet() + self.assertEqual(sheet.state, "submit") + # Must request validation before approve with self.assertRaises(ValidationError): - sheet.action_submit_sheet() + sheet.approve_expense_sheets() sheet.request_validation() - # tier validation but state still draft - self.assertEqual(sheet.state, "draft") + # tier validation but state still submit + self.assertEqual(sheet.state, "submit") # not allow edit expense when under validation with self.assertRaises(ValidationError): with Form(expense) as ex: diff --git a/hr_expense_tier_validation/views/hr_expense_sheet_view.xml b/hr_expense_tier_validation/views/hr_expense_sheet_view.xml index 19d81cf7b..e20223c02 100644 --- a/hr_expense_tier_validation/views/hr_expense_sheet_view.xml +++ b/hr_expense_tier_validation/views/hr_expense_sheet_view.xml @@ -12,7 +12,7 @@ Date: Thu, 23 Feb 2023 10:26:27 +0700 Subject: [PATCH 08/25] [15.0][MIG] hr_expense_tier_validation --- hr_expense_tier_validation/README.rst | 12 +++++----- hr_expense_tier_validation/__manifest__.py | 2 +- .../i18n/hr_expense_tier_validation.pot | 23 +------------------ .../static/description/index.html | 8 +++---- .../tests/test_hr_expense_tier_validation.py | 20 ++++++++++------ 5 files changed, 25 insertions(+), 40 deletions(-) diff --git a/hr_expense_tier_validation/README.rst b/hr_expense_tier_validation/README.rst index 9677fef52..fb58e00ca 100644 --- a/hr_expense_tier_validation/README.rst +++ b/hr_expense_tier_validation/README.rst @@ -14,13 +14,13 @@ Expense Tier Validation :target: http://www.gnu.org/licenses/agpl-3.0-standalone.html :alt: License: AGPL-3 .. |badge3| image:: https://img.shields.io/badge/github-OCA%2Fhr--expense-lightgray.png?logo=github - :target: https://github.com/OCA/hr-expense/tree/14.0/hr_expense_tier_validation + :target: https://github.com/OCA/hr-expense/tree/15.0/hr_expense_tier_validation :alt: OCA/hr-expense .. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png - :target: https://translation.odoo-community.org/projects/hr-expense-14-0/hr-expense-14-0-hr_expense_tier_validation + :target: https://translation.odoo-community.org/projects/hr-expense-15-0/hr-expense-15-0-hr_expense_tier_validation :alt: Translate me on Weblate .. |badge5| image:: https://img.shields.io/badge/runbot-Try%20me-875A7B.png - :target: https://runbot.odoo-community.org/runbot/289/14.0 + :target: https://runbot.odoo-community.org/runbot/289/15.0 :alt: Try me on Runbot |badge1| |badge2| |badge3| |badge4| |badge5| @@ -54,7 +54,7 @@ To use this module, you need to: #. Create a Expense Report triggering at least one "Tier Definition". #. Click on *Request Validation* button. #. Under the tab *Reviews* have a look to pending reviews and their statuses. -#. Once all reviews are validated click on *Submit to Manager*. +#. Once all reviews are validated click on *Approve*. Additional features: @@ -70,7 +70,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 -`feedback `_. +`feedback `_. Do not contact contributors directly about support or help with technical issues. @@ -109,6 +109,6 @@ Current `maintainer `__: |maintainer-ps-tubtim| -This module is part of the `OCA/hr-expense `_ project on GitHub. +This module is part of the `OCA/hr-expense `_ project on GitHub. You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute. diff --git a/hr_expense_tier_validation/__manifest__.py b/hr_expense_tier_validation/__manifest__.py index 400f354a9..c5e0dc6a8 100644 --- a/hr_expense_tier_validation/__manifest__.py +++ b/hr_expense_tier_validation/__manifest__.py @@ -3,7 +3,7 @@ { "name": "Expense Tier Validation", - "version": "14.0.1.2.0", + "version": "15.0.1.0.0", "category": "Human Resources", "author": "Ecosoft, Odoo Community Association (OCA)", "license": "AGPL-3", diff --git a/hr_expense_tier_validation/i18n/hr_expense_tier_validation.pot b/hr_expense_tier_validation/i18n/hr_expense_tier_validation.pot index 03dee6c92..267cc128e 100644 --- a/hr_expense_tier_validation/i18n/hr_expense_tier_validation.pot +++ b/hr_expense_tier_validation/i18n/hr_expense_tier_validation.pot @@ -4,7 +4,7 @@ # msgid "" msgstr "" -"Project-Id-Version: Odoo Server 14.0\n" +"Project-Id-Version: Odoo Server 15.0\n" "Report-Msgid-Bugs-To: \n" "Last-Translator: \n" "Language-Team: \n" @@ -18,13 +18,6 @@ msgstr "" msgid "Can Review" msgstr "" -#. module: hr_expense_tier_validation -#: model:ir.model.fields,field_description:hr_expense_tier_validation.field_hr_expense__display_name -#: model:ir.model.fields,field_description:hr_expense_tier_validation.field_hr_expense_sheet__display_name -#: model:ir.model.fields,field_description:hr_expense_tier_validation.field_tier_definition__display_name -msgid "Display Name" -msgstr "" - #. module: hr_expense_tier_validation #: model:ir.model,name:hr_expense_tier_validation.model_hr_expense msgid "Expense" @@ -45,20 +38,6 @@ msgstr "" msgid "Has Comment" msgstr "" -#. module: hr_expense_tier_validation -#: model:ir.model.fields,field_description:hr_expense_tier_validation.field_hr_expense__id -#: model:ir.model.fields,field_description:hr_expense_tier_validation.field_hr_expense_sheet__id -#: model:ir.model.fields,field_description:hr_expense_tier_validation.field_tier_definition__id -msgid "ID" -msgstr "" - -#. module: hr_expense_tier_validation -#: model:ir.model.fields,field_description:hr_expense_tier_validation.field_hr_expense____last_update -#: model:ir.model.fields,field_description:hr_expense_tier_validation.field_hr_expense_sheet____last_update -#: model:ir.model.fields,field_description:hr_expense_tier_validation.field_tier_definition____last_update -msgid "Last Modified on" -msgstr "" - #. module: hr_expense_tier_validation #: model_terms:ir.ui.view,arch_db:hr_expense_tier_validation.hr_expense_sheet_view_search msgid "My Expense report to review" diff --git a/hr_expense_tier_validation/static/description/index.html b/hr_expense_tier_validation/static/description/index.html index 6816e897f..b1a269a59 100644 --- a/hr_expense_tier_validation/static/description/index.html +++ b/hr_expense_tier_validation/static/description/index.html @@ -367,7 +367,7 @@

      Expense Tier Validation

      !! This file is generated by oca-gen-addon-readme !! !! changes will be overwritten. !! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! --> -

      Beta License: AGPL-3 OCA/hr-expense Translate me on Weblate Try me on Runbot

      +

      Beta License: AGPL-3 OCA/hr-expense Translate me on Weblate Try me on Runbot

      This module extends the functionality of Expense Reports to support a tier validation process.

      Table of contents

      @@ -404,7 +404,7 @@

      Usage

    • Create a Expense Report triggering at least one “Tier Definition”.
    • Click on Request Validation button.
    • Under the tab Reviews have a look to pending reviews and their statuses.
    • -
    • Once all reviews are validated click on Submit to Manager.
    • +
    • Once all reviews are validated click on Approve.
    • Additional features:

        @@ -420,7 +420,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 -feedback.

        +feedback.

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

      @@ -447,7 +447,7 @@

      Maintainers

      promote its widespread use.

      Current maintainer:

      ps-tubtim

      -

      This module is part of the OCA/hr-expense project on GitHub.

      +

      This module is part of the OCA/hr-expense project on GitHub.

      You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute.

      diff --git a/hr_expense_tier_validation/tests/test_hr_expense_tier_validation.py b/hr_expense_tier_validation/tests/test_hr_expense_tier_validation.py index 22f16b597..8ff1a08de 100644 --- a/hr_expense_tier_validation/tests/test_hr_expense_tier_validation.py +++ b/hr_expense_tier_validation/tests/test_hr_expense_tier_validation.py @@ -39,14 +39,12 @@ def _create_expense( description, employee, product, - amount, payment_mode="own_account", ): with Form(self.env["hr.expense"]) as expense: expense.name = description expense.employee_id = employee expense.product_id = product - expense.unit_amount = amount expense.payment_mode = payment_mode expense = expense.save() expense.tax_ids = False # Test no vat @@ -62,10 +60,14 @@ def test_edit_value_expense(self): "Test - Expense", self.employee, self.product_1, - 1.0, ) sheet_dict = expense.action_submit_expenses() - sheet = self.expense_sheet_model.search([("id", "=", sheet_dict["res_id"])]) + sheet_dict = sheet_dict["context"] + with Form(self.env["hr.expense.sheet"]) as sheet: + sheet.name = (sheet_dict["default_name"],) + sheet.employee_id = self.employee + sheet = sheet.save() + sheet.expense_line_ids = [(6, 0, expense.id)] self.assertEqual(sheet.state, "draft") sheet.action_submit_sheet() self.assertEqual(sheet.state, "submit") @@ -77,7 +79,11 @@ def test_edit_value_expense(self): self.assertEqual(sheet.state, "submit") # not allow edit expense when under validation with self.assertRaises(ValidationError): - with Form(expense) as ex: - ex.name = "New name" + with Form(sheet) as s: + s.name = "New name" + with self.assertRaises(ValidationError): + with Form(expense) as exp: + exp.name = "Change name" # Test change message follower - expense.write({"message_follower_ids": self.partner.ids}) + message = expense.write({"message_follower_ids": self.partner.ids}) + self.assertEqual(message, True) From ff8b8e5fd6e85dd2ae2a99fe7d694c2d2e7a1e9a Mon Sep 17 00:00:00 2001 From: mymage Date: Fri, 30 Jun 2023 09:36:03 +0000 Subject: [PATCH 09/25] Added translation using Weblate (Italian) --- hr_expense_tier_validation/README.rst | 15 ++- .../i18n/hr_expense_tier_validation.pot | 5 + hr_expense_tier_validation/i18n/it.po | 109 ++++++++++++++++++ .../static/description/index.html | 48 ++++---- 4 files changed, 148 insertions(+), 29 deletions(-) create mode 100644 hr_expense_tier_validation/i18n/it.po diff --git a/hr_expense_tier_validation/README.rst b/hr_expense_tier_validation/README.rst index fb58e00ca..dbcbcbe5b 100644 --- a/hr_expense_tier_validation/README.rst +++ b/hr_expense_tier_validation/README.rst @@ -2,10 +2,13 @@ Expense Tier Validation ======================= -.. !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! +.. + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !! This file is generated by oca-gen-addon-readme !! !! changes will be overwritten. !! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + !! source digest: sha256:d8eabb50a56ebbdcf76e093177ffd1900ed973bfea1cc5a42a7a8f331d809fd8 + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! .. |badge1| image:: https://img.shields.io/badge/maturity-Beta-yellow.png :target: https://odoo-community.org/page/development-status @@ -19,11 +22,11 @@ Expense Tier Validation .. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png :target: https://translation.odoo-community.org/projects/hr-expense-15-0/hr-expense-15-0-hr_expense_tier_validation :alt: Translate me on Weblate -.. |badge5| image:: https://img.shields.io/badge/runbot-Try%20me-875A7B.png - :target: https://runbot.odoo-community.org/runbot/289/15.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/hr-expense&target_branch=15.0 + :alt: Try me on Runboat -|badge1| |badge2| |badge3| |badge4| |badge5| +|badge1| |badge2| |badge3| |badge4| |badge5| This module extends the functionality of Expense Reports to support a tier validation process. @@ -69,7 +72,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_expense_tier_validation/i18n/hr_expense_tier_validation.pot b/hr_expense_tier_validation/i18n/hr_expense_tier_validation.pot index 267cc128e..4ce3b2621 100644 --- a/hr_expense_tier_validation/i18n/hr_expense_tier_validation.pot +++ b/hr_expense_tier_validation/i18n/hr_expense_tier_validation.pot @@ -100,6 +100,11 @@ msgstr "" msgid "Validated Message" msgstr "" +#. module: hr_expense_tier_validation +#: model:ir.model.fields,field_description:hr_expense_tier_validation.field_hr_expense_sheet__validation_status +msgid "Validation Status" +msgstr "" + #. module: hr_expense_tier_validation #: model:ir.model.fields,field_description:hr_expense_tier_validation.field_hr_expense_sheet__review_ids msgid "Validations" diff --git a/hr_expense_tier_validation/i18n/it.po b/hr_expense_tier_validation/i18n/it.po new file mode 100644 index 000000000..0e0ed36bf --- /dev/null +++ b/hr_expense_tier_validation/i18n/it.po @@ -0,0 +1,109 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * hr_expense_tier_validation +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 15.0\n" +"Report-Msgid-Bugs-To: \n" +"PO-Revision-Date: 2023-07-03 11:08+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_expense_tier_validation +#: model:ir.model.fields,field_description:hr_expense_tier_validation.field_hr_expense_sheet__can_review +msgid "Can Review" +msgstr "Può revisionare" + +#. module: hr_expense_tier_validation +#: model:ir.model,name:hr_expense_tier_validation.model_hr_expense +msgid "Expense" +msgstr "Spesa" + +#. module: hr_expense_tier_validation +#: model:ir.model,name:hr_expense_tier_validation.model_hr_expense_sheet +msgid "Expense Report" +msgstr "Nota spese" + +#. module: hr_expense_tier_validation +#: model_terms:ir.ui.view,arch_db:hr_expense_tier_validation.hr_expense_sheet_view_search +msgid "Expense report validated and ready to be approved" +msgstr "Nota spese validata e pronta ad essere approvata" + +#. module: hr_expense_tier_validation +#: model:ir.model.fields,field_description:hr_expense_tier_validation.field_hr_expense_sheet__has_comment +msgid "Has Comment" +msgstr "Ha commenti" + +#. module: hr_expense_tier_validation +#: model_terms:ir.ui.view,arch_db:hr_expense_tier_validation.hr_expense_sheet_view_search +msgid "My Expense report to review" +msgstr "La mia nota spese da revisionare" + +#. module: hr_expense_tier_validation +#: model:ir.model.fields,field_description:hr_expense_tier_validation.field_hr_expense_sheet__need_validation +msgid "Need Validation" +msgstr "Richiede conferma" + +#. module: hr_expense_tier_validation +#: model_terms:ir.ui.view,arch_db:hr_expense_tier_validation.hr_expense_sheet_view_search +msgid "Needs my Review" +msgstr "Richiede la mia revisione" + +#. module: hr_expense_tier_validation +#: model:ir.model.fields,field_description:hr_expense_tier_validation.field_hr_expense_sheet__next_review +msgid "Next Review" +msgstr "Prossima revisione" + +#. module: hr_expense_tier_validation +#: model:ir.model.fields,field_description:hr_expense_tier_validation.field_hr_expense_sheet__rejected +msgid "Rejected" +msgstr "Rifiutato" + +#. module: hr_expense_tier_validation +#: model:ir.model.fields,field_description:hr_expense_tier_validation.field_hr_expense_sheet__rejected_message +msgid "Rejected Message" +msgstr "Messaggio rifiuto" + +#. module: hr_expense_tier_validation +#: model:ir.model.fields,field_description:hr_expense_tier_validation.field_hr_expense_sheet__reviewer_ids +msgid "Reviewers" +msgstr "Revisori" + +#. module: hr_expense_tier_validation +#: code:addons/hr_expense_tier_validation/models/hr_expense.py:0 +#, python-format +msgid "The expense report is under validation." +msgstr "La nota spese è in validazione." + +#. module: hr_expense_tier_validation +#: model:ir.model,name:hr_expense_tier_validation.model_tier_definition +msgid "Tier Definition" +msgstr "Definizione livello" + +#. module: hr_expense_tier_validation +#: model:ir.model.fields,field_description:hr_expense_tier_validation.field_hr_expense_sheet__to_validate_message +msgid "To Validate Message" +msgstr "Messaggio da validare" + +#. module: hr_expense_tier_validation +#: model:ir.model.fields,field_description:hr_expense_tier_validation.field_hr_expense_sheet__validated +#: model_terms:ir.ui.view,arch_db:hr_expense_tier_validation.hr_expense_sheet_view_search +msgid "Validated" +msgstr "Validato" + +#. module: hr_expense_tier_validation +#: model:ir.model.fields,field_description:hr_expense_tier_validation.field_hr_expense_sheet__validated_message +msgid "Validated Message" +msgstr "Messaggio validato" + +#. module: hr_expense_tier_validation +#: model:ir.model.fields,field_description:hr_expense_tier_validation.field_hr_expense_sheet__review_ids +msgid "Validations" +msgstr "Validazioni" diff --git a/hr_expense_tier_validation/static/description/index.html b/hr_expense_tier_validation/static/description/index.html index b1a269a59..e9092cf7d 100644 --- a/hr_expense_tier_validation/static/description/index.html +++ b/hr_expense_tier_validation/static/description/index.html @@ -1,20 +1,20 @@ - + - + Expense Tier Validation -
      -

      Expense Tier Validation

      +
      + + +Odoo Community Association + +
      +

      Expense Tier Validation

      -

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

      +

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

      This module extends the functionality of Expense Reports to support a tier validation process.

      Table of contents

      @@ -387,7 +392,7 @@

      Expense Tier Validation

    -

    Configuration

    +

    Configuration

    To configure tier validation for HR expenses:

    1. Go to Settings > Technical > Tier Validations > Tier Definition
    2. @@ -402,7 +407,7 @@

      Configuration

    -

    Usage

    +

    Usage

    To use this module, you need to:

    1. Create a Expense Report triggering at least one “Tier Definition”.
    2. @@ -421,30 +426,30 @@

      Usage

    -

    Bug Tracker

    -

    Bugs are tracked on GitHub Issues. +

    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.

    -

    Credits

    +

    Credits

    -

    Authors

    +

    Authors

    • Ecosoft
    -

    Maintainers

    +

    Maintainers

    This module is maintained by the OCA.

    Odoo Community Association @@ -454,10 +459,11 @@

    Maintainers

    promote its widespread use.

    Current maintainer:

    ps-tubtim

    -

    This module is part of the OCA/hr-expense project on GitHub.

    +

    This module is part of the OCA/tier-validation project on GitHub.

    You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute.

    + From aadc1a627e995783e4cd4998722f55d5f56b0d3d Mon Sep 17 00:00:00 2001 From: Don Kendall Date: Tue, 2 Jun 2026 14:57:45 -0400 Subject: [PATCH 18/25] [MIG] hr_expense_tier_validation: Migration to 19.0 hr.expense.sheet was removed in 19.0; retarget tier validation to hr.expense. Assisted-by: Claude Opus 5 --- hr_expense_tier_validation/models/__init__.py | 1 - .../models/hr_expense.py | 21 +++++---- .../models/hr_expense_sheet.py | 15 ------ .../models/tier_definition.py | 2 +- .../tests/test_hr_expense_tier_validation.py | 46 ++++++++----------- .../views/hr_expense_sheet_view.xml | 27 ----------- .../views/hr_expense_views.xml | 29 ++++++++++++ 7 files changed, 63 insertions(+), 78 deletions(-) delete mode 100644 hr_expense_tier_validation/models/hr_expense_sheet.py delete mode 100644 hr_expense_tier_validation/views/hr_expense_sheet_view.xml create mode 100644 hr_expense_tier_validation/views/hr_expense_views.xml diff --git a/hr_expense_tier_validation/models/__init__.py b/hr_expense_tier_validation/models/__init__.py index fb65dd373..62536aa30 100644 --- a/hr_expense_tier_validation/models/__init__.py +++ b/hr_expense_tier_validation/models/__init__.py @@ -1,5 +1,4 @@ # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). -from . import hr_expense_sheet from . import hr_expense from . import tier_definition diff --git a/hr_expense_tier_validation/models/hr_expense.py b/hr_expense_tier_validation/models/hr_expense.py index 3bd97d38e..9d9a063ef 100644 --- a/hr_expense_tier_validation/models/hr_expense.py +++ b/hr_expense_tier_validation/models/hr_expense.py @@ -3,12 +3,19 @@ import ast -from odoo import _, api, models +from odoo import api, models from odoo.exceptions import ValidationError class HrExpense(models.Model): - _inherit = "hr.expense" + _name = "hr.expense" + _inherit = ["hr.expense", "tier.validation"] + + _state_field = "approval_state" + _state_from = ["submitted"] + _state_to = ["approved"] + + _tier_validation_manual_config = False @api.model def _get_under_validation_exceptions(self): @@ -36,13 +43,11 @@ def _check_allow_write_under_validation(self, vals): def write(self, vals): for rec in self: - sheet = rec.sheet_id if ( - sheet.state == "submit" - and sheet.review_ids - and not sheet.validated - and not sheet.rejected + rec.approval_state == "submitted" + and rec.review_ids + and rec.validation_status not in ("validated", "rejected") and not rec._check_allow_write_under_validation(vals) ): - raise ValidationError(_("The expense report is under validation.")) + raise ValidationError(self.env._("The expense is under validation.")) return super().write(vals) diff --git a/hr_expense_tier_validation/models/hr_expense_sheet.py b/hr_expense_tier_validation/models/hr_expense_sheet.py deleted file mode 100644 index e801a5f6a..000000000 --- a/hr_expense_tier_validation/models/hr_expense_sheet.py +++ /dev/null @@ -1,15 +0,0 @@ -# Copyright 2019 Ecosoft Co., Ltd. (http://ecosoft.co.th) -# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). - -from odoo import models - - -class HrExpenseSheet(models.Model): - _name = "hr.expense.sheet" - _inherit = ["hr.expense.sheet", "tier.validation"] - - _state_field = "approval_state" - _state_from = ["submit"] - _state_to = ["approve", "post", "done"] - - _tier_validation_manual_config = False diff --git a/hr_expense_tier_validation/models/tier_definition.py b/hr_expense_tier_validation/models/tier_definition.py index 6bdb77749..85145216e 100644 --- a/hr_expense_tier_validation/models/tier_definition.py +++ b/hr_expense_tier_validation/models/tier_definition.py @@ -10,5 +10,5 @@ class TierDefinition(models.Model): @api.model def _get_tier_validation_model_names(self): res = super()._get_tier_validation_model_names() - res.append("hr.expense.sheet") + res.append("hr.expense") return res diff --git a/hr_expense_tier_validation/tests/test_hr_expense_tier_validation.py b/hr_expense_tier_validation/tests/test_hr_expense_tier_validation.py index 63fa76ab5..218ed122c 100644 --- a/hr_expense_tier_validation/tests/test_hr_expense_tier_validation.py +++ b/hr_expense_tier_validation/tests/test_hr_expense_tier_validation.py @@ -17,7 +17,7 @@ def setUpClass(cls): # Create tier validation cls.tier_def_obj.create( { - "model_id": cls.env.ref("hr_expense.model_hr_expense_sheet").id, + "model_id": cls.env.ref("hr_expense.model_hr_expense").id, "review_type": "individual", "reviewer_id": cls.expense_user_manager.id, } @@ -39,7 +39,7 @@ def _create_expense( def test_get_tier_validation_model_names(self): self.assertIn( - "hr.expense.sheet", self.tier_def_obj._get_tier_validation_model_names() + "hr.expense", self.tier_def_obj._get_tier_validation_model_names() ) def test_edit_value_expense(self): @@ -48,36 +48,30 @@ def test_edit_value_expense(self): self.expense_employee, self.product_a, ) - sheet_dict = expense.action_submit_expenses() + self.assertEqual(expense.state, "draft") + expense.action_submit() + self.assertEqual(expense.state, "submitted") - with Form(self.env["hr.expense.sheet"]) as sheet: - sheet.name = (sheet_dict["name"],) - sheet.employee_id = self.expense_employee - sheet = sheet.save() - sheet.expense_line_ids = [(6, 0, expense.id)] - self.assertEqual(sheet.state, "draft") - sheet.action_submit_sheet() - self.assertEqual(sheet.state, "submit") # Must request validation before approve with self.assertRaises(ValidationError): - sheet.action_approve_expense_sheets() - sheet.request_validation() - self.assertTrue(sheet) - sheet.invalidate_model() - # tier validation but state still submit - self.assertEqual(sheet.state, "submit") + expense.action_approve() + + expense.request_validation() + self.assertTrue(expense) + expense.invalidate_model() + + # tier validation but state still submitted + self.assertEqual(expense.state, "submitted") + # not allow edit expense when under validation + # Use ORM write directly: in 19.0 `name` is view-readonly on submitted + # expenses, so a Form()-based test fails at the view layer before + # reaching the model-level guard. with self.assertRaises(ValidationError): - sheet.review_ids = [(6, 0, self.expense_user_manager.ids)] - with self.assertRaises(ValidationError): - with Form(expense) as exp: - exp.name = "Change name" + expense.write({"name": "Change name"}) + # test change field exception in tier, it should allow edit self.env["ir.config_parameter"].sudo().set_param( "hr_expense.tier_exceptions", "['name']" ) - with Form(expense) as exp: - exp.name = "Change name" - - message = expense._message_subscribe(self.partner_a.ids) - self.assertTrue(message, True) + expense.write({"name": "Change name"}) diff --git a/hr_expense_tier_validation/views/hr_expense_sheet_view.xml b/hr_expense_tier_validation/views/hr_expense_sheet_view.xml deleted file mode 100644 index a1a773d2e..000000000 --- a/hr_expense_tier_validation/views/hr_expense_sheet_view.xml +++ /dev/null @@ -1,27 +0,0 @@ - - - - hr.expense.sheet.view.search - hr_expense_tier_validation - hr.expense.sheet - - - - - - - - - - diff --git a/hr_expense_tier_validation/views/hr_expense_views.xml b/hr_expense_tier_validation/views/hr_expense_views.xml new file mode 100644 index 000000000..2b84d606e --- /dev/null +++ b/hr_expense_tier_validation/views/hr_expense_views.xml @@ -0,0 +1,29 @@ + + + + + hr.expense.view.search - hr_expense_tier_validation + hr.expense + + + + + + + + + + From 0e01cafcd28991b06624bad153152eadd2143f04 Mon Sep 17 00:00:00 2001 From: oca-ci Date: Mon, 5 Oct 2026 16:50:52 +0000 Subject: [PATCH 19/25] [UPD] Update hr_expense_tier_validation.pot --- .../i18n/hr_expense_tier_validation.pot | 65 +++++++++++-------- 1 file changed, 38 insertions(+), 27 deletions(-) diff --git a/hr_expense_tier_validation/i18n/hr_expense_tier_validation.pot b/hr_expense_tier_validation/i18n/hr_expense_tier_validation.pot index de544033c..2be2a389a 100644 --- a/hr_expense_tier_validation/i18n/hr_expense_tier_validation.pot +++ b/hr_expense_tier_validation/i18n/hr_expense_tier_validation.pot @@ -4,7 +4,7 @@ # msgid "" msgstr "" -"Project-Id-Version: Odoo Server 18.0\n" +"Project-Id-Version: Odoo Server 19.0\n" "Report-Msgid-Bugs-To: \n" "Last-Translator: \n" "Language-Team: \n" @@ -14,79 +14,91 @@ msgstr "" "Plural-Forms: \n" #. module: hr_expense_tier_validation -#: model:ir.model.fields,field_description:hr_expense_tier_validation.field_hr_expense_sheet__can_review +#: model:ir.model.fields,field_description:hr_expense_tier_validation.field_hr_expense__can_forward +msgid "Can Forward" +msgstr "" + +#. module: hr_expense_tier_validation +#: model:ir.model.fields,field_description:hr_expense_tier_validation.field_hr_expense__can_review msgid "Can Review" msgstr "" +#. module: hr_expense_tier_validation +#: model:ir.model.fields,field_description:hr_expense_tier_validation.field_hr_expense__display_name +#: model:ir.model.fields,field_description:hr_expense_tier_validation.field_tier_definition__display_name +msgid "Display Name" +msgstr "" + #. module: hr_expense_tier_validation #: model:ir.model,name:hr_expense_tier_validation.model_hr_expense msgid "Expense" msgstr "" #. module: hr_expense_tier_validation -#: model:ir.model,name:hr_expense_tier_validation.model_hr_expense_sheet -msgid "Expense Report" +#: model_terms:ir.ui.view,arch_db:hr_expense_tier_validation.hr_expense_view_search +msgid "Expenses to review" msgstr "" #. module: hr_expense_tier_validation -#: model_terms:ir.ui.view,arch_db:hr_expense_tier_validation.hr_expense_sheet_view_search -msgid "Expense report validated and ready to be approved" +#: model_terms:ir.ui.view,arch_db:hr_expense_tier_validation.hr_expense_view_search +msgid "Expenses validated and ready to be approved" msgstr "" #. module: hr_expense_tier_validation -#: model:ir.model.fields,field_description:hr_expense_tier_validation.field_hr_expense_sheet__has_comment +#: model:ir.model.fields,field_description:hr_expense_tier_validation.field_hr_expense__has_comment msgid "Has Comment" msgstr "" #. module: hr_expense_tier_validation -#: model:ir.model.fields,field_description:hr_expense_tier_validation.field_hr_expense_sheet__hide_reviews +#: model:ir.model.fields,field_description:hr_expense_tier_validation.field_hr_expense__hide_reviews msgid "Hide Reviews" msgstr "" #. module: hr_expense_tier_validation -#: model:ir.model.fields,help:hr_expense_tier_validation.field_hr_expense_sheet__has_comment -msgid "If set, Allow the reviewer to leave a comment on the review." +#: model:ir.model.fields,field_description:hr_expense_tier_validation.field_hr_expense__id +#: model:ir.model.fields,field_description:hr_expense_tier_validation.field_tier_definition__id +msgid "ID" msgstr "" #. module: hr_expense_tier_validation -#: model_terms:ir.ui.view,arch_db:hr_expense_tier_validation.hr_expense_sheet_view_search -msgid "My Expense report to review" +#: model:ir.model.fields,help:hr_expense_tier_validation.field_hr_expense__has_comment +msgid "If set, Allow the reviewer to leave a comment on the review." msgstr "" #. module: hr_expense_tier_validation -#: model:ir.model.fields,field_description:hr_expense_tier_validation.field_hr_expense_sheet__need_validation +#: model:ir.model.fields,field_description:hr_expense_tier_validation.field_hr_expense__need_validation msgid "Need Validation" msgstr "" #. module: hr_expense_tier_validation -#: model_terms:ir.ui.view,arch_db:hr_expense_tier_validation.hr_expense_sheet_view_search +#: model_terms:ir.ui.view,arch_db:hr_expense_tier_validation.hr_expense_view_search msgid "Needs my Review" msgstr "" #. module: hr_expense_tier_validation -#: model:ir.model.fields,field_description:hr_expense_tier_validation.field_hr_expense_sheet__next_review +#: model:ir.model.fields,field_description:hr_expense_tier_validation.field_hr_expense__next_review msgid "Next Review" msgstr "" #. module: hr_expense_tier_validation -#: model:ir.model.fields,field_description:hr_expense_tier_validation.field_hr_expense_sheet__rejected -msgid "Rejected" +#: model:ir.model.fields,field_description:hr_expense_tier_validation.field_hr_expense__rejected_message +msgid "Rejected Message" msgstr "" #. module: hr_expense_tier_validation -#: model:ir.model.fields,field_description:hr_expense_tier_validation.field_hr_expense_sheet__rejected_message -msgid "Rejected Message" +#: model:ir.model.fields,field_description:hr_expense_tier_validation.field_hr_expense__require_authentication +msgid "Require Authentication" msgstr "" #. module: hr_expense_tier_validation -#: model:ir.model.fields,field_description:hr_expense_tier_validation.field_hr_expense_sheet__reviewer_ids +#: model:ir.model.fields,field_description:hr_expense_tier_validation.field_hr_expense__reviewer_ids msgid "Reviewers" msgstr "" #. module: hr_expense_tier_validation #. odoo-python #: code:addons/hr_expense_tier_validation/models/hr_expense.py:0 -msgid "The expense report is under validation." +msgid "The expense is under validation." msgstr "" #. module: hr_expense_tier_validation @@ -95,27 +107,26 @@ msgid "Tier Definition" msgstr "" #. module: hr_expense_tier_validation -#: model:ir.model.fields,field_description:hr_expense_tier_validation.field_hr_expense_sheet__to_validate_message +#: model:ir.model.fields,field_description:hr_expense_tier_validation.field_hr_expense__to_validate_message msgid "To Validate Message" msgstr "" #. module: hr_expense_tier_validation -#: model:ir.model.fields,field_description:hr_expense_tier_validation.field_hr_expense_sheet__validated -#: model_terms:ir.ui.view,arch_db:hr_expense_tier_validation.hr_expense_sheet_view_search +#: model_terms:ir.ui.view,arch_db:hr_expense_tier_validation.hr_expense_view_search msgid "Validated" msgstr "" #. module: hr_expense_tier_validation -#: model:ir.model.fields,field_description:hr_expense_tier_validation.field_hr_expense_sheet__validated_message +#: model:ir.model.fields,field_description:hr_expense_tier_validation.field_hr_expense__validated_message msgid "Validated Message" msgstr "" #. module: hr_expense_tier_validation -#: model:ir.model.fields,field_description:hr_expense_tier_validation.field_hr_expense_sheet__validation_status +#: model:ir.model.fields,field_description:hr_expense_tier_validation.field_hr_expense__validation_status msgid "Validation Status" msgstr "" #. module: hr_expense_tier_validation -#: model:ir.model.fields,field_description:hr_expense_tier_validation.field_hr_expense_sheet__review_ids +#: model:ir.model.fields,field_description:hr_expense_tier_validation.field_hr_expense__review_ids msgid "Validations" msgstr "" From 9e24087ac5836ab20108f4df86bca31e6de3c3da Mon Sep 17 00:00:00 2001 From: OCA-git-bot Date: Mon, 5 Oct 2026 16:55:03 +0000 Subject: [PATCH 20/25] [BOT] post-merge updates --- hr_expense_tier_validation/README.rst | 2 +- hr_expense_tier_validation/static/description/index.html | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/hr_expense_tier_validation/README.rst b/hr_expense_tier_validation/README.rst index d6f7e715f..32d95fce0 100644 --- a/hr_expense_tier_validation/README.rst +++ b/hr_expense_tier_validation/README.rst @@ -11,7 +11,7 @@ Expense Tier Validation !! This file is generated by oca-gen-addon-readme !! !! changes will be overwritten. !! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! - !! source digest: sha256:8d6f5b7a94adc5635d78b792bad1ba6127ad27060e971a0850521e5c418e1717 + !! source digest: sha256:337881edb71f221432f47aced23ffcacf21497a1898b366103c997aa882a0896 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! .. |badge1| image:: https://img.shields.io/badge/maturity-Beta-yellow.png diff --git a/hr_expense_tier_validation/static/description/index.html b/hr_expense_tier_validation/static/description/index.html index 227ad1d98..97b643b2b 100644 --- a/hr_expense_tier_validation/static/description/index.html +++ b/hr_expense_tier_validation/static/description/index.html @@ -3,7 +3,7 @@ -README.rst +Expense Tier Validation