From 3d0b216dfdc44e25dc5fc62012790c76f49de45e Mon Sep 17 00:00:00 2001 From: Carlos Dauden Date: Wed, 28 Mar 2018 12:10:44 +0200 Subject: [PATCH 01/13] [IMP] contract_variable_qty_timesheet: New module --- contract_variable_qty_timesheet/README.rst | 68 ++++++++++++++++++ contract_variable_qty_timesheet/__init__.py | 1 + .../__manifest__.py | 20 ++++++ .../data/contract_line_qty_formula_data.xml | 44 ++++++++++++ .../i18n/contract_variable_qty_timesheet.pot | 30 ++++++++ contract_variable_qty_timesheet/i18n/es.po | 33 +++++++++ contract_variable_qty_timesheet/i18n/fr.po | 34 +++++++++ contract_variable_qty_timesheet/i18n/zh.po | 34 +++++++++ .../static/description/icon.png | Bin 0 -> 9455 bytes 9 files changed, 264 insertions(+) create mode 100644 contract_variable_qty_timesheet/README.rst create mode 100644 contract_variable_qty_timesheet/__init__.py create mode 100644 contract_variable_qty_timesheet/__manifest__.py create mode 100644 contract_variable_qty_timesheet/data/contract_line_qty_formula_data.xml create mode 100644 contract_variable_qty_timesheet/i18n/contract_variable_qty_timesheet.pot create mode 100644 contract_variable_qty_timesheet/i18n/es.po create mode 100644 contract_variable_qty_timesheet/i18n/fr.po create mode 100644 contract_variable_qty_timesheet/i18n/zh.po create mode 100644 contract_variable_qty_timesheet/static/description/icon.png diff --git a/contract_variable_qty_timesheet/README.rst b/contract_variable_qty_timesheet/README.rst new file mode 100644 index 000000000..4206a323a --- /dev/null +++ b/contract_variable_qty_timesheet/README.rst @@ -0,0 +1,68 @@ +.. image:: https://img.shields.io/badge/license-AGPL--3-blue.png + :target: https://www.gnu.org/licenses/agpl + :alt: License: AGPL-3 + +=============================== +Contract Variable Qty Timesheet +=============================== + +This module extends the functionality of contract_variable_quantity adding +several variable quantity formulas to allow to invoice lines from Timesheet +(Analytic Lines) + +Usage +===== + +To use this module, you need to: + +#. Go to Invoicing > Sales > Contracts and select or create a new contract. +#. Check *Generate recurring invoices automatically*. +#. Add a new recurring invoicing line. +#. Select "Variable quantity" in column "Qty. type". +#. Select "Project Timesheets", "Tasks Timesheets" or "Analytic Same Product" + depending on your need. + + +.. image:: https://odoo-community.org/website/image/ir.attachment/5784_f2813bd/datas + :alt: Try me on Runbot + :target: https://runbot.odoo-community.org/runbot/110/11.0 + + +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 smash it by providing detailed and welcomed feedback. + +Credits +======= + +Images +------ + +* Odoo Community Association: `Icon `_. + +Contributors +------------ + +* `Tecnativa `_: + * Carlos Dauden + +Do not contact contributors directly about support or help with technical issues. + +Maintainer +---------- + +.. image:: https://odoo-community.org/logo.png + :alt: Odoo Community Association + :target: https://odoo-community.org + +This module is maintained by the OCA. + +OCA, or the Odoo Community Association, is a nonprofit organization whose +mission is to support the collaborative development of Odoo features and +promote its widespread use. + +To contribute to this module, please visit https://odoo-community.org. diff --git a/contract_variable_qty_timesheet/__init__.py b/contract_variable_qty_timesheet/__init__.py new file mode 100644 index 000000000..ef5ae3587 --- /dev/null +++ b/contract_variable_qty_timesheet/__init__.py @@ -0,0 +1 @@ +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). diff --git a/contract_variable_qty_timesheet/__manifest__.py b/contract_variable_qty_timesheet/__manifest__.py new file mode 100644 index 000000000..1071b7d73 --- /dev/null +++ b/contract_variable_qty_timesheet/__manifest__.py @@ -0,0 +1,20 @@ +# Copyright 2018 Tecnativa - Carlos Dauden +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). +{ + 'name': 'Contract Variable Qty Timesheet', + 'summary': 'Add formula to invoice ', + 'version': '11.0.1.0.0', + 'category': 'Contract Management', + 'website': 'https://github.com/oca/contract', + 'author': 'Tecnativa, ' + 'Odoo Community Association (OCA)', + 'license': 'AGPL-3', + 'installable': True, + 'depends': [ + 'contract_variable_quantity', + 'hr_timesheet', + ], + 'data': [ + 'data/contract_line_qty_formula_data.xml', + ], +} diff --git a/contract_variable_qty_timesheet/data/contract_line_qty_formula_data.xml b/contract_variable_qty_timesheet/data/contract_line_qty_formula_data.xml new file mode 100644 index 000000000..0b83b4929 --- /dev/null +++ b/contract_variable_qty_timesheet/data/contract_line_qty_formula_data.xml @@ -0,0 +1,44 @@ + + + + + + Project Timesheets + group = env['account.analytic.line'].read_group([ + ('account_id', '=', contract.id), + ('product_id', '=', False), + ('project_id', '!=', False), + ('date', '>=', line.date_from), + ('date', '<=', line.date_to), +], fields=['unit_amount'], groupby=[]) +result = group and group[0]['unit_amount'] or 0.0 + + + + + Task Timesheets + group = env['account.analytic.line'].read_group([ + ('account_id', '=', contract.id), + ('product_id', '=', False), + ('task_id', '!=', False), + ('date', '>=', line.date_from), + ('date', '<=', line.date_to), +], fields=['unit_amount'], groupby=[]) +result = group and group[0]['unit_amount'] or 0.0 + + + + + Analytic Same Product + group = env['account.analytic.line'].read_group([ + ('account_id', '=', contract.id), + ('product_id', '=', line.product_id.id), + ('date', '>=', line.date_from), + ('date', '<=', line.date_to), +], fields=['unit_amount'], groupby=[]) +result = group and group[0]['unit_amount'] or 0.0 + + + + diff --git a/contract_variable_qty_timesheet/i18n/contract_variable_qty_timesheet.pot b/contract_variable_qty_timesheet/i18n/contract_variable_qty_timesheet.pot new file mode 100644 index 000000000..d4d87538a --- /dev/null +++ b/contract_variable_qty_timesheet/i18n/contract_variable_qty_timesheet.pot @@ -0,0 +1,30 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * contract_variable_qty_timesheet +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 11.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: contract_variable_qty_timesheet +#: model:contract.line.qty.formula,name:contract_variable_qty_timesheet.contract_line_qty_formula_analytic_same_product +msgid "Analytic Same Product" +msgstr "" + +#. module: contract_variable_qty_timesheet +#: model:contract.line.qty.formula,name:contract_variable_qty_timesheet.contract_line_qty_formula_project_timesheet +msgid "Project Timesheets" +msgstr "" + +#. module: contract_variable_qty_timesheet +#: model:contract.line.qty.formula,name:contract_variable_qty_timesheet.contract_line_qty_formula_task_timesheet +msgid "Task Timesheets" +msgstr "" + diff --git a/contract_variable_qty_timesheet/i18n/es.po b/contract_variable_qty_timesheet/i18n/es.po new file mode 100644 index 000000000..7281d4ce1 --- /dev/null +++ b/contract_variable_qty_timesheet/i18n/es.po @@ -0,0 +1,33 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * contract_variable_qty_timesheet +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 11.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2018-03-29 11:13+0200\n" +"PO-Revision-Date: 2018-03-29 11:21+0200\n" +"Last-Translator: Carlos Dauden \n" +"Language-Team: \n" +"Language: es\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Generator: Poedit 1.8.7.1\n" + +#. module: contract_variable_qty_timesheet +#: model:contract.line.qty.formula,name:contract_variable_qty_timesheet.contract_line_qty_formula_analytic_same_product +msgid "Analytic Same Product" +msgstr "Analítica mismo producto" + +#. module: contract_variable_qty_timesheet +#: model:contract.line.qty.formula,name:contract_variable_qty_timesheet.contract_line_qty_formula_project_timesheet +msgid "Project Timesheets" +msgstr "Partes de horas de proyectos" + +#. module: contract_variable_qty_timesheet +#: model:contract.line.qty.formula,name:contract_variable_qty_timesheet.contract_line_qty_formula_task_timesheet +msgid "Task Timesheets" +msgstr "Partes de horas de tareas" diff --git a/contract_variable_qty_timesheet/i18n/fr.po b/contract_variable_qty_timesheet/i18n/fr.po new file mode 100644 index 000000000..4b87abfdd --- /dev/null +++ b/contract_variable_qty_timesheet/i18n/fr.po @@ -0,0 +1,34 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * contract_variable_qty_timesheet +# +# Translators: +# Quentin THEURET , 2018 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 11.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2018-04-06 21:09+0000\n" +"PO-Revision-Date: 2018-04-06 21:09+0000\n" +"Last-Translator: Quentin THEURET , 2018\n" +"Language-Team: French (https://www.transifex.com/oca/teams/23907/fr/)\n" +"Language: fr\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" + +#. module: contract_variable_qty_timesheet +#: model:contract.line.qty.formula,name:contract_variable_qty_timesheet.contract_line_qty_formula_analytic_same_product +msgid "Analytic Same Product" +msgstr "Même produit analytique" + +#. module: contract_variable_qty_timesheet +#: model:contract.line.qty.formula,name:contract_variable_qty_timesheet.contract_line_qty_formula_project_timesheet +msgid "Project Timesheets" +msgstr "Feuilles de temps du projet" + +#. module: contract_variable_qty_timesheet +#: model:contract.line.qty.formula,name:contract_variable_qty_timesheet.contract_line_qty_formula_task_timesheet +msgid "Task Timesheets" +msgstr "Feuille de temps de la tâche" diff --git a/contract_variable_qty_timesheet/i18n/zh.po b/contract_variable_qty_timesheet/i18n/zh.po new file mode 100644 index 000000000..95285088b --- /dev/null +++ b/contract_variable_qty_timesheet/i18n/zh.po @@ -0,0 +1,34 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * contract_variable_qty_timesheet +# +# Translators: +# DIT INTL , 2018 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 11.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2018-04-27 01:12+0000\n" +"PO-Revision-Date: 2018-04-27 01:12+0000\n" +"Last-Translator: DIT INTL , 2018\n" +"Language-Team: Chinese (https://www.transifex.com/oca/teams/23907/zh/)\n" +"Language: zh\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: nplurals=1; plural=0;\n" + +#. module: contract_variable_qty_timesheet +#: model:contract.line.qty.formula,name:contract_variable_qty_timesheet.contract_line_qty_formula_analytic_same_product +msgid "Analytic Same Product" +msgstr "分析同一产品" + +#. module: contract_variable_qty_timesheet +#: model:contract.line.qty.formula,name:contract_variable_qty_timesheet.contract_line_qty_formula_project_timesheet +msgid "Project Timesheets" +msgstr "项目时间表" + +#. module: contract_variable_qty_timesheet +#: model:contract.line.qty.formula,name:contract_variable_qty_timesheet.contract_line_qty_formula_task_timesheet +msgid "Task Timesheets" +msgstr "任务时间表" diff --git a/contract_variable_qty_timesheet/static/description/icon.png b/contract_variable_qty_timesheet/static/description/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..3a0328b516c4980e8e44cdb63fd945757ddd132d GIT binary patch literal 9455 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 z z?n?eq1XP>p-IM$Z^C;2L3itnbJZAip*Zo0aw2bs8@(s^~*8T9go!%dHcAz2lM;`yp zD=7&xjFV$S&5uDaiScyD?B-i1ze`+CoRtz`Wn+Zl&#s4&}MO{@N!ufrzjG$B79)Y2d3tBk&)TxUTw@QS0TEL_?njX|@vq?Uz(nBFK5Pq7*xj#u*R&i|?7+6# z+|r_n#SW&LXhtheZdah{ZVoqwyT{D>MC3nkFF#N)xLi{p7J1jXlmVeb;cP5?e(=f# zuT7fvjSbjS781v?7{)-X3*?>tq?)Yd)~|1{BDS(pqC zC}~H#WXlkUW*H5CDOo<)#x7%RY)A;ShGhI5s*#cRDA8YgqG(HeKDx+#(ZQ?386dv! zlXCO)w91~Vw4AmOcATuV653fa9R$fyK8ul%rG z-wfS zihugoZyr38Im?Zuh6@RcF~t1anQu7>#lPpb#}4cOA!EM11`%f*07RqOVkmX{p~KJ9 z^zP;K#|)$`^Rb{rnHGH{~>1(fawV0*Z#)}M`m8-?ZJV<+e}s9wE# z)l&az?w^5{)`S(%MRzxdNqrs1n*-=jS^_jqE*5XDrA0+VE`5^*p3CuM<&dZEeCjoz zR;uu_H9ZPZV|fQq`Cyw4nscrVwi!fE6ciMmX$!_hN7uF;jjKG)d2@aC4ropY)8etW=xJvni)8eHi`H$%#zn^WJ5NLc-rqk|u&&4Z6fD_m&JfSI1Bvb?b<*n&sfl0^t z=HnmRl`XrFvMKB%9}>PaA`m-fK6a0(8=qPkWS5bb4=v?XcWi&hRY?O5HdulRi4?fN zlsJ*N-0Qw+Yic@s0(2uy%F@ib;GjXt01Fmx5XbRo6+n|pP(&nodMoap^z{~q ziEeaUT@Mxe3vJSfI6?uLND(CNr=#^W<1b}jzW58bIfyWTDle$mmS(|x-0|2UlX+9k zQ^EX7Nw}?EzVoBfT(-LT|=9N@^hcn-_p&sqG z&*oVs2JSU+N4ZD`FhCAWaS;>|wH2G*Id|?pa#@>tyxX`+4HyIArWDvVrX)2WAOQff z0qyHu&-S@i^MS-+j--!pr4fPBj~_8({~e1bfcl0wI1kaoN>mJL6KUPQm5N7lB(ui1 zE-o%kq)&djzWJ}ob<-GfDlkB;F31j-VHKvQUGQ3sp`CwyGJk_i!y^sD0fqC@$9|jO zOqN!r!8-p==F@ZVP=U$qSpY(gQ0)59P1&t@y?5rvg<}E+GB}26NYPp4f2YFQrQtot5mn3wu_qprZ=>Ig-$ zbW26Ws~IgY>}^5w`vTB(G`PTZaDiGBo5o(tp)qli|NeV( z@H_=R8V39rt5J5YB2Ky?4eJJ#b`_iBe2ot~6%7mLt5t8Vwi^Jy7|jWXqa3amOIoRb zOr}WVFP--DsS`1WpN%~)t3R!arKF^Q$e12KEqU36AWwnCBICpH4XCsfnyrHr>$I$4 z!DpKX$OKLWarN7nv@!uIA+~RNO)l$$w}p(;b>mx8pwYvu;dD_unryX_NhT8*Tj>BTrTTL&!?O+%Rv;b?B??gSzdp?6Uug9{ zd@V08Z$BdI?fpoCS$)t4mg4rT8Q_I}h`0d-vYZ^|dOB*Q^S|xqTV*vIg?@fVFSmMpaw0qtTRbx} z({Pg?#{2`sc9)M5N$*N|4;^t$+QP?#mov zGVC@I*lBVrOU-%2y!7%)fAKjpEFsgQc4{amtiHb95KQEwvf<(3T<9-Zm$xIew#P22 zc2Ix|App^>v6(3L_MCU0d3W##AB0M~3D00EWoKZqsJYT(#@w$Y_H7G22M~ApVFTRHMI_3be)Lkn#0F*V8Pq zc}`Cjy$bE;FJ6H7p=0y#R>`}-m4(0F>%@P|?7fx{=R^uFdISRnZ2W_xQhD{YuR3t< z{6yxu=4~JkeA;|(J6_nv#>Nvs&FuLA&PW^he@t(UwFFE8)|a!R{`E`K`i^ZnyE4$k z;(749Ix|oi$c3QbEJ3b~D_kQsPz~fIUKym($a_7dJ?o+40*OLl^{=&oq$<#Q(yyrp z{J-FAniyAw9tPbe&IhQ|a`DqFTVQGQ&Gq3!C2==4x{6EJwiPZ8zub-iXoUtkJiG{} zPaR&}_fn8_z~(=;5lD-aPWD3z8PZS@AaUiomF!G8I}Mf>e~0g#BelA-5#`cj;O5>N Xviia!U7SGha1wx#SCgwmn*{w2TRX*I literal 0 HcmV?d00001 From a88dc2a63f1f83de77003534d68e016b2a9b89ff Mon Sep 17 00:00:00 2001 From: Sergio Zanchetta Date: Sun, 23 Dec 2018 23:09:15 +0000 Subject: [PATCH 02/13] Added translation using Weblate (Italian) Currently translated at 66.7% (2 of 3 strings) Translation: contract-11.0/contract-11.0-contract_variable_qty_timesheet Translate-URL: https://translation.odoo-community.org/projects/contract-11-0/contract-11-0-contract_variable_qty_timesheet/it/ --- contract_variable_qty_timesheet/i18n/it.po | 32 ++++++++++++++++++++++ 1 file changed, 32 insertions(+) create mode 100644 contract_variable_qty_timesheet/i18n/it.po diff --git a/contract_variable_qty_timesheet/i18n/it.po b/contract_variable_qty_timesheet/i18n/it.po new file mode 100644 index 000000000..f0f322638 --- /dev/null +++ b/contract_variable_qty_timesheet/i18n/it.po @@ -0,0 +1,32 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * contract_variable_qty_timesheet +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 11.0\n" +"Report-Msgid-Bugs-To: \n" +"PO-Revision-Date: 2018-12-24 23:58+0000\n" +"Last-Translator: Sergio Zanchetta \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 3.3\n" + +#. module: contract_variable_qty_timesheet +#: model:contract.line.qty.formula,name:contract_variable_qty_timesheet.contract_line_qty_formula_analytic_same_product +msgid "Analytic Same Product" +msgstr "" + +#. module: contract_variable_qty_timesheet +#: model:contract.line.qty.formula,name:contract_variable_qty_timesheet.contract_line_qty_formula_project_timesheet +msgid "Project Timesheets" +msgstr "Fogli ore progetto" + +#. module: contract_variable_qty_timesheet +#: model:contract.line.qty.formula,name:contract_variable_qty_timesheet.contract_line_qty_formula_task_timesheet +msgid "Task Timesheets" +msgstr "Fogli ore attività" From 5ff8b823417ce464ad710c30036b29e8a2c8776d Mon Sep 17 00:00:00 2001 From: Maria Sparenberg Date: Mon, 14 Jan 2019 12:39:31 +0000 Subject: [PATCH 03/13] Added translation using Weblate (German) Currently translated at 100.0% (3 of 3 strings) Translation: contract-11.0/contract-11.0-contract_variable_qty_timesheet Translate-URL: https://translation.odoo-community.org/projects/contract-11-0/contract-11-0-contract_variable_qty_timesheet/de/ --- contract_variable_qty_timesheet/i18n/de.po | 32 ++++++++++++++++++++++ 1 file changed, 32 insertions(+) create mode 100644 contract_variable_qty_timesheet/i18n/de.po diff --git a/contract_variable_qty_timesheet/i18n/de.po b/contract_variable_qty_timesheet/i18n/de.po new file mode 100644 index 000000000..4b09653ee --- /dev/null +++ b/contract_variable_qty_timesheet/i18n/de.po @@ -0,0 +1,32 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * contract_variable_qty_timesheet +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 11.0\n" +"Report-Msgid-Bugs-To: \n" +"PO-Revision-Date: 2019-03-07 15:53+0000\n" +"Last-Translator: Maria Sparenberg \n" +"Language-Team: none\n" +"Language: de\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 3.4\n" + +#. module: contract_variable_qty_timesheet +#: model:contract.line.qty.formula,name:contract_variable_qty_timesheet.contract_line_qty_formula_analytic_same_product +msgid "Analytic Same Product" +msgstr "Gleiches Produkt" + +#. module: contract_variable_qty_timesheet +#: model:contract.line.qty.formula,name:contract_variable_qty_timesheet.contract_line_qty_formula_project_timesheet +msgid "Project Timesheets" +msgstr "Projekt-Zeiterfassungen" + +#. module: contract_variable_qty_timesheet +#: model:contract.line.qty.formula,name:contract_variable_qty_timesheet.contract_line_qty_formula_task_timesheet +msgid "Task Timesheets" +msgstr "Aufgaben-Zeiterfassungen" From 86ad17777b7d9801f75023738dc5e570c0e3abff Mon Sep 17 00:00:00 2001 From: "Pedro M. Baeza" Date: Fri, 22 Nov 2019 00:42:02 +0100 Subject: [PATCH 04/13] [MIG] contract_variable_qty_timesheet: Migration to 12.0 * Standard procedure * README by fragments * Promoted to Production/Stable and declared maintainers * Code adapted to v12 * Tests added --- contract_variable_qty_timesheet/README.rst | 83 +++- .../__manifest__.py | 5 +- .../data/contract_line_qty_formula_data.xml | 19 +- .../i18n/contract_variable_qty_timesheet.pot | 2 +- .../readme/CONTRIBUTORS.rst | 4 + .../readme/DESCRIPTION.rst | 3 + .../readme/USAGE.rst | 8 + .../static/description/index.html | 440 ++++++++++++++++++ .../tests/__init__.py | 3 + .../test_contract_variable_qty_timesheet.py | 96 ++++ 10 files changed, 627 insertions(+), 36 deletions(-) create mode 100644 contract_variable_qty_timesheet/readme/CONTRIBUTORS.rst create mode 100644 contract_variable_qty_timesheet/readme/DESCRIPTION.rst create mode 100644 contract_variable_qty_timesheet/readme/USAGE.rst create mode 100644 contract_variable_qty_timesheet/static/description/index.html create mode 100644 contract_variable_qty_timesheet/tests/__init__.py create mode 100644 contract_variable_qty_timesheet/tests/test_contract_variable_qty_timesheet.py diff --git a/contract_variable_qty_timesheet/README.rst b/contract_variable_qty_timesheet/README.rst index 4206a323a..8acf44fb1 100644 --- a/contract_variable_qty_timesheet/README.rst +++ b/contract_variable_qty_timesheet/README.rst @@ -1,14 +1,38 @@ -.. image:: https://img.shields.io/badge/license-AGPL--3-blue.png - :target: https://www.gnu.org/licenses/agpl - :alt: License: AGPL-3 - =============================== Contract Variable Qty Timesheet =============================== +.. !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + !! This file is generated by oca-gen-addon-readme !! + !! changes will be overwritten. !! + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + +.. |badge1| image:: https://img.shields.io/badge/maturity-Production%2FStable-green.png + :target: https://odoo-community.org/page/development-status + :alt: Production/Stable +.. |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%2Fcontract-lightgray.png?logo=github + :target: https://github.com/OCA/contract/tree/12.0/contract_variable_qty_timesheet + :alt: OCA/contract +.. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png + :target: https://translation.odoo-community.org/projects/contract-12-0/contract-12-0-contract_variable_qty_timesheet + :alt: Translate me on Weblate +.. |badge5| image:: https://img.shields.io/badge/runbot-Try%20me-875A7B.png + :target: https://runbot.odoo-community.org/runbot/110/12.0 + :alt: Try me on Runbot + +|badge1| |badge2| |badge3| |badge4| |badge5| + This module extends the functionality of contract_variable_quantity adding several variable quantity formulas to allow to invoice lines from Timesheet -(Analytic Lines) +(Analytic Lines). + +**Table of contents** + +.. contents:: + :local: Usage ===== @@ -22,47 +46,56 @@ To use this module, you need to: #. Select "Project Timesheets", "Tasks Timesheets" or "Analytic Same Product" depending on your need. - -.. image:: https://odoo-community.org/website/image/ir.attachment/5784_f2813bd/datas - :alt: Try me on Runbot - :target: https://runbot.odoo-community.org/runbot/110/11.0 - - 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 smash it by providing detailed and welcomed feedback. +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 ======= -Images ------- +Authors +~~~~~~~ -* Odoo Community Association: `Icon `_. +* Tecnativa Contributors ------------- +~~~~~~~~~~~~ * `Tecnativa `_: + * Carlos Dauden + * Pedro M. Baeza -Do not contact contributors directly about support or help with technical issues. +Maintainers +~~~~~~~~~~~ -Maintainer ----------- +This module is maintained by the OCA. .. image:: https://odoo-community.org/logo.png :alt: Odoo Community Association :target: https://odoo-community.org -This module is maintained by the OCA. - OCA, or the Odoo Community Association, is a nonprofit organization whose mission is to support the collaborative development of Odoo features and promote its widespread use. -To contribute to this module, please visit https://odoo-community.org. +.. |maintainer-carlosdauden| image:: https://github.com/carlosdauden.png?size=40px + :target: https://github.com/carlosdauden + :alt: carlosdauden +.. |maintainer-pedrobaeza| image:: https://github.com/pedrobaeza.png?size=40px + :target: https://github.com/pedrobaeza + :alt: pedrobaeza + +Current `maintainers `__: + +|maintainer-carlosdauden| |maintainer-pedrobaeza| + +This module is part of the `OCA/contract `_ project on GitHub. + +You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute. diff --git a/contract_variable_qty_timesheet/__manifest__.py b/contract_variable_qty_timesheet/__manifest__.py index 1071b7d73..3503e440b 100644 --- a/contract_variable_qty_timesheet/__manifest__.py +++ b/contract_variable_qty_timesheet/__manifest__.py @@ -1,15 +1,17 @@ # Copyright 2018 Tecnativa - Carlos Dauden +# Copyright 2019 Tecnativa - Pedro M. Baeza # License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). { 'name': 'Contract Variable Qty Timesheet', 'summary': 'Add formula to invoice ', - 'version': '11.0.1.0.0', + 'version': '12.0.1.0.0', 'category': 'Contract Management', 'website': 'https://github.com/oca/contract', 'author': 'Tecnativa, ' 'Odoo Community Association (OCA)', 'license': 'AGPL-3', 'installable': True, + 'development_status': 'Production/Stable', 'depends': [ 'contract_variable_quantity', 'hr_timesheet', @@ -17,4 +19,5 @@ 'data': [ 'data/contract_line_qty_formula_data.xml', ], + 'maintainers': ['carlosdauden', 'pedrobaeza'], } diff --git a/contract_variable_qty_timesheet/data/contract_line_qty_formula_data.xml b/contract_variable_qty_timesheet/data/contract_line_qty_formula_data.xml index 0b83b4929..213d10749 100644 --- a/contract_variable_qty_timesheet/data/contract_line_qty_formula_data.xml +++ b/contract_variable_qty_timesheet/data/contract_line_qty_formula_data.xml @@ -1,16 +1,17 @@ Project Timesheets group = env['account.analytic.line'].read_group([ - ('account_id', '=', contract.id), + ('account_id', '=', line.analytic_account_id.id), ('product_id', '=', False), ('project_id', '!=', False), - ('date', '>=', line.date_from), - ('date', '<=', line.date_to), + ('date', '>=', period_first_date), + ('date', '<=', period_last_date), ], fields=['unit_amount'], groupby=[]) result = group and group[0]['unit_amount'] or 0.0 @@ -19,11 +20,11 @@ result = group and group[0]['unit_amount'] or 0.0 Task Timesheets group = env['account.analytic.line'].read_group([ - ('account_id', '=', contract.id), + ('account_id', '=', line.analytic_account_id.id), ('product_id', '=', False), ('task_id', '!=', False), - ('date', '>=', line.date_from), - ('date', '<=', line.date_to), + ('date', '>=', period_first_date), + ('date', '<=', period_last_date), ], fields=['unit_amount'], groupby=[]) result = group and group[0]['unit_amount'] or 0.0 @@ -32,10 +33,10 @@ result = group and group[0]['unit_amount'] or 0.0 Analytic Same Product group = env['account.analytic.line'].read_group([ - ('account_id', '=', contract.id), + ('account_id', '=', line.analytic_account_id.id), ('product_id', '=', line.product_id.id), - ('date', '>=', line.date_from), - ('date', '<=', line.date_to), + ('date', '>=', period_first_date), + ('date', '<=', period_last_date), ], fields=['unit_amount'], groupby=[]) result = group and group[0]['unit_amount'] or 0.0 diff --git a/contract_variable_qty_timesheet/i18n/contract_variable_qty_timesheet.pot b/contract_variable_qty_timesheet/i18n/contract_variable_qty_timesheet.pot index d4d87538a..fb0e0363a 100644 --- a/contract_variable_qty_timesheet/i18n/contract_variable_qty_timesheet.pot +++ b/contract_variable_qty_timesheet/i18n/contract_variable_qty_timesheet.pot @@ -4,7 +4,7 @@ # msgid "" msgstr "" -"Project-Id-Version: Odoo Server 11.0\n" +"Project-Id-Version: Odoo Server 12.0\n" "Report-Msgid-Bugs-To: \n" "Last-Translator: <>\n" "Language-Team: \n" diff --git a/contract_variable_qty_timesheet/readme/CONTRIBUTORS.rst b/contract_variable_qty_timesheet/readme/CONTRIBUTORS.rst new file mode 100644 index 000000000..e88bd67dd --- /dev/null +++ b/contract_variable_qty_timesheet/readme/CONTRIBUTORS.rst @@ -0,0 +1,4 @@ +* `Tecnativa `_: + + * Carlos Dauden + * Pedro M. Baeza diff --git a/contract_variable_qty_timesheet/readme/DESCRIPTION.rst b/contract_variable_qty_timesheet/readme/DESCRIPTION.rst new file mode 100644 index 000000000..0b238e9b7 --- /dev/null +++ b/contract_variable_qty_timesheet/readme/DESCRIPTION.rst @@ -0,0 +1,3 @@ +This module extends the functionality of contract_variable_quantity adding +several variable quantity formulas to allow to invoice lines from Timesheet +(Analytic Lines). diff --git a/contract_variable_qty_timesheet/readme/USAGE.rst b/contract_variable_qty_timesheet/readme/USAGE.rst new file mode 100644 index 000000000..3ca264dc0 --- /dev/null +++ b/contract_variable_qty_timesheet/readme/USAGE.rst @@ -0,0 +1,8 @@ +To use this module, you need to: + +#. Go to Invoicing > Sales > Contracts and select or create a new contract. +#. Check *Generate recurring invoices automatically*. +#. Add a new recurring invoicing line. +#. Select "Variable quantity" in column "Qty. type". +#. Select "Project Timesheets", "Tasks Timesheets" or "Analytic Same Product" + depending on your need. diff --git a/contract_variable_qty_timesheet/static/description/index.html b/contract_variable_qty_timesheet/static/description/index.html new file mode 100644 index 000000000..b65106f89 --- /dev/null +++ b/contract_variable_qty_timesheet/static/description/index.html @@ -0,0 +1,440 @@ + + + + + + +Contract Variable Qty Timesheet + + + +
+

Contract Variable Qty Timesheet

+ + +

Production/Stable License: AGPL-3 OCA/contract Translate me on Weblate Try me on Runbot

+

This module extends the functionality of contract_variable_quantity adding +several variable quantity formulas to allow to invoice lines from Timesheet +(Analytic Lines).

+

Table of contents

+ +
+

Usage

+

To use this module, you need to:

+
    +
  1. Go to Invoicing > Sales > Contracts and select or create a new contract.
  2. +
  3. Check Generate recurring invoices automatically.
  4. +
  5. Add a new recurring invoicing line.
  6. +
  7. Select “Variable quantity” in column “Qty. type”.
  8. +
  9. Select “Project Timesheets”, “Tasks Timesheets” or “Analytic Same Product” +depending on your need.
  10. +
+
+
+

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

+
    +
  • Tecnativa
  • +
+
+
+

Contributors

+
    +
  • Tecnativa:
      +
    • Carlos Dauden
    • +
    • Pedro M. Baeza
    • +
    +
  • +
+
+
+

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

+

carlosdauden pedrobaeza

+

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

+

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

+
+
+
+ + diff --git a/contract_variable_qty_timesheet/tests/__init__.py b/contract_variable_qty_timesheet/tests/__init__.py new file mode 100644 index 000000000..2bdf08124 --- /dev/null +++ b/contract_variable_qty_timesheet/tests/__init__.py @@ -0,0 +1,3 @@ +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). + +from . import test_contract_variable_qty_timesheet diff --git a/contract_variable_qty_timesheet/tests/test_contract_variable_qty_timesheet.py b/contract_variable_qty_timesheet/tests/test_contract_variable_qty_timesheet.py new file mode 100644 index 000000000..bf08e65e6 --- /dev/null +++ b/contract_variable_qty_timesheet/tests/test_contract_variable_qty_timesheet.py @@ -0,0 +1,96 @@ +# Copyright 2019 Tecnativa - Pedro M. Baeza +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). + +from odoo import fields +from odoo.tests import common + + +class TestContractVariableQtyTimesheet(common.SavepointCase): + @classmethod + def setUpClass(cls): + super().setUpClass() + cls.partner = cls.env['res.partner'].create({'name': 'Test partner'}) + cls.analytic_account = cls.env['account.analytic.account'].create({ + 'name': 'Test analytic account'}) + cls.contract = cls.env['contract.contract'].create({ + 'name': 'Test contract', + 'partner_id': cls.partner.id}) + cls.product = cls.env['product.product'].create({ + 'name': 'Test product'}) + contract_line_vals = { + 'contract_id': cls.contract.id, + 'analytic_account_id': cls.analytic_account.id, + 'product_id': cls.product.id, + 'uom_id': cls.product.uom_id.id, + 'name': 'Test line contract', + 'recurring_interval': 1, + 'recurring_rule_type': 'monthly', + 'recurring_invoicing_type': 'pre-paid', + 'date_start': '2020-01-01', + 'recurring_next_date': '2020-01-01', + 'qty_type': 'variable', + 'qty_formula_id': cls.env.ref( + 'contract_variable_qty_timesheet.' + 'contract_line_qty_formula_project_timesheet').id, + } + cls.contract_line = cls.env['contract.line'].create( + contract_line_vals) + cls.project = cls.env['project.project'].create({ + 'name': 'Test project', + 'analytic_account_id': cls.analytic_account.id, + }) + cls.task = cls.env['project.task'].create({ + 'project_id': cls.project.id, + 'name': 'Test task', + }) + + def _contract_invoicing(self, contract): + date_ref = fields.Date.from_string('2020-01-01') + contract._recurring_create_invoice(date_ref) + return contract._get_related_invoices() + + def _create_analytic_line(self, project, task, date, product, unit_amount): + return self.env['account.analytic.line'].create({ + 'account_id': self.analytic_account.id, + 'project_id': project and project.id, + 'task_id': task and task.id, + 'name': 'Test %s %s' % (date, unit_amount), + 'date': date, + 'product_id': product and product.id, + 'unit_amount': unit_amount, + }) + + def test_project_timesheet(self): + self._create_analytic_line( + self.project, self.task, '2020-01-01', False, 3) + self._create_analytic_line( + False, False, '2020-01-01', False, 1) + invoice = self._contract_invoicing(self.contract) + self.assertEqual(len(invoice.invoice_line_ids), 1) + self.assertAlmostEqual(invoice.invoice_line_ids.quantity, 3) + + def test_task_timesheet(self): + self.contract_line.qty_formula_id = self.env.ref( + 'contract_variable_qty_timesheet.' + 'contract_line_qty_formula_task_timesheet' + ).id + self._create_analytic_line( + self.project, self.task, '2020-01-01', False, 3) + self._create_analytic_line( + self.project, False, '2020-01-01', False, 1) + invoice = self._contract_invoicing(self.contract) + self.assertEqual(len(invoice.invoice_line_ids), 1) + self.assertAlmostEqual(invoice.invoice_line_ids.quantity, 3) + + def test_same_product(self): + self.contract_line.qty_formula_id = self.env.ref( + 'contract_variable_qty_timesheet.' + 'contract_line_qty_formula_analytic_same_product' + ).id + self._create_analytic_line( + False, False, '2020-01-01', self.product, 3) + self._create_analytic_line( + self.project, False, '2020-01-01', False, 1) + invoice = self._contract_invoicing(self.contract) + self.assertEqual(len(invoice.invoice_line_ids), 1) + self.assertAlmostEqual(invoice.invoice_line_ids.quantity, 3) From eeb8f4f52adfbf309220bb92edc040c8b8300263 Mon Sep 17 00:00:00 2001 From: Marcel Savegnago Date: Wed, 12 Feb 2020 03:47:01 +0000 Subject: [PATCH 05/13] Added translation using Weblate (Portuguese (Brazil)) --- contract_variable_qty_timesheet/i18n/pt_BR.po | 30 +++++++++++++++++++ 1 file changed, 30 insertions(+) create mode 100644 contract_variable_qty_timesheet/i18n/pt_BR.po diff --git a/contract_variable_qty_timesheet/i18n/pt_BR.po b/contract_variable_qty_timesheet/i18n/pt_BR.po new file mode 100644 index 000000000..7f3be3ca3 --- /dev/null +++ b/contract_variable_qty_timesheet/i18n/pt_BR.po @@ -0,0 +1,30 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * contract_variable_qty_timesheet +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 12.0\n" +"Report-Msgid-Bugs-To: \n" +"Last-Translator: Automatically generated\n" +"Language-Team: none\n" +"Language: pt_BR\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" + +#. module: contract_variable_qty_timesheet +#: model:contract.line.qty.formula,name:contract_variable_qty_timesheet.contract_line_qty_formula_analytic_same_product +msgid "Analytic Same Product" +msgstr "" + +#. module: contract_variable_qty_timesheet +#: model:contract.line.qty.formula,name:contract_variable_qty_timesheet.contract_line_qty_formula_project_timesheet +msgid "Project Timesheets" +msgstr "" + +#. module: contract_variable_qty_timesheet +#: model:contract.line.qty.formula,name:contract_variable_qty_timesheet.contract_line_qty_formula_task_timesheet +msgid "Task Timesheets" +msgstr "" From c57b76e530e9251629047b6c78a6fc90b606b36a Mon Sep 17 00:00:00 2001 From: Marcel Savegnago Date: Wed, 12 Feb 2020 04:02:34 +0000 Subject: [PATCH 06/13] Translated using Weblate (Portuguese (Brazil)) Currently translated at 66.7% (2 of 3 strings) Translation: contract-12.0/contract-12.0-contract_variable_qty_timesheet Translate-URL: https://translation.odoo-community.org/projects/contract-12-0/contract-12-0-contract_variable_qty_timesheet/pt_BR/ --- contract_variable_qty_timesheet/i18n/pt_BR.po | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/contract_variable_qty_timesheet/i18n/pt_BR.po b/contract_variable_qty_timesheet/i18n/pt_BR.po index 7f3be3ca3..75823443b 100644 --- a/contract_variable_qty_timesheet/i18n/pt_BR.po +++ b/contract_variable_qty_timesheet/i18n/pt_BR.po @@ -6,13 +6,15 @@ msgid "" msgstr "" "Project-Id-Version: Odoo Server 12.0\n" "Report-Msgid-Bugs-To: \n" -"Last-Translator: Automatically generated\n" +"PO-Revision-Date: 2020-02-12 05:03+0000\n" +"Last-Translator: Marcel Savegnago \n" "Language-Team: none\n" "Language: pt_BR\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 3.10\n" #. module: contract_variable_qty_timesheet #: model:contract.line.qty.formula,name:contract_variable_qty_timesheet.contract_line_qty_formula_analytic_same_product @@ -22,9 +24,9 @@ msgstr "" #. module: contract_variable_qty_timesheet #: model:contract.line.qty.formula,name:contract_variable_qty_timesheet.contract_line_qty_formula_project_timesheet msgid "Project Timesheets" -msgstr "" +msgstr "Planilhas de Tempo do Projeto" #. module: contract_variable_qty_timesheet #: model:contract.line.qty.formula,name:contract_variable_qty_timesheet.contract_line_qty_formula_task_timesheet msgid "Task Timesheets" -msgstr "" +msgstr "Planilhas de Tempo da Tarefa" From 2043d825aa67b75061d01195a583289c031c2763 Mon Sep 17 00:00:00 2001 From: Pedro Castro Silva Date: Mon, 17 Feb 2020 17:54:02 +0000 Subject: [PATCH 07/13] Added translation using Weblate (Portuguese) --- contract_variable_qty_timesheet/i18n/pt.po | 32 +++++++++++++++++++ contract_variable_qty_timesheet/i18n/pt_BR.po | 6 ++-- 2 files changed, 35 insertions(+), 3 deletions(-) create mode 100644 contract_variable_qty_timesheet/i18n/pt.po diff --git a/contract_variable_qty_timesheet/i18n/pt.po b/contract_variable_qty_timesheet/i18n/pt.po new file mode 100644 index 000000000..938e1c85f --- /dev/null +++ b/contract_variable_qty_timesheet/i18n/pt.po @@ -0,0 +1,32 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * contract_variable_qty_timesheet +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 12.0\n" +"Report-Msgid-Bugs-To: \n" +"PO-Revision-Date: 2020-02-17 19:13+0000\n" +"Last-Translator: Pedro Castro Silva \n" +"Language-Team: none\n" +"Language: pt\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 3.10\n" + +#. module: contract_variable_qty_timesheet +#: model:contract.line.qty.formula,name:contract_variable_qty_timesheet.contract_line_qty_formula_analytic_same_product +msgid "Analytic Same Product" +msgstr "Analítica Mesmo Produto" + +#. module: contract_variable_qty_timesheet +#: model:contract.line.qty.formula,name:contract_variable_qty_timesheet.contract_line_qty_formula_project_timesheet +msgid "Project Timesheets" +msgstr "Folhas de Horas de Projetos" + +#. module: contract_variable_qty_timesheet +#: model:contract.line.qty.formula,name:contract_variable_qty_timesheet.contract_line_qty_formula_task_timesheet +msgid "Task Timesheets" +msgstr "Folhas de horas de Tarefas" diff --git a/contract_variable_qty_timesheet/i18n/pt_BR.po b/contract_variable_qty_timesheet/i18n/pt_BR.po index 75823443b..5c57ec996 100644 --- a/contract_variable_qty_timesheet/i18n/pt_BR.po +++ b/contract_variable_qty_timesheet/i18n/pt_BR.po @@ -6,8 +6,8 @@ msgid "" msgstr "" "Project-Id-Version: Odoo Server 12.0\n" "Report-Msgid-Bugs-To: \n" -"PO-Revision-Date: 2020-02-12 05:03+0000\n" -"Last-Translator: Marcel Savegnago \n" +"PO-Revision-Date: 2020-06-17 01:19+0000\n" +"Last-Translator: Fernando Colus \n" "Language-Team: none\n" "Language: pt_BR\n" "MIME-Version: 1.0\n" @@ -19,7 +19,7 @@ msgstr "" #. module: contract_variable_qty_timesheet #: model:contract.line.qty.formula,name:contract_variable_qty_timesheet.contract_line_qty_formula_analytic_same_product msgid "Analytic Same Product" -msgstr "" +msgstr "Mesmo Produto Analítico" #. module: contract_variable_qty_timesheet #: model:contract.line.qty.formula,name:contract_variable_qty_timesheet.contract_line_qty_formula_project_timesheet From 243140d58d7d0d0a39ffd9d173cad3875d8adc38 Mon Sep 17 00:00:00 2001 From: Fernando La Chica Date: Mon, 23 Nov 2020 16:56:51 +0100 Subject: [PATCH 08/13] [IMP] contract_variable_qty_timesheet: black, isort --- .../__manifest__.py | 30 ++--- .../data/contract_line_qty_formula_data.xml | 39 ++++--- .../test_contract_variable_qty_timesheet.py | 110 +++++++++--------- 3 files changed, 86 insertions(+), 93 deletions(-) diff --git a/contract_variable_qty_timesheet/__manifest__.py b/contract_variable_qty_timesheet/__manifest__.py index 3503e440b..f6b768260 100644 --- a/contract_variable_qty_timesheet/__manifest__.py +++ b/contract_variable_qty_timesheet/__manifest__.py @@ -2,22 +2,16 @@ # Copyright 2019 Tecnativa - Pedro M. Baeza # License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). { - 'name': 'Contract Variable Qty Timesheet', - 'summary': 'Add formula to invoice ', - 'version': '12.0.1.0.0', - 'category': 'Contract Management', - 'website': 'https://github.com/oca/contract', - 'author': 'Tecnativa, ' - 'Odoo Community Association (OCA)', - 'license': 'AGPL-3', - 'installable': True, - 'development_status': 'Production/Stable', - 'depends': [ - 'contract_variable_quantity', - 'hr_timesheet', - ], - 'data': [ - 'data/contract_line_qty_formula_data.xml', - ], - 'maintainers': ['carlosdauden', 'pedrobaeza'], + "name": "Contract Variable Qty Timesheet", + "summary": "Add formula to invoice ", + "version": "12.0.1.0.0", + "category": "Contract Management", + "website": "https://github.com/oca/contract", + "author": "Tecnativa, " "Odoo Community Association (OCA)", + "license": "AGPL-3", + "installable": True, + "development_status": "Production/Stable", + "depends": ["contract_variable_quantity", "hr_timesheet",], + "data": ["data/contract_line_qty_formula_data.xml",], + "maintainers": ["carlosdauden", "pedrobaeza"], } diff --git a/contract_variable_qty_timesheet/data/contract_line_qty_formula_data.xml b/contract_variable_qty_timesheet/data/contract_line_qty_formula_data.xml index 213d10749..6ee6d1636 100644 --- a/contract_variable_qty_timesheet/data/contract_line_qty_formula_data.xml +++ b/contract_variable_qty_timesheet/data/contract_line_qty_formula_data.xml @@ -1,12 +1,14 @@ - + - - - Project Timesheets - group = env['account.analytic.line'].read_group([ + + Project Timesheets + group = env['account.analytic.line'].read_group([ ('account_id', '=', line.analytic_account_id.id), ('product_id', '=', False), ('project_id', '!=', False), @@ -15,11 +17,13 @@ ], fields=['unit_amount'], groupby=[]) result = group and group[0]['unit_amount'] or 0.0 - - - - Task Timesheets - group = env['account.analytic.line'].read_group([ + + + Task Timesheets + group = env['account.analytic.line'].read_group([ ('account_id', '=', line.analytic_account_id.id), ('product_id', '=', False), ('task_id', '!=', False), @@ -28,11 +32,13 @@ result = group and group[0]['unit_amount'] or 0.0 ], fields=['unit_amount'], groupby=[]) result = group and group[0]['unit_amount'] or 0.0 - - - - Analytic Same Product - group = env['account.analytic.line'].read_group([ + + + Analytic Same Product + group = env['account.analytic.line'].read_group([ ('account_id', '=', line.analytic_account_id.id), ('product_id', '=', line.product_id.id), ('date', '>=', period_first_date), @@ -40,6 +46,5 @@ result = group and group[0]['unit_amount'] or 0.0 ], fields=['unit_amount'], groupby=[]) result = group and group[0]['unit_amount'] or 0.0 - - + diff --git a/contract_variable_qty_timesheet/tests/test_contract_variable_qty_timesheet.py b/contract_variable_qty_timesheet/tests/test_contract_variable_qty_timesheet.py index bf08e65e6..5f47cfc48 100644 --- a/contract_variable_qty_timesheet/tests/test_contract_variable_qty_timesheet.py +++ b/contract_variable_qty_timesheet/tests/test_contract_variable_qty_timesheet.py @@ -9,88 +9,82 @@ class TestContractVariableQtyTimesheet(common.SavepointCase): @classmethod def setUpClass(cls): super().setUpClass() - cls.partner = cls.env['res.partner'].create({'name': 'Test partner'}) - cls.analytic_account = cls.env['account.analytic.account'].create({ - 'name': 'Test analytic account'}) - cls.contract = cls.env['contract.contract'].create({ - 'name': 'Test contract', - 'partner_id': cls.partner.id}) - cls.product = cls.env['product.product'].create({ - 'name': 'Test product'}) + cls.partner = cls.env["res.partner"].create({"name": "Test partner"}) + cls.analytic_account = cls.env["account.analytic.account"].create( + {"name": "Test analytic account"} + ) + cls.contract = cls.env["contract.contract"].create( + {"name": "Test contract", "partner_id": cls.partner.id} + ) + cls.product = cls.env["product.product"].create({"name": "Test product"}) contract_line_vals = { - 'contract_id': cls.contract.id, - 'analytic_account_id': cls.analytic_account.id, - 'product_id': cls.product.id, - 'uom_id': cls.product.uom_id.id, - 'name': 'Test line contract', - 'recurring_interval': 1, - 'recurring_rule_type': 'monthly', - 'recurring_invoicing_type': 'pre-paid', - 'date_start': '2020-01-01', - 'recurring_next_date': '2020-01-01', - 'qty_type': 'variable', - 'qty_formula_id': cls.env.ref( - 'contract_variable_qty_timesheet.' - 'contract_line_qty_formula_project_timesheet').id, + "contract_id": cls.contract.id, + "analytic_account_id": cls.analytic_account.id, + "product_id": cls.product.id, + "uom_id": cls.product.uom_id.id, + "name": "Test line contract", + "recurring_interval": 1, + "recurring_rule_type": "monthly", + "recurring_invoicing_type": "pre-paid", + "date_start": "2020-01-01", + "recurring_next_date": "2020-01-01", + "qty_type": "variable", + "qty_formula_id": cls.env.ref( + "contract_variable_qty_timesheet." + "contract_line_qty_formula_project_timesheet" + ).id, } - cls.contract_line = cls.env['contract.line'].create( - contract_line_vals) - cls.project = cls.env['project.project'].create({ - 'name': 'Test project', - 'analytic_account_id': cls.analytic_account.id, - }) - cls.task = cls.env['project.task'].create({ - 'project_id': cls.project.id, - 'name': 'Test task', - }) + cls.contract_line = cls.env["contract.line"].create(contract_line_vals) + cls.project = cls.env["project.project"].create( + {"name": "Test project", "analytic_account_id": cls.analytic_account.id,} + ) + cls.task = cls.env["project.task"].create( + {"project_id": cls.project.id, "name": "Test task",} + ) def _contract_invoicing(self, contract): - date_ref = fields.Date.from_string('2020-01-01') + date_ref = fields.Date.from_string("2020-01-01") contract._recurring_create_invoice(date_ref) return contract._get_related_invoices() def _create_analytic_line(self, project, task, date, product, unit_amount): - return self.env['account.analytic.line'].create({ - 'account_id': self.analytic_account.id, - 'project_id': project and project.id, - 'task_id': task and task.id, - 'name': 'Test %s %s' % (date, unit_amount), - 'date': date, - 'product_id': product and product.id, - 'unit_amount': unit_amount, - }) + return self.env["account.analytic.line"].create( + { + "account_id": self.analytic_account.id, + "project_id": project and project.id, + "task_id": task and task.id, + "name": "Test {} {}".format(date, unit_amount), + "date": date, + "product_id": product and product.id, + "unit_amount": unit_amount, + } + ) def test_project_timesheet(self): - self._create_analytic_line( - self.project, self.task, '2020-01-01', False, 3) - self._create_analytic_line( - False, False, '2020-01-01', False, 1) + self._create_analytic_line(self.project, self.task, "2020-01-01", False, 3) + self._create_analytic_line(False, False, "2020-01-01", False, 1) invoice = self._contract_invoicing(self.contract) self.assertEqual(len(invoice.invoice_line_ids), 1) self.assertAlmostEqual(invoice.invoice_line_ids.quantity, 3) def test_task_timesheet(self): self.contract_line.qty_formula_id = self.env.ref( - 'contract_variable_qty_timesheet.' - 'contract_line_qty_formula_task_timesheet' + "contract_variable_qty_timesheet." + "contract_line_qty_formula_task_timesheet" ).id - self._create_analytic_line( - self.project, self.task, '2020-01-01', False, 3) - self._create_analytic_line( - self.project, False, '2020-01-01', False, 1) + self._create_analytic_line(self.project, self.task, "2020-01-01", False, 3) + self._create_analytic_line(self.project, False, "2020-01-01", False, 1) invoice = self._contract_invoicing(self.contract) self.assertEqual(len(invoice.invoice_line_ids), 1) self.assertAlmostEqual(invoice.invoice_line_ids.quantity, 3) def test_same_product(self): self.contract_line.qty_formula_id = self.env.ref( - 'contract_variable_qty_timesheet.' - 'contract_line_qty_formula_analytic_same_product' + "contract_variable_qty_timesheet." + "contract_line_qty_formula_analytic_same_product" ).id - self._create_analytic_line( - False, False, '2020-01-01', self.product, 3) - self._create_analytic_line( - self.project, False, '2020-01-01', False, 1) + self._create_analytic_line(False, False, "2020-01-01", self.product, 3) + self._create_analytic_line(self.project, False, "2020-01-01", False, 1) invoice = self._contract_invoicing(self.contract) self.assertEqual(len(invoice.invoice_line_ids), 1) self.assertAlmostEqual(invoice.invoice_line_ids.quantity, 3) From 9266c55884b15725700b4371e8ebc6cfff2bcabe Mon Sep 17 00:00:00 2001 From: Fernando La Chica Date: Mon, 23 Nov 2020 18:02:45 +0100 Subject: [PATCH 09/13] [MIG][13.0] contract_variable_qty_timesheet: Migration to 13.0 --- contract_variable_qty_timesheet/README.rst | 14 +++++++++----- contract_variable_qty_timesheet/__manifest__.py | 6 +++--- .../i18n/contract_variable_qty_timesheet.pot | 7 +++---- contract_variable_qty_timesheet/i18n/de.po | 2 +- .../readme/CONTRIBUTORS.rst | 4 ++++ .../static/description/index.html | 10 +++++++--- .../tests/test_contract_variable_qty_timesheet.py | 4 ++-- 7 files changed, 29 insertions(+), 18 deletions(-) diff --git a/contract_variable_qty_timesheet/README.rst b/contract_variable_qty_timesheet/README.rst index 8acf44fb1..55cd08930 100644 --- a/contract_variable_qty_timesheet/README.rst +++ b/contract_variable_qty_timesheet/README.rst @@ -14,13 +14,13 @@ Contract Variable Qty Timesheet :target: http://www.gnu.org/licenses/agpl-3.0-standalone.html :alt: License: AGPL-3 .. |badge3| image:: https://img.shields.io/badge/github-OCA%2Fcontract-lightgray.png?logo=github - :target: https://github.com/OCA/contract/tree/12.0/contract_variable_qty_timesheet + :target: https://github.com/OCA/contract/tree/13.0/contract_variable_qty_timesheet :alt: OCA/contract .. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png - :target: https://translation.odoo-community.org/projects/contract-12-0/contract-12-0-contract_variable_qty_timesheet + :target: https://translation.odoo-community.org/projects/contract-13-0/contract-13-0-contract_variable_qty_timesheet :alt: Translate me on Weblate .. |badge5| image:: https://img.shields.io/badge/runbot-Try%20me-875A7B.png - :target: https://runbot.odoo-community.org/runbot/110/12.0 + :target: https://runbot.odoo-community.org/runbot/110/13.0 :alt: Try me on Runbot |badge1| |badge2| |badge3| |badge4| |badge5| @@ -52,7 +52,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. @@ -72,6 +72,10 @@ Contributors * Carlos Dauden * Pedro M. Baeza +* `Guadaltech `_: + + * Fernando La Chica + Maintainers ~~~~~~~~~~~ @@ -96,6 +100,6 @@ Current `maintainers `__: |maintainer-carlosdauden| |maintainer-pedrobaeza| -This module is part of the `OCA/contract `_ project on GitHub. +This module is part of the `OCA/contract `_ project on GitHub. You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute. diff --git a/contract_variable_qty_timesheet/__manifest__.py b/contract_variable_qty_timesheet/__manifest__.py index f6b768260..19e386b7f 100644 --- a/contract_variable_qty_timesheet/__manifest__.py +++ b/contract_variable_qty_timesheet/__manifest__.py @@ -4,14 +4,14 @@ { "name": "Contract Variable Qty Timesheet", "summary": "Add formula to invoice ", - "version": "12.0.1.0.0", + "version": "13.0.1.0.0", "category": "Contract Management", "website": "https://github.com/oca/contract", "author": "Tecnativa, " "Odoo Community Association (OCA)", "license": "AGPL-3", "installable": True, "development_status": "Production/Stable", - "depends": ["contract_variable_quantity", "hr_timesheet",], - "data": ["data/contract_line_qty_formula_data.xml",], + "depends": ["contract_variable_quantity", "hr_timesheet"], + "data": ["data/contract_line_qty_formula_data.xml"], "maintainers": ["carlosdauden", "pedrobaeza"], } diff --git a/contract_variable_qty_timesheet/i18n/contract_variable_qty_timesheet.pot b/contract_variable_qty_timesheet/i18n/contract_variable_qty_timesheet.pot index fb0e0363a..290e919b5 100644 --- a/contract_variable_qty_timesheet/i18n/contract_variable_qty_timesheet.pot +++ b/contract_variable_qty_timesheet/i18n/contract_variable_qty_timesheet.pot @@ -1,12 +1,12 @@ # Translation of Odoo Server. # This file contains the translation of the following modules: -# * contract_variable_qty_timesheet +# * contract_variable_qty_timesheet # 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" @@ -27,4 +27,3 @@ msgstr "" #: model:contract.line.qty.formula,name:contract_variable_qty_timesheet.contract_line_qty_formula_task_timesheet msgid "Task Timesheets" msgstr "" - diff --git a/contract_variable_qty_timesheet/i18n/de.po b/contract_variable_qty_timesheet/i18n/de.po index 4b09653ee..cc574369e 100644 --- a/contract_variable_qty_timesheet/i18n/de.po +++ b/contract_variable_qty_timesheet/i18n/de.po @@ -1,6 +1,6 @@ # Translation of Odoo Server. # This file contains the translation of the following modules: -# * contract_variable_qty_timesheet +# * contract_variable_qty_timesheet # msgid "" msgstr "" diff --git a/contract_variable_qty_timesheet/readme/CONTRIBUTORS.rst b/contract_variable_qty_timesheet/readme/CONTRIBUTORS.rst index e88bd67dd..63697f68d 100644 --- a/contract_variable_qty_timesheet/readme/CONTRIBUTORS.rst +++ b/contract_variable_qty_timesheet/readme/CONTRIBUTORS.rst @@ -2,3 +2,7 @@ * Carlos Dauden * Pedro M. Baeza + +* `Guadaltech `_: + + * Fernando La Chica diff --git a/contract_variable_qty_timesheet/static/description/index.html b/contract_variable_qty_timesheet/static/description/index.html index b65106f89..9404427d6 100644 --- a/contract_variable_qty_timesheet/static/description/index.html +++ b/contract_variable_qty_timesheet/static/description/index.html @@ -367,7 +367,7 @@ ul.auto-toc { !! This file is generated by oca-gen-addon-readme !! !! changes will be overwritten. !! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! --> -

Production/Stable License: AGPL-3 OCA/contract Translate me on Weblate Try me on Runbot

+

Production/Stable License: AGPL-3 OCA/contract Translate me on Weblate Try me on Runbot

This module extends the functionality of contract_variable_quantity adding several variable quantity formulas to allow to invoice lines from Timesheet (Analytic Lines).

@@ -401,7 +401,7 @@ depending on your need.

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.

@@ -420,6 +420,10 @@ If you spotted it first, help us smashing it by providing a detailed and welcome
  • Pedro M. Baeza
  • +
  • Guadaltech: +
  • @@ -431,7 +435,7 @@ mission is to support the collaborative development of Odoo features and promote its widespread use.

    Current maintainers:

    carlosdauden pedrobaeza

    -

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

    +

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

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

    diff --git a/contract_variable_qty_timesheet/tests/test_contract_variable_qty_timesheet.py b/contract_variable_qty_timesheet/tests/test_contract_variable_qty_timesheet.py index 5f47cfc48..bbed59517 100644 --- a/contract_variable_qty_timesheet/tests/test_contract_variable_qty_timesheet.py +++ b/contract_variable_qty_timesheet/tests/test_contract_variable_qty_timesheet.py @@ -36,10 +36,10 @@ class TestContractVariableQtyTimesheet(common.SavepointCase): } cls.contract_line = cls.env["contract.line"].create(contract_line_vals) cls.project = cls.env["project.project"].create( - {"name": "Test project", "analytic_account_id": cls.analytic_account.id,} + {"name": "Test project", "analytic_account_id": cls.analytic_account.id} ) cls.task = cls.env["project.task"].create( - {"project_id": cls.project.id, "name": "Test task",} + {"project_id": cls.project.id, "name": "Test task"} ) def _contract_invoicing(self, contract): From 7a76c8e0621bb4059fa8010ea25d515d9129a3c8 Mon Sep 17 00:00:00 2001 From: Denis Roussel Date: Sat, 18 Jun 2022 14:25:51 +0200 Subject: [PATCH 10/13] [13.0][ADD] copier --- contract_variable_qty_timesheet/README.rst | 15 ++++--- .../__manifest__.py | 2 +- contract_variable_qty_timesheet/i18n/pt_BR.po | 8 ++-- .../static/description/index.html | 40 ++++++++++--------- 4 files changed, 35 insertions(+), 30 deletions(-) diff --git a/contract_variable_qty_timesheet/README.rst b/contract_variable_qty_timesheet/README.rst index 55cd08930..651aea9ac 100644 --- a/contract_variable_qty_timesheet/README.rst +++ b/contract_variable_qty_timesheet/README.rst @@ -2,10 +2,13 @@ Contract Variable Qty Timesheet =============================== -.. !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! +.. + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !! This file is generated by oca-gen-addon-readme !! !! changes will be overwritten. !! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + !! source digest: sha256:5ac85c806a69d7e4ecd65ddf220774240d8f64392b79b10183460c3a01d4d572 + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! .. |badge1| image:: https://img.shields.io/badge/maturity-Production%2FStable-green.png :target: https://odoo-community.org/page/development-status @@ -19,11 +22,11 @@ Contract Variable Qty Timesheet .. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png :target: https://translation.odoo-community.org/projects/contract-13-0/contract-13-0-contract_variable_qty_timesheet :alt: Translate me on Weblate -.. |badge5| image:: https://img.shields.io/badge/runbot-Try%20me-875A7B.png - :target: https://runbot.odoo-community.org/runbot/110/13.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/contract&target_branch=13.0 + :alt: Try me on Runboat -|badge1| |badge2| |badge3| |badge4| |badge5| +|badge1| |badge2| |badge3| |badge4| |badge5| This module extends the functionality of contract_variable_quantity adding several variable quantity formulas to allow to invoice lines from Timesheet @@ -51,7 +54,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/contract_variable_qty_timesheet/__manifest__.py b/contract_variable_qty_timesheet/__manifest__.py index 19e386b7f..6b450fb73 100644 --- a/contract_variable_qty_timesheet/__manifest__.py +++ b/contract_variable_qty_timesheet/__manifest__.py @@ -6,7 +6,7 @@ "summary": "Add formula to invoice ", "version": "13.0.1.0.0", "category": "Contract Management", - "website": "https://github.com/oca/contract", + "website": "https://github.com/OCA/contract", "author": "Tecnativa, " "Odoo Community Association (OCA)", "license": "AGPL-3", "installable": True, diff --git a/contract_variable_qty_timesheet/i18n/pt_BR.po b/contract_variable_qty_timesheet/i18n/pt_BR.po index 5c57ec996..4df8fa1b4 100644 --- a/contract_variable_qty_timesheet/i18n/pt_BR.po +++ b/contract_variable_qty_timesheet/i18n/pt_BR.po @@ -6,15 +6,15 @@ msgid "" msgstr "" "Project-Id-Version: Odoo Server 12.0\n" "Report-Msgid-Bugs-To: \n" -"PO-Revision-Date: 2020-06-17 01:19+0000\n" -"Last-Translator: Fernando Colus \n" +"PO-Revision-Date: 2022-10-12 03:42+0000\n" +"Last-Translator: Douglas Custódio \n" "Language-Team: none\n" "Language: pt_BR\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 3.10\n" +"X-Generator: Weblate 4.3.2\n" #. module: contract_variable_qty_timesheet #: model:contract.line.qty.formula,name:contract_variable_qty_timesheet.contract_line_qty_formula_analytic_same_product @@ -24,7 +24,7 @@ msgstr "Mesmo Produto Analítico" #. module: contract_variable_qty_timesheet #: model:contract.line.qty.formula,name:contract_variable_qty_timesheet.contract_line_qty_formula_project_timesheet msgid "Project Timesheets" -msgstr "Planilhas de Tempo do Projeto" +msgstr "Apontamentos de horas do Projeto" #. module: contract_variable_qty_timesheet #: model:contract.line.qty.formula,name:contract_variable_qty_timesheet.contract_line_qty_formula_task_timesheet diff --git a/contract_variable_qty_timesheet/static/description/index.html b/contract_variable_qty_timesheet/static/description/index.html index 9404427d6..adc7a6087 100644 --- a/contract_variable_qty_timesheet/static/description/index.html +++ b/contract_variable_qty_timesheet/static/description/index.html @@ -1,20 +1,20 @@ - + - + Contract Variable Qty Timesheet