From a53297c4d3c10d245a257a4080233e1ff262b7f1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Be=C3=B1at=20Jimenez?= Date: Mon, 29 Apr 2019 12:37:13 +0200 Subject: [PATCH 01/23] [10.0][ADD] purchase_request_analytic: Add analytic account to Purchase Request --- purchase_request_analytic/README.rst | 32 +++++++ purchase_request_analytic/__init__.py | 1 + purchase_request_analytic/__manifest__.py | 16 ++++ purchase_request_analytic/models/__init__.py | 1 + .../models/purchase_request.py | 86 +++++++++++++++++++ .../views/purchase_request_views.xml | 45 ++++++++++ 6 files changed, 181 insertions(+) create mode 100644 purchase_request_analytic/README.rst create mode 100644 purchase_request_analytic/__init__.py create mode 100644 purchase_request_analytic/__manifest__.py create mode 100644 purchase_request_analytic/models/__init__.py create mode 100644 purchase_request_analytic/models/purchase_request.py create mode 100644 purchase_request_analytic/views/purchase_request_views.xml diff --git a/purchase_request_analytic/README.rst b/purchase_request_analytic/README.rst new file mode 100644 index 0000000000..3ccfa2809b --- /dev/null +++ b/purchase_request_analytic/README.rst @@ -0,0 +1,32 @@ +.. image:: https://img.shields.io/badge/licence-AGPL--3-blue.svg + :alt: License AGPL-3 + +========================= +Purchase Request Analytic +========================= +This module adds the analytic account field to Purchase Requests. + +Usage +===== + +* Assign an analytic account to the purchase request or to purchase request lines + +Credits +======= + +Contributors +------------ + +* Beñat Jimenez + + +Maintainer +---------- + +.. image:: http://odoo-community.org/logo.png + :alt: Odoo Community Association + :target: http://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. \ No newline at end of file diff --git a/purchase_request_analytic/__init__.py b/purchase_request_analytic/__init__.py new file mode 100644 index 0000000000..0650744f6b --- /dev/null +++ b/purchase_request_analytic/__init__.py @@ -0,0 +1 @@ +from . import models diff --git a/purchase_request_analytic/__manifest__.py b/purchase_request_analytic/__manifest__.py new file mode 100644 index 0000000000..ca862112b8 --- /dev/null +++ b/purchase_request_analytic/__manifest__.py @@ -0,0 +1,16 @@ +# -*- coding: utf-8 -*- +# Copyright 2019 Eficent Business and IT Consulting Services S.L. +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). + +{ + "name": "Purchase Request Analytic", + "version": "10.0.1.0.0", + 'author': "Eficent, Odoo Community Association (OCA)", + "category": "Purchase Management", + "website": "https://github.com/OCA/account-analytic", + "depends": ["purchase_request" + ], + "data": ["views/purchase_request_views.xml"], + "license": "AGPL-3", + "installable": True +} \ No newline at end of file diff --git a/purchase_request_analytic/models/__init__.py b/purchase_request_analytic/models/__init__.py new file mode 100644 index 0000000000..95329d38ce --- /dev/null +++ b/purchase_request_analytic/models/__init__.py @@ -0,0 +1 @@ +from . import purchase_request \ No newline at end of file diff --git a/purchase_request_analytic/models/purchase_request.py b/purchase_request_analytic/models/purchase_request.py new file mode 100644 index 0000000000..a4e0e0977f --- /dev/null +++ b/purchase_request_analytic/models/purchase_request.py @@ -0,0 +1,86 @@ +# -*- coding: utf-8 -*- +# Copyright 2019 Eficent Business and IT Consulting Services S.L. +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). + +from odoo import _, api, fields, models +from odoo.exceptions import ValidationError + + +class PurchaseRequest(models.Model): + _inherit = 'purchase.request' + + analytic_account_id2 = fields.Many2one( + comodel_name='account.analytic.account', + string='Contract / Analytic', + help='Use to store the value of analytic_account if there is no lines') + analytic_account_id = fields.Many2one( + compute='_compute_analytic_account_id', + inverse='_inverse_analytic_account_id', + comodel_name='account.analytic.account', + string='Contract / Analytic', readonly=True, + states={'draft': [('readonly', False)]}, + store=True, + help="The analytic account related to a sales order.") + + @api.multi + @api.depends('line_ids.analytic_account_id') + def _compute_analytic_account_id(self): + """ If all purchase request lines have same analytic account set + analytic_account_id + """ + for pr in self: + al = pr.analytic_account_id2 + if pr.line_ids: + al = pr.line_ids[0].analytic_account_id or False + for prl in pr.line_ids: + if prl.analytic_account_id != al: + al = False + break + pr.analytic_account_id = al + + @api.multi + def _inverse_analytic_account_id(self): + """ If analytic_account is set on PR, propagate it to all purchase + request lines + """ + for pr in self: + if pr.analytic_account_id: + pr.line_ids.write({ + 'analytic_account_id': pr.analytic_account_id.id + }) + pr.analytic_account_id2 = pr.analytic_account_id + + @api.onchange('analytic_account_id') + def _onchange_analytic_account_id(self): + """ When analytic_account_id is changed, set analytic account on all + purchase request lines. + Do it in one operation to avoid to recompute the + analytic_account_id field during the change. + In case of new record, nothing is recomputed to avoid ugly message + """ + res = [] + for prl in self.line_ids: + if isinstance(prl.id, int): + res.append((1, prl.id, { + 'analytic_account_id': self.analytic_account_id.id + })) + else: + # this is new record, do nothing ! + return + self.analytic_account_id2 = self.analytic_account_id + self.line_ids = res + + @api.constrains('picking_type_id') + def check_picking_type(self): + """ If the analytic_account_id has a value, then all purchase request + lines have the same analytic_account_id. Otherwise, the lines are + empty or have different values. If it's empty, the value by default + will be Receptions. + """ + + if not self.analytic_account_id and \ + self.line_ids.mapped('analytic_account_id'): + raise ValidationError(_( + 'All purchase request lines must have the same analytic ' + 'account' + )) diff --git a/purchase_request_analytic/views/purchase_request_views.xml b/purchase_request_analytic/views/purchase_request_views.xml new file mode 100644 index 0000000000..a93e105077 --- /dev/null +++ b/purchase_request_analytic/views/purchase_request_views.xml @@ -0,0 +1,45 @@ + + + + purchase.request.analytic.tree + purchase.request + + + + + + + + + + purchase.request.analytic.form + purchase.request + + + + + + + + + {'default_account_analytic_id': analytic_account_id} + + + + + + + purchase.request.search + purchase.request + + + + + + + + + + + \ No newline at end of file From 438a1fa4f76cc9cce4fb36c48a10aed935fbc92d Mon Sep 17 00:00:00 2001 From: Aaron Henriquez Date: Thu, 9 May 2019 18:18:34 +0200 Subject: [PATCH 02/23] [FIX]do not restrict picking type for analytic. [IMP]add tests --- purchase_request_analytic/__manifest__.py | 2 +- .../models/purchase_request.py | 19 +------ purchase_request_analytic/tests/__init__.py | 3 ++ .../tests/test_purchase_request_analytic.py | 51 +++++++++++++++++++ 4 files changed, 56 insertions(+), 19 deletions(-) create mode 100644 purchase_request_analytic/tests/__init__.py create mode 100644 purchase_request_analytic/tests/test_purchase_request_analytic.py diff --git a/purchase_request_analytic/__manifest__.py b/purchase_request_analytic/__manifest__.py index ca862112b8..2df45e4807 100644 --- a/purchase_request_analytic/__manifest__.py +++ b/purchase_request_analytic/__manifest__.py @@ -13,4 +13,4 @@ "data": ["views/purchase_request_views.xml"], "license": "AGPL-3", "installable": True -} \ No newline at end of file +} diff --git a/purchase_request_analytic/models/purchase_request.py b/purchase_request_analytic/models/purchase_request.py index a4e0e0977f..83e928bec2 100644 --- a/purchase_request_analytic/models/purchase_request.py +++ b/purchase_request_analytic/models/purchase_request.py @@ -2,8 +2,7 @@ # Copyright 2019 Eficent Business and IT Consulting Services S.L. # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). -from odoo import _, api, fields, models -from odoo.exceptions import ValidationError +from odoo import api, fields, models class PurchaseRequest(models.Model): @@ -11,7 +10,6 @@ class PurchaseRequest(models.Model): analytic_account_id2 = fields.Many2one( comodel_name='account.analytic.account', - string='Contract / Analytic', help='Use to store the value of analytic_account if there is no lines') analytic_account_id = fields.Many2one( compute='_compute_analytic_account_id', @@ -69,18 +67,3 @@ def _onchange_analytic_account_id(self): return self.analytic_account_id2 = self.analytic_account_id self.line_ids = res - - @api.constrains('picking_type_id') - def check_picking_type(self): - """ If the analytic_account_id has a value, then all purchase request - lines have the same analytic_account_id. Otherwise, the lines are - empty or have different values. If it's empty, the value by default - will be Receptions. - """ - - if not self.analytic_account_id and \ - self.line_ids.mapped('analytic_account_id'): - raise ValidationError(_( - 'All purchase request lines must have the same analytic ' - 'account' - )) diff --git a/purchase_request_analytic/tests/__init__.py b/purchase_request_analytic/tests/__init__.py new file mode 100644 index 0000000000..677a776d5c --- /dev/null +++ b/purchase_request_analytic/tests/__init__.py @@ -0,0 +1,3 @@ +# -*- coding: utf-8 -*- + +from . import test_purchase_request_analytic diff --git a/purchase_request_analytic/tests/test_purchase_request_analytic.py b/purchase_request_analytic/tests/test_purchase_request_analytic.py new file mode 100644 index 0000000000..a5e96f8c4a --- /dev/null +++ b/purchase_request_analytic/tests/test_purchase_request_analytic.py @@ -0,0 +1,51 @@ +# -*- coding: utf-8 -*- +# Copyright 2019 Eficent Business and IT Consulting Services S.L. +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). + +import odoo.tests.common as common + + +class TestPurchaseRequestAnalytic(common.TransactionCase): + + def setUp(self): + super(TestPurchaseRequestAnalytic, self).setUp() + self.anal_id = self.env['account.analytic.account'].create({ + 'name': 'Account Analytic for Tests' + }) + + def test_analytic_account(self): + """ Create a purchase order with line + Set analytic account on purchase + Check analytic account on line is set + """ + product_id = self.env.ref('product.product_product_9') + pr = self.env['purchase.request'].create( + {'partner_id': self.env.ref('base.res_partner_12').id, + 'line_ids': [ + (0, 0, { + 'name': product_id.name, + 'product_id': product_id.id, + 'product_qty': 1.0, + 'product_uom': self.env.ref( + 'product.product_uom_unit').id, + })], + }) + + pr.analytic_account_id = self.anal_id.id + self.assertEqual(pr.analytic_account_id.id, + self.anal_id.id) + self.assertEqual(pr.line_ids.analytic_account_id.id, + self.anal_id.id) + + def test_analytic(self): + """ Create a purchase order without line + Set analytic account on purchase + Check analytic account is on purchase + """ + pr = self.env['purchase.request'].new( + {'partner_id': self.env.ref('base.res_partner_12').id, + 'analytic_account_id': self.anal_id.id + }) + pr._onchange_analytic_account_id() + self.assertEqual(pr.analytic_account_id.id, + self.anal_id.id) From 4259b707db668a50e4eefd1c0cb344ed950dd93d Mon Sep 17 00:00:00 2001 From: oca-travis Date: Tue, 29 Oct 2019 17:19:11 +0000 Subject: [PATCH 03/23] [UPD] Update purchase_request_analytic.pot --- .../i18n/purchase_request_analytic.pot | 45 +++++++++++++++++++ 1 file changed, 45 insertions(+) create mode 100644 purchase_request_analytic/i18n/purchase_request_analytic.pot diff --git a/purchase_request_analytic/i18n/purchase_request_analytic.pot b/purchase_request_analytic/i18n/purchase_request_analytic.pot new file mode 100644 index 0000000000..a961e5105b --- /dev/null +++ b/purchase_request_analytic/i18n/purchase_request_analytic.pot @@ -0,0 +1,45 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * purchase_request_analytic +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 10.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: purchase_request_analytic +#: model:ir.model.fields,field_description:purchase_request_analytic.field_purchase_request_analytic_account_id2 +msgid "Analytic account id2" +msgstr "" + +#. module: purchase_request_analytic +#: model:ir.model.fields,field_description:purchase_request_analytic.field_purchase_request_analytic_account_id +msgid "Contract / Analytic" +msgstr "" + +#. module: purchase_request_analytic +#: model:ir.ui.view,arch_db:purchase_request_analytic.view_purchase_request_search +msgid "Contract/Analytic" +msgstr "" + +#. module: purchase_request_analytic +#: model:ir.model,name:purchase_request_analytic.model_purchase_request +msgid "Purchase Request" +msgstr "" + +#. module: purchase_request_analytic +#: model:ir.model.fields,help:purchase_request_analytic.field_purchase_request_analytic_account_id +msgid "The analytic account related to a sales order." +msgstr "" + +#. module: purchase_request_analytic +#: model:ir.model.fields,help:purchase_request_analytic.field_purchase_request_analytic_account_id2 +msgid "Use to store the value of analytic_account if there is no lines" +msgstr "" + From 91905657fe015baa64b0835d4a9a36040caf5da8 Mon Sep 17 00:00:00 2001 From: OCA-git-bot Date: Tue, 29 Oct 2019 18:20:31 +0000 Subject: [PATCH 04/23] [ADD] icon.png --- .../static/description/icon.png | Bin 0 -> 9455 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 purchase_request_analytic/static/description/icon.png diff --git a/purchase_request_analytic/static/description/icon.png b/purchase_request_analytic/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 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 a2b552112322d179454e01ec2dc9d7dca66733c2 Mon Sep 17 00:00:00 2001 From: mreficent Date: Tue, 29 Oct 2019 19:49:39 +0100 Subject: [PATCH 05/23] [MIG] purchase_request_analytic: Migration to 12.0 --- purchase_request_analytic/README.rst | 26 +++++++++++++------ purchase_request_analytic/__manifest__.py | 8 +++--- .../i18n/purchase_request_analytic.pot | 2 +- purchase_request_analytic/models/__init__.py | 2 +- .../models/purchase_request.py | 3 +-- .../readme/CONTRIBUTORS.rst | 1 + .../readme/DESCRIPTION.rst | 1 + purchase_request_analytic/readme/USAGE.rst | 1 + purchase_request_analytic/tests/__init__.py | 2 -- .../tests/test_purchase_request_analytic.py | 7 +++-- .../views/purchase_request_views.xml | 9 ++++--- 11 files changed, 36 insertions(+), 26 deletions(-) create mode 100644 purchase_request_analytic/readme/CONTRIBUTORS.rst create mode 100644 purchase_request_analytic/readme/DESCRIPTION.rst create mode 100644 purchase_request_analytic/readme/USAGE.rst diff --git a/purchase_request_analytic/README.rst b/purchase_request_analytic/README.rst index 3ccfa2809b..446e29cf82 100644 --- a/purchase_request_analytic/README.rst +++ b/purchase_request_analytic/README.rst @@ -1,32 +1,42 @@ -.. image:: https://img.shields.io/badge/licence-AGPL--3-blue.svg - :alt: License AGPL-3 +.. image:: https://img.shields.io/badge/license-AGPL--3-blue.png + :target: https://www.gnu.org/licenses/agpl + :alt: License: AGPL-3 ========================= Purchase Request Analytic ========================= -This module adds the analytic account field to Purchase Requests. + +This module adds the analytic account field to Purchase Requests. Usage ===== -* Assign an analytic account to the purchase request or to purchase request lines +* Assign an analytic account to the purchase request or to purchase request lines. Credits ======= +Images +------ + +* Odoo Community Association: `Icon `_. + Contributors ------------ * Beñat Jimenez - Maintainer ---------- -.. image:: http://odoo-community.org/logo.png +.. image:: https://odoo-community.org/logo.png :alt: Odoo Community Association - :target: http://odoo-community.org + :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. \ No newline at end of file +promote its widespread use. + +To contribute to this module, please visit https://odoo-community.org. diff --git a/purchase_request_analytic/__manifest__.py b/purchase_request_analytic/__manifest__.py index 2df45e4807..dc79ca57a4 100644 --- a/purchase_request_analytic/__manifest__.py +++ b/purchase_request_analytic/__manifest__.py @@ -1,15 +1,15 @@ -# -*- coding: utf-8 -*- # Copyright 2019 Eficent Business and IT Consulting Services S.L. # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). { "name": "Purchase Request Analytic", - "version": "10.0.1.0.0", + "version": "12.0.1.0.0", 'author': "Eficent, Odoo Community Association (OCA)", "category": "Purchase Management", "website": "https://github.com/OCA/account-analytic", - "depends": ["purchase_request" - ], + "depends": [ + "purchase_request", + ], "data": ["views/purchase_request_views.xml"], "license": "AGPL-3", "installable": True diff --git a/purchase_request_analytic/i18n/purchase_request_analytic.pot b/purchase_request_analytic/i18n/purchase_request_analytic.pot index a961e5105b..01dc501849 100644 --- a/purchase_request_analytic/i18n/purchase_request_analytic.pot +++ b/purchase_request_analytic/i18n/purchase_request_analytic.pot @@ -4,7 +4,7 @@ # msgid "" msgstr "" -"Project-Id-Version: Odoo Server 10.0\n" +"Project-Id-Version: Odoo Server 12.0\n" "Report-Msgid-Bugs-To: \n" "Last-Translator: <>\n" "Language-Team: \n" diff --git a/purchase_request_analytic/models/__init__.py b/purchase_request_analytic/models/__init__.py index 95329d38ce..91be581c56 100644 --- a/purchase_request_analytic/models/__init__.py +++ b/purchase_request_analytic/models/__init__.py @@ -1 +1 @@ -from . import purchase_request \ No newline at end of file +from . import purchase_request diff --git a/purchase_request_analytic/models/purchase_request.py b/purchase_request_analytic/models/purchase_request.py index 83e928bec2..67de3bedac 100644 --- a/purchase_request_analytic/models/purchase_request.py +++ b/purchase_request_analytic/models/purchase_request.py @@ -1,4 +1,3 @@ -# -*- coding: utf-8 -*- # Copyright 2019 Eficent Business and IT Consulting Services S.L. # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). @@ -15,7 +14,7 @@ class PurchaseRequest(models.Model): compute='_compute_analytic_account_id', inverse='_inverse_analytic_account_id', comodel_name='account.analytic.account', - string='Contract / Analytic', readonly=True, + string='Analytic Account', readonly=True, states={'draft': [('readonly', False)]}, store=True, help="The analytic account related to a sales order.") diff --git a/purchase_request_analytic/readme/CONTRIBUTORS.rst b/purchase_request_analytic/readme/CONTRIBUTORS.rst new file mode 100644 index 0000000000..ef5e5f8fea --- /dev/null +++ b/purchase_request_analytic/readme/CONTRIBUTORS.rst @@ -0,0 +1 @@ +* Beñat Jimenez diff --git a/purchase_request_analytic/readme/DESCRIPTION.rst b/purchase_request_analytic/readme/DESCRIPTION.rst new file mode 100644 index 0000000000..7910de960d --- /dev/null +++ b/purchase_request_analytic/readme/DESCRIPTION.rst @@ -0,0 +1 @@ +This module adds the analytic account field to Purchase Requests. diff --git a/purchase_request_analytic/readme/USAGE.rst b/purchase_request_analytic/readme/USAGE.rst new file mode 100644 index 0000000000..d90de9636c --- /dev/null +++ b/purchase_request_analytic/readme/USAGE.rst @@ -0,0 +1 @@ +* Assign an analytic account to the purchase request or to purchase request lines. diff --git a/purchase_request_analytic/tests/__init__.py b/purchase_request_analytic/tests/__init__.py index 677a776d5c..278e1dc2f6 100644 --- a/purchase_request_analytic/tests/__init__.py +++ b/purchase_request_analytic/tests/__init__.py @@ -1,3 +1 @@ -# -*- coding: utf-8 -*- - from . import test_purchase_request_analytic diff --git a/purchase_request_analytic/tests/test_purchase_request_analytic.py b/purchase_request_analytic/tests/test_purchase_request_analytic.py index a5e96f8c4a..2e09c39aef 100644 --- a/purchase_request_analytic/tests/test_purchase_request_analytic.py +++ b/purchase_request_analytic/tests/test_purchase_request_analytic.py @@ -1,11 +1,10 @@ -# -*- coding: utf-8 -*- # Copyright 2019 Eficent Business and IT Consulting Services S.L. # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). -import odoo.tests.common as common +from odoo.tests.common import TransactionCase -class TestPurchaseRequestAnalytic(common.TransactionCase): +class TestPurchaseRequestAnalytic(TransactionCase): def setUp(self): super(TestPurchaseRequestAnalytic, self).setUp() @@ -27,7 +26,7 @@ def test_analytic_account(self): 'product_id': product_id.id, 'product_qty': 1.0, 'product_uom': self.env.ref( - 'product.product_uom_unit').id, + 'uom.product_uom_unit').id, })], }) diff --git a/purchase_request_analytic/views/purchase_request_views.xml b/purchase_request_analytic/views/purchase_request_views.xml index a93e105077..9242d4bc41 100644 --- a/purchase_request_analytic/views/purchase_request_views.xml +++ b/purchase_request_analytic/views/purchase_request_views.xml @@ -6,7 +6,7 @@ - + @@ -19,11 +19,11 @@ - - {'default_account_analytic_id': analytic_account_id} + {'default_analytic_account_id': analytic_account_id} @@ -35,7 +35,8 @@ - + From bc03830a7ab27159a696d252b36754edcbb676a9 Mon Sep 17 00:00:00 2001 From: oca-travis Date: Tue, 5 Nov 2019 12:26:56 +0000 Subject: [PATCH 06/23] [UPD] Update purchase_request_analytic.pot --- .../i18n/purchase_request_analytic.pot | 18 +++++++----------- 1 file changed, 7 insertions(+), 11 deletions(-) diff --git a/purchase_request_analytic/i18n/purchase_request_analytic.pot b/purchase_request_analytic/i18n/purchase_request_analytic.pot index 01dc501849..a8aded6b61 100644 --- a/purchase_request_analytic/i18n/purchase_request_analytic.pot +++ b/purchase_request_analytic/i18n/purchase_request_analytic.pot @@ -14,18 +14,14 @@ msgstr "" "Plural-Forms: \n" #. module: purchase_request_analytic -#: model:ir.model.fields,field_description:purchase_request_analytic.field_purchase_request_analytic_account_id2 -msgid "Analytic account id2" +#: model:ir.model.fields,field_description:purchase_request_analytic.field_purchase_request__analytic_account_id +#: model_terms:ir.ui.view,arch_db:purchase_request_analytic.view_purchase_request_search +msgid "Analytic Account" msgstr "" #. module: purchase_request_analytic -#: model:ir.model.fields,field_description:purchase_request_analytic.field_purchase_request_analytic_account_id -msgid "Contract / Analytic" -msgstr "" - -#. module: purchase_request_analytic -#: model:ir.ui.view,arch_db:purchase_request_analytic.view_purchase_request_search -msgid "Contract/Analytic" +#: model:ir.model.fields,field_description:purchase_request_analytic.field_purchase_request__analytic_account_id2 +msgid "Analytic Account Id2" msgstr "" #. module: purchase_request_analytic @@ -34,12 +30,12 @@ msgid "Purchase Request" msgstr "" #. module: purchase_request_analytic -#: model:ir.model.fields,help:purchase_request_analytic.field_purchase_request_analytic_account_id +#: model:ir.model.fields,help:purchase_request_analytic.field_purchase_request__analytic_account_id msgid "The analytic account related to a sales order." msgstr "" #. module: purchase_request_analytic -#: model:ir.model.fields,help:purchase_request_analytic.field_purchase_request_analytic_account_id2 +#: model:ir.model.fields,help:purchase_request_analytic.field_purchase_request__analytic_account_id2 msgid "Use to store the value of analytic_account if there is no lines" msgstr "" From 45735e1061a3b5c551052064eba8383554aa1756 Mon Sep 17 00:00:00 2001 From: OCA-git-bot Date: Tue, 5 Nov 2019 13:13:46 +0000 Subject: [PATCH 07/23] [UPD] README.rst --- purchase_request_analytic/README.rst | 62 ++- .../static/description/index.html | 426 ++++++++++++++++++ 2 files changed, 475 insertions(+), 13 deletions(-) create mode 100644 purchase_request_analytic/static/description/index.html diff --git a/purchase_request_analytic/README.rst b/purchase_request_analytic/README.rst index 446e29cf82..b1ff40cb95 100644 --- a/purchase_request_analytic/README.rst +++ b/purchase_request_analytic/README.rst @@ -1,42 +1,78 @@ -.. image:: https://img.shields.io/badge/license-AGPL--3-blue.png - :target: https://www.gnu.org/licenses/agpl - :alt: License: AGPL-3 - ========================= Purchase Request Analytic ========================= +.. !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + !! 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%2Faccount--analytic-lightgray.png?logo=github + :target: https://github.com/OCA/account-analytic/tree/12.0/purchase_request_analytic + :alt: OCA/account-analytic +.. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png + :target: https://translation.odoo-community.org/projects/account-analytic-12-0/account-analytic-12-0-purchase_request_analytic + :alt: Translate me on Weblate +.. |badge5| image:: https://img.shields.io/badge/runbot-Try%20me-875A7B.png + :target: https://runbot.odoo-community.org/runbot/87/12.0 + :alt: Try me on Runbot + +|badge1| |badge2| |badge3| |badge4| |badge5| + This module adds the analytic account field to Purchase Requests. +**Table of contents** + +.. contents:: + :local: + Usage ===== * Assign an analytic account to the purchase request or to purchase request lines. +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 ======= -Images ------- +Authors +~~~~~~~ -* Odoo Community Association: `Icon `_. +* Eficent Contributors ------------- +~~~~~~~~~~~~ * Beñat Jimenez -Maintainer ----------- +Maintainers +~~~~~~~~~~~ + +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. +This module is part of the `OCA/account-analytic `_ project on GitHub. + +You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute. diff --git a/purchase_request_analytic/static/description/index.html b/purchase_request_analytic/static/description/index.html new file mode 100644 index 0000000000..babb57dd5a --- /dev/null +++ b/purchase_request_analytic/static/description/index.html @@ -0,0 +1,426 @@ + + + + + + +Purchase Request Analytic + + + +
+

Purchase Request Analytic

+ + +

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

+

This module adds the analytic account field to Purchase Requests.

+

Table of contents

+ +
+

Usage

+
    +
  • Assign an analytic account to the purchase request or to purchase request lines.
  • +
+
+
+

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

+
    +
  • Eficent
  • +
+
+
+

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.

+

This module is part of the OCA/account-analytic project on GitHub.

+

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

+
+
+
+ + From fbafc2d9dd41b1b4842ea5108fea9a5edb413493 Mon Sep 17 00:00:00 2001 From: ps-tubtim Date: Wed, 8 Jan 2020 17:11:59 +0700 Subject: [PATCH 08/23] [IMP] purchase_request_analytic: black, isort --- purchase_request_analytic/__manifest__.py | 10 ++-- .../models/purchase_request.py | 35 ++++++------ .../tests/test_purchase_request_analytic.py | 56 ++++++++++--------- .../views/purchase_request_views.xml | 38 ++++++++----- 4 files changed, 76 insertions(+), 63 deletions(-) diff --git a/purchase_request_analytic/__manifest__.py b/purchase_request_analytic/__manifest__.py index dc79ca57a4..05187f0728 100644 --- a/purchase_request_analytic/__manifest__.py +++ b/purchase_request_analytic/__manifest__.py @@ -3,14 +3,12 @@ { "name": "Purchase Request Analytic", - "version": "12.0.1.0.0", - 'author': "Eficent, Odoo Community Association (OCA)", + "version": "13.0.1.0.0", + "author": "Eficent, Odoo Community Association (OCA)", "category": "Purchase Management", "website": "https://github.com/OCA/account-analytic", - "depends": [ - "purchase_request", - ], + "depends": ["purchase_request"], "data": ["views/purchase_request_views.xml"], "license": "AGPL-3", - "installable": True + "installable": True, } diff --git a/purchase_request_analytic/models/purchase_request.py b/purchase_request_analytic/models/purchase_request.py index 67de3bedac..efee88222d 100644 --- a/purchase_request_analytic/models/purchase_request.py +++ b/purchase_request_analytic/models/purchase_request.py @@ -5,22 +5,25 @@ class PurchaseRequest(models.Model): - _inherit = 'purchase.request' + _inherit = "purchase.request" analytic_account_id2 = fields.Many2one( - comodel_name='account.analytic.account', - help='Use to store the value of analytic_account if there is no lines') + comodel_name="account.analytic.account", + help="Use to store the value of analytic_account if there is no lines", + ) analytic_account_id = fields.Many2one( - compute='_compute_analytic_account_id', - inverse='_inverse_analytic_account_id', - comodel_name='account.analytic.account', - string='Analytic Account', readonly=True, - states={'draft': [('readonly', False)]}, + compute="_compute_analytic_account_id", + inverse="_inverse_analytic_account_id", + comodel_name="account.analytic.account", + string="Analytic Account", + readonly=True, + states={"draft": [("readonly", False)]}, store=True, - help="The analytic account related to a sales order.") + help="The analytic account related to a sales order.", + ) @api.multi - @api.depends('line_ids.analytic_account_id') + @api.depends("line_ids.analytic_account_id") def _compute_analytic_account_id(self): """ If all purchase request lines have same analytic account set analytic_account_id @@ -42,12 +45,10 @@ def _inverse_analytic_account_id(self): """ for pr in self: if pr.analytic_account_id: - pr.line_ids.write({ - 'analytic_account_id': pr.analytic_account_id.id - }) + pr.line_ids.write({"analytic_account_id": pr.analytic_account_id.id}) pr.analytic_account_id2 = pr.analytic_account_id - @api.onchange('analytic_account_id') + @api.onchange("analytic_account_id") def _onchange_analytic_account_id(self): """ When analytic_account_id is changed, set analytic account on all purchase request lines. @@ -58,9 +59,9 @@ def _onchange_analytic_account_id(self): res = [] for prl in self.line_ids: if isinstance(prl.id, int): - res.append((1, prl.id, { - 'analytic_account_id': self.analytic_account_id.id - })) + res.append( + (1, prl.id, {"analytic_account_id": self.analytic_account_id.id}) + ) else: # this is new record, do nothing ! return diff --git a/purchase_request_analytic/tests/test_purchase_request_analytic.py b/purchase_request_analytic/tests/test_purchase_request_analytic.py index 2e09c39aef..de408deae2 100644 --- a/purchase_request_analytic/tests/test_purchase_request_analytic.py +++ b/purchase_request_analytic/tests/test_purchase_request_analytic.py @@ -5,46 +5,50 @@ class TestPurchaseRequestAnalytic(TransactionCase): - def setUp(self): super(TestPurchaseRequestAnalytic, self).setUp() - self.anal_id = self.env['account.analytic.account'].create({ - 'name': 'Account Analytic for Tests' - }) + self.anal_id = self.env["account.analytic.account"].create( + {"name": "Account Analytic for Tests"} + ) def test_analytic_account(self): """ Create a purchase order with line Set analytic account on purchase Check analytic account on line is set """ - product_id = self.env.ref('product.product_product_9') - pr = self.env['purchase.request'].create( - {'partner_id': self.env.ref('base.res_partner_12').id, - 'line_ids': [ - (0, 0, { - 'name': product_id.name, - 'product_id': product_id.id, - 'product_qty': 1.0, - 'product_uom': self.env.ref( - 'uom.product_uom_unit').id, - })], - }) + product_id = self.env.ref("product.product_product_9") + pr = self.env["purchase.request"].create( + { + "partner_id": self.env.ref("base.res_partner_12").id, + "line_ids": [ + ( + 0, + 0, + { + "name": product_id.name, + "product_id": product_id.id, + "product_qty": 1.0, + "product_uom": self.env.ref("uom.product_uom_unit").id, + }, + ) + ], + } + ) pr.analytic_account_id = self.anal_id.id - self.assertEqual(pr.analytic_account_id.id, - self.anal_id.id) - self.assertEqual(pr.line_ids.analytic_account_id.id, - self.anal_id.id) + self.assertEqual(pr.analytic_account_id.id, self.anal_id.id) + self.assertEqual(pr.line_ids.analytic_account_id.id, self.anal_id.id) def test_analytic(self): """ Create a purchase order without line Set analytic account on purchase Check analytic account is on purchase """ - pr = self.env['purchase.request'].new( - {'partner_id': self.env.ref('base.res_partner_12').id, - 'analytic_account_id': self.anal_id.id - }) + pr = self.env["purchase.request"].new( + { + "partner_id": self.env.ref("base.res_partner_12").id, + "analytic_account_id": self.anal_id.id, + } + ) pr._onchange_analytic_account_id() - self.assertEqual(pr.analytic_account_id.id, - self.anal_id.id) + self.assertEqual(pr.analytic_account_id.id, self.anal_id.id) diff --git a/purchase_request_analytic/views/purchase_request_views.xml b/purchase_request_analytic/views/purchase_request_views.xml index 9242d4bc41..efed2b706f 100644 --- a/purchase_request_analytic/views/purchase_request_views.xml +++ b/purchase_request_analytic/views/purchase_request_views.xml @@ -1,46 +1,56 @@ - + purchase.request.analytic.tree purchase.request - + - + - purchase.request.analytic.form purchase.request - + - + - {'default_analytic_account_id': analytic_account_id} + {'default_analytic_account_id': analytic_account_id} - purchase.request.search purchase.request - + - + - + - \ No newline at end of file + From d823bb88d90079c195378de295a2ee273e720563 Mon Sep 17 00:00:00 2001 From: ps-tubtim Date: Tue, 24 Mar 2020 16:33:14 +0700 Subject: [PATCH 09/23] [MIG] purchase_request_analytic: Migration to 13.0 --- purchase_request_analytic/README.rst | 35 +++++++++-- .../models/purchase_request.py | 2 - .../readme/CONTRIBUTORS.rst | 1 + purchase_request_analytic/readme/HISTORY.rst | 20 +++++++ .../static/description/index.html | 58 ++++++++++++++----- .../tests/test_purchase_request_analytic.py | 9 +-- 6 files changed, 97 insertions(+), 28 deletions(-) create mode 100644 purchase_request_analytic/readme/HISTORY.rst diff --git a/purchase_request_analytic/README.rst b/purchase_request_analytic/README.rst index b1ff40cb95..1d4fb0f909 100644 --- a/purchase_request_analytic/README.rst +++ b/purchase_request_analytic/README.rst @@ -14,13 +14,13 @@ Purchase Request Analytic :target: http://www.gnu.org/licenses/agpl-3.0-standalone.html :alt: License: AGPL-3 .. |badge3| image:: https://img.shields.io/badge/github-OCA%2Faccount--analytic-lightgray.png?logo=github - :target: https://github.com/OCA/account-analytic/tree/12.0/purchase_request_analytic + :target: https://github.com/OCA/account-analytic/tree/13.0/purchase_request_analytic :alt: OCA/account-analytic .. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png - :target: https://translation.odoo-community.org/projects/account-analytic-12-0/account-analytic-12-0-purchase_request_analytic + :target: https://translation.odoo-community.org/projects/account-analytic-13-0/account-analytic-13-0-purchase_request_analytic :alt: Translate me on Weblate .. |badge5| image:: https://img.shields.io/badge/runbot-Try%20me-875A7B.png - :target: https://runbot.odoo-community.org/runbot/87/12.0 + :target: https://runbot.odoo-community.org/runbot/87/13.0 :alt: Try me on Runbot |badge1| |badge2| |badge3| |badge4| |badge5| @@ -37,13 +37,37 @@ Usage * Assign an analytic account to the purchase request or to purchase request lines. +Changelog +========= + +13.0.1.0.0 (2020-01-08) +~~~~~~~~~~~~~~~~~~~~~~~ + +Migrated to odoo 13. + +12.0.1.0.0 (2019-10-30) +~~~~~~~~~~~~~~~~~~~~~~~ + +Migrated to odoo 12. + +10.0.1.0.1 (2019-05-09) +~~~~~~~~~~~~~~~~~~~~~~~ + +[FIX] Do not restrict picking type for analytic. +[IMP] Add tests. + +10.0.1.0.0 (2019-04-29) +~~~~~~~~~~~~~~~~~~~~~~~ + +First version. + 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. @@ -59,6 +83,7 @@ Contributors ~~~~~~~~~~~~ * Beñat Jimenez +* Pimolnat Suntian Maintainers ~~~~~~~~~~~ @@ -73,6 +98,6 @@ OCA, or the Odoo Community Association, is a nonprofit organization whose mission is to support the collaborative development of Odoo features and promote its widespread use. -This module is part of the `OCA/account-analytic `_ project on GitHub. +This module is part of the `OCA/account-analytic `_ project on GitHub. You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute. diff --git a/purchase_request_analytic/models/purchase_request.py b/purchase_request_analytic/models/purchase_request.py index efee88222d..5b9cd800bf 100644 --- a/purchase_request_analytic/models/purchase_request.py +++ b/purchase_request_analytic/models/purchase_request.py @@ -22,7 +22,6 @@ class PurchaseRequest(models.Model): help="The analytic account related to a sales order.", ) - @api.multi @api.depends("line_ids.analytic_account_id") def _compute_analytic_account_id(self): """ If all purchase request lines have same analytic account set @@ -38,7 +37,6 @@ def _compute_analytic_account_id(self): break pr.analytic_account_id = al - @api.multi def _inverse_analytic_account_id(self): """ If analytic_account is set on PR, propagate it to all purchase request lines diff --git a/purchase_request_analytic/readme/CONTRIBUTORS.rst b/purchase_request_analytic/readme/CONTRIBUTORS.rst index ef5e5f8fea..57aa7e6644 100644 --- a/purchase_request_analytic/readme/CONTRIBUTORS.rst +++ b/purchase_request_analytic/readme/CONTRIBUTORS.rst @@ -1 +1,2 @@ * Beñat Jimenez +* Pimolnat Suntian diff --git a/purchase_request_analytic/readme/HISTORY.rst b/purchase_request_analytic/readme/HISTORY.rst new file mode 100644 index 0000000000..abc36de86d --- /dev/null +++ b/purchase_request_analytic/readme/HISTORY.rst @@ -0,0 +1,20 @@ +13.0.1.0.0 (2020-01-08) +~~~~~~~~~~~~~~~~~~~~~~~ + +Migrated to odoo 13. + +12.0.1.0.0 (2019-10-30) +~~~~~~~~~~~~~~~~~~~~~~~ + +Migrated to odoo 12. + +10.0.1.0.1 (2019-05-09) +~~~~~~~~~~~~~~~~~~~~~~~ + +[FIX] Do not restrict picking type for analytic. +[IMP] Add tests. + +10.0.1.0.0 (2019-04-29) +~~~~~~~~~~~~~~~~~~~~~~~ + +First version. diff --git a/purchase_request_analytic/static/description/index.html b/purchase_request_analytic/static/description/index.html index babb57dd5a..c7f8144645 100644 --- a/purchase_request_analytic/static/description/index.html +++ b/purchase_request_analytic/static/description/index.html @@ -367,57 +367,85 @@

Purchase Request Analytic

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

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

+

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

This module adds the analytic account field to Purchase Requests.

Table of contents

-

Usage

+

Usage

  • Assign an analytic account to the purchase request or to purchase request lines.
+
+

Changelog

+
+

13.0.1.0.0 (2020-01-08)

+

Migrated to odoo 13.

+
+
+

12.0.1.0.0 (2019-10-30)

+

Migrated to odoo 12.

+
+
+

10.0.1.0.1 (2019-05-09)

+

[FIX] Do not restrict picking type for analytic. +[IMP] Add tests.

+
+
+

10.0.1.0.0 (2019-04-29)

+

First version.

+
+
-

Bug Tracker

+

Bug Tracker

Bugs are tracked on GitHub Issues. In case of trouble, please check there if your issue has already been reported. If you spotted it first, help us smashing 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

  • Eficent
-

Maintainers

+

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.

-

This module is part of the OCA/account-analytic project on GitHub.

+

This module is part of the OCA/account-analytic project on GitHub.

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

diff --git a/purchase_request_analytic/tests/test_purchase_request_analytic.py b/purchase_request_analytic/tests/test_purchase_request_analytic.py index de408deae2..18edbdd29b 100644 --- a/purchase_request_analytic/tests/test_purchase_request_analytic.py +++ b/purchase_request_analytic/tests/test_purchase_request_analytic.py @@ -19,7 +19,7 @@ def test_analytic_account(self): product_id = self.env.ref("product.product_product_9") pr = self.env["purchase.request"].create( { - "partner_id": self.env.ref("base.res_partner_12").id, + "requested_by": self.env.user.id, "line_ids": [ ( 0, @@ -28,7 +28,7 @@ def test_analytic_account(self): "name": product_id.name, "product_id": product_id.id, "product_qty": 1.0, - "product_uom": self.env.ref("uom.product_uom_unit").id, + "product_uom_id": self.env.ref("uom.product_uom_unit").id, }, ) ], @@ -45,10 +45,7 @@ def test_analytic(self): Check analytic account is on purchase """ pr = self.env["purchase.request"].new( - { - "partner_id": self.env.ref("base.res_partner_12").id, - "analytic_account_id": self.anal_id.id, - } + {"requested_by": self.env.user.id, "analytic_account_id": self.anal_id.id} ) pr._onchange_analytic_account_id() self.assertEqual(pr.analytic_account_id.id, self.anal_id.id) From db0e1f6b7b80042cad6cf355e647ac19da40ccf0 Mon Sep 17 00:00:00 2001 From: oca-travis Date: Thu, 2 Dec 2021 16:24:49 +0000 Subject: [PATCH 10/23] [UPD] Update purchase_request_analytic.pot --- .../i18n/purchase_request_analytic.pot | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/purchase_request_analytic/i18n/purchase_request_analytic.pot b/purchase_request_analytic/i18n/purchase_request_analytic.pot index a8aded6b61..df111986b8 100644 --- a/purchase_request_analytic/i18n/purchase_request_analytic.pot +++ b/purchase_request_analytic/i18n/purchase_request_analytic.pot @@ -1,12 +1,12 @@ # Translation of Odoo Server. # This file contains the translation of the following modules: -# * purchase_request_analytic +# * purchase_request_analytic # 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" @@ -38,4 +38,3 @@ msgstr "" #: model:ir.model.fields,help:purchase_request_analytic.field_purchase_request__analytic_account_id2 msgid "Use to store the value of analytic_account if there is no lines" msgstr "" - From 7530d1a8e940afdb718bc4c81432105932ec8067 Mon Sep 17 00:00:00 2001 From: Juany Davila Date: Wed, 18 May 2022 08:07:38 -0500 Subject: [PATCH 11/23] [IMP] purchase_request_analytic: black, isort, prettier --- .../models/purchase_request.py | 18 +++++++++--------- .../tests/test_purchase_request_analytic.py | 12 ++++++------ 2 files changed, 15 insertions(+), 15 deletions(-) diff --git a/purchase_request_analytic/models/purchase_request.py b/purchase_request_analytic/models/purchase_request.py index 5b9cd800bf..a1a7325991 100644 --- a/purchase_request_analytic/models/purchase_request.py +++ b/purchase_request_analytic/models/purchase_request.py @@ -24,8 +24,8 @@ class PurchaseRequest(models.Model): @api.depends("line_ids.analytic_account_id") def _compute_analytic_account_id(self): - """ If all purchase request lines have same analytic account set - analytic_account_id + """If all purchase request lines have same analytic account set + analytic_account_id """ for pr in self: al = pr.analytic_account_id2 @@ -38,8 +38,8 @@ def _compute_analytic_account_id(self): pr.analytic_account_id = al def _inverse_analytic_account_id(self): - """ If analytic_account is set on PR, propagate it to all purchase - request lines + """If analytic_account is set on PR, propagate it to all purchase + request lines """ for pr in self: if pr.analytic_account_id: @@ -48,11 +48,11 @@ def _inverse_analytic_account_id(self): @api.onchange("analytic_account_id") def _onchange_analytic_account_id(self): - """ When analytic_account_id is changed, set analytic account on all - purchase request lines. - Do it in one operation to avoid to recompute the - analytic_account_id field during the change. - In case of new record, nothing is recomputed to avoid ugly message + """When analytic_account_id is changed, set analytic account on all + purchase request lines. + Do it in one operation to avoid to recompute the + analytic_account_id field during the change. + In case of new record, nothing is recomputed to avoid ugly message """ res = [] for prl in self.line_ids: diff --git a/purchase_request_analytic/tests/test_purchase_request_analytic.py b/purchase_request_analytic/tests/test_purchase_request_analytic.py index 18edbdd29b..b4574a09e5 100644 --- a/purchase_request_analytic/tests/test_purchase_request_analytic.py +++ b/purchase_request_analytic/tests/test_purchase_request_analytic.py @@ -12,9 +12,9 @@ def setUp(self): ) def test_analytic_account(self): - """ Create a purchase order with line - Set analytic account on purchase - Check analytic account on line is set + """Create a purchase order with line + Set analytic account on purchase + Check analytic account on line is set """ product_id = self.env.ref("product.product_product_9") pr = self.env["purchase.request"].create( @@ -40,9 +40,9 @@ def test_analytic_account(self): self.assertEqual(pr.line_ids.analytic_account_id.id, self.anal_id.id) def test_analytic(self): - """ Create a purchase order without line - Set analytic account on purchase - Check analytic account is on purchase + """Create a purchase order without line + Set analytic account on purchase + Check analytic account is on purchase """ pr = self.env["purchase.request"].new( {"requested_by": self.env.user.id, "analytic_account_id": self.anal_id.id} From 9a401580e2a100d35a8491b04138fe883683cdfe Mon Sep 17 00:00:00 2001 From: Juany Davila Date: Wed, 18 May 2022 08:13:05 -0500 Subject: [PATCH 12/23] [MIG] purchase_request_analytic: Migration to 14.0 --- purchase_request_analytic/README.rst | 16 +++++++++------- purchase_request_analytic/__manifest__.py | 4 ++-- .../models/purchase_request.py | 2 +- .../readme/CONTRIBUTORS.rst | 1 + .../static/description/index.html | 9 +++++---- 5 files changed, 18 insertions(+), 14 deletions(-) diff --git a/purchase_request_analytic/README.rst b/purchase_request_analytic/README.rst index 1d4fb0f909..06275241a4 100644 --- a/purchase_request_analytic/README.rst +++ b/purchase_request_analytic/README.rst @@ -14,16 +14,16 @@ Purchase Request Analytic :target: http://www.gnu.org/licenses/agpl-3.0-standalone.html :alt: License: AGPL-3 .. |badge3| image:: https://img.shields.io/badge/github-OCA%2Faccount--analytic-lightgray.png?logo=github - :target: https://github.com/OCA/account-analytic/tree/13.0/purchase_request_analytic + :target: https://github.com/OCA/account-analytic/tree/14.0/purchase_request_analytic :alt: OCA/account-analytic .. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png - :target: https://translation.odoo-community.org/projects/account-analytic-13-0/account-analytic-13-0-purchase_request_analytic + :target: https://translation.odoo-community.org/projects/account-analytic-14-0/account-analytic-14-0-purchase_request_analytic :alt: Translate me on Weblate .. |badge5| image:: https://img.shields.io/badge/runbot-Try%20me-875A7B.png - :target: https://runbot.odoo-community.org/runbot/87/13.0 + :target: https://runbot.odoo-community.org/runbot/87/14.0 :alt: Try me on Runbot -|badge1| |badge2| |badge3| |badge4| |badge5| +|badge1| |badge2| |badge3| |badge4| |badge5| This module adds the analytic account field to Purchase Requests. @@ -67,7 +67,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. @@ -77,13 +77,15 @@ Credits Authors ~~~~~~~ -* Eficent +* ForgeFlow Contributors ~~~~~~~~~~~~ * Beñat Jimenez * Pimolnat Suntian +* Juany Davila + Maintainers ~~~~~~~~~~~ @@ -98,6 +100,6 @@ OCA, or the Odoo Community Association, is a nonprofit organization whose mission is to support the collaborative development of Odoo features and promote its widespread use. -This module is part of the `OCA/account-analytic `_ project on GitHub. +This module is part of the `OCA/account-analytic `_ project on GitHub. You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute. diff --git a/purchase_request_analytic/__manifest__.py b/purchase_request_analytic/__manifest__.py index 05187f0728..4c38eb3678 100644 --- a/purchase_request_analytic/__manifest__.py +++ b/purchase_request_analytic/__manifest__.py @@ -3,8 +3,8 @@ { "name": "Purchase Request Analytic", - "version": "13.0.1.0.0", - "author": "Eficent, Odoo Community Association (OCA)", + "version": "14.0.1.0.0", + "author": "ForgeFlow, Odoo Community Association (OCA)", "category": "Purchase Management", "website": "https://github.com/OCA/account-analytic", "depends": ["purchase_request"], diff --git a/purchase_request_analytic/models/purchase_request.py b/purchase_request_analytic/models/purchase_request.py index a1a7325991..80ee1fa701 100644 --- a/purchase_request_analytic/models/purchase_request.py +++ b/purchase_request_analytic/models/purchase_request.py @@ -1,4 +1,4 @@ -# Copyright 2019 Eficent Business and IT Consulting Services S.L. +# Copyright 2019 ForgeFlow S.L. # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). from odoo import api, fields, models diff --git a/purchase_request_analytic/readme/CONTRIBUTORS.rst b/purchase_request_analytic/readme/CONTRIBUTORS.rst index 57aa7e6644..d9c4556f74 100644 --- a/purchase_request_analytic/readme/CONTRIBUTORS.rst +++ b/purchase_request_analytic/readme/CONTRIBUTORS.rst @@ -1,2 +1,3 @@ * Beñat Jimenez * Pimolnat Suntian +* Juany Davila diff --git a/purchase_request_analytic/static/description/index.html b/purchase_request_analytic/static/description/index.html index c7f8144645..4651f7d9a4 100644 --- a/purchase_request_analytic/static/description/index.html +++ b/purchase_request_analytic/static/description/index.html @@ -3,7 +3,7 @@ - + Purchase Request Analytic