From 21f28db1bf581b6e0ba26ef0f9f2730b9e138ac0 Mon Sep 17 00:00:00 2001 From: Antonio Espinosa Date: Sat, 21 Feb 2015 20:31:12 +0100 Subject: [PATCH 01/12] Addon crm_job_position --- crm_job_position/README.rst | 13 +++ crm_job_position/__init__.py | 6 ++ crm_job_position/__openerp__.py | 39 ++++++++ crm_job_position/i18n/crm_job_position.pot | 90 ++++++++++++++++++ crm_job_position/i18n/es.po | 90 ++++++++++++++++++ crm_job_position/models/__init__.py | 8 ++ crm_job_position/models/crm_job_position.py | 20 ++++ crm_job_position/models/crm_lead.py | 26 +++++ crm_job_position/models/res_partner.py | 13 +++ crm_job_position/static/description/icon.png | Bin 0 -> 22620 bytes .../views/crm_job_position_view.xml | 30 ++++++ crm_job_position/views/crm_lead_view.xml | 86 +++++++++++++++++ crm_job_position/views/res_partner_view.xml | 48 ++++++++++ 13 files changed, 469 insertions(+) create mode 100644 crm_job_position/README.rst create mode 100644 crm_job_position/__init__.py create mode 100644 crm_job_position/__openerp__.py create mode 100644 crm_job_position/i18n/crm_job_position.pot create mode 100644 crm_job_position/i18n/es.po create mode 100644 crm_job_position/models/__init__.py create mode 100644 crm_job_position/models/crm_job_position.py create mode 100644 crm_job_position/models/crm_lead.py create mode 100644 crm_job_position/models/res_partner.py create mode 100644 crm_job_position/static/description/icon.png create mode 100644 crm_job_position/views/crm_job_position_view.xml create mode 100644 crm_job_position/views/crm_lead_view.xml create mode 100644 crm_job_position/views/res_partner_view.xml diff --git a/crm_job_position/README.rst b/crm_job_position/README.rst new file mode 100644 index 000000000..31fbf7ba6 --- /dev/null +++ b/crm_job_position/README.rst @@ -0,0 +1,13 @@ +Job positions in CRM +==================== + +This module adds the concept of job position to the CRM main objects (lead, +opportunity, partner), and propagate them through the workflow. + +Credits +======= + +Contributors +------------ +* Pedro M. Baeza +* Antonio Espinosa diff --git a/crm_job_position/__init__.py b/crm_job_position/__init__.py new file mode 100644 index 000000000..054c8853d --- /dev/null +++ b/crm_job_position/__init__.py @@ -0,0 +1,6 @@ +# -*- encoding: utf-8 -*- +############################################################################## +# For copyright and license notices, see __openerp__.py file in root directory +############################################################################## + +from . import models diff --git a/crm_job_position/__openerp__.py b/crm_job_position/__openerp__.py new file mode 100644 index 000000000..311e1d6c4 --- /dev/null +++ b/crm_job_position/__openerp__.py @@ -0,0 +1,39 @@ +# -*- encoding: utf-8 -*- +############################################################################## +# +# OpenERP, Odoo Source Management Solution +# Copyright (c) 2014 Serv. Tecnol. Avanzados (http://www.serviciosbaeza.com) +# Pedro M. Baeza +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU Affero General Public License as published +# by the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Affero General Public License for more details. +# +# You should have received a copy of the GNU Affero General Public License +# along with this program. If not, see . +# +############################################################################## + +{ + 'name': 'Job positions in CRM', + 'version': '1.0', + 'category': 'Customer Relationship Management', + 'author': 'Serv. Tecnolog. Avanzados - Pedro M. Baeza, ' + 'Antiun Ingeniería S.L.', + 'website': 'http://www.serviciosbaeza.com, http://www.antiun.com', + 'depends': [ + 'crm', + ], + 'data': [ + 'views/crm_job_position_view.xml', + 'views/crm_lead_view.xml', + 'views/res_partner_view.xml', + ], + "installable": True, +} diff --git a/crm_job_position/i18n/crm_job_position.pot b/crm_job_position/i18n/crm_job_position.pot new file mode 100644 index 000000000..620e822d0 --- /dev/null +++ b/crm_job_position/i18n/crm_job_position.pot @@ -0,0 +1,90 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * crm_job_position +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 8.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2015-01-24 13:47+0000\n" +"PO-Revision-Date: 2015-01-24 13:47+0000\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: crm_job_position +#: field:crm.job_position,children:0 +msgid "Children" +msgstr "" + +#. module: crm_job_position +#: field:crm.job_position,create_uid:0 +msgid "Created by" +msgstr "" + +#. module: crm_job_position +#: field:crm.job_position,create_date:0 +msgid "Created on" +msgstr "" + +#. module: crm_job_position +#: field:crm.job_position,id:0 +msgid "ID" +msgstr "" + +#. module: crm_job_position +#: field:crm.job_position,write_uid:0 +msgid "Last Updated by" +msgstr "" + +#. module: crm_job_position +#: field:crm.job_position,write_date:0 +msgid "Last Updated on" +msgstr "" + +#. module: crm_job_position +#: field:crm.job_position,name:0 +msgid "Name" +msgstr "" + +#. module: crm_job_position +#: field:crm.job_position,parent_left:0 +msgid "Parent Left" +msgstr "" + +#. module: crm_job_position +#: field:crm.job_position,parent_right:0 +msgid "Parent Right" +msgstr "" + +#. module: crm_job_position +#: field:crm.job_position,parent_id:0 +msgid "Parent id" +msgstr "" + +#. module: crm_job_position +#: view:crm.lead:crm_job_position.view_crm_case_leads_filter_job_position +#: view:crm.lead:crm_job_position.view_crm_case_opportunities_filter_job_position +#: field:crm.lead,job_position:0 +#: model:ir.model,name:crm_job_position.model_crm_job_position +#: view:res.partner:crm_job_position.view_res_partner_filter_job_position +#: field:res.partner,job_position:0 +msgid "Job position" +msgstr "" + +#. module: crm_job_position +#: field:crm.lead,function:0 +#: field:res.partner,function:0 +msgid "Detailed job position" +msgstr "" + +#. module: crm_job_position +#: view:crm.job_position:crm_job_position.crm_job_position_tree_view +#: model:ir.actions.act_window,name:crm_job_position.crm_job_position_action +#: model:ir.ui.menu,name:crm_job_position.menu_crm_job_position +msgid "Job positions" +msgstr "" + diff --git a/crm_job_position/i18n/es.po b/crm_job_position/i18n/es.po new file mode 100644 index 000000000..9568802e5 --- /dev/null +++ b/crm_job_position/i18n/es.po @@ -0,0 +1,90 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * crm_job_position +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 8.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2015-01-24 13:47+0000\n" +"PO-Revision-Date: 2015-01-24 13:47+0000\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: crm_job_position +#: field:crm.job_position,children:0 +msgid "Children" +msgstr "Hijos" + +#. module: crm_job_position +#: field:crm.job_position,create_uid:0 +msgid "Created by" +msgstr "Creado por" + +#. module: crm_job_position +#: field:crm.job_position,create_date:0 +msgid "Created on" +msgstr "Creado en" + +#. module: crm_job_position +#: field:crm.job_position,id:0 +msgid "ID" +msgstr "ID" + +#. module: crm_job_position +#: field:crm.job_position,write_uid:0 +msgid "Last Updated by" +msgstr "Última actualización por" + +#. module: crm_job_position +#: field:crm.job_position,write_date:0 +msgid "Last Updated on" +msgstr "Última actualización en" + +#. module: crm_job_position +#: field:crm.job_position,name:0 +msgid "Name" +msgstr "Nombre" + +#. module: crm_job_position +#: field:crm.job_position,parent_left:0 +msgid "Parent Left" +msgstr "Padre izquierdo" + +#. module: crm_job_position +#: field:crm.job_position,parent_right:0 +msgid "Parent Right" +msgstr "Padre derecho" + +#. module: crm_job_position +#: field:crm.job_position,parent_id:0 +msgid "Parent id" +msgstr "ID del padre" + +#. module: crm_job_position +#: view:crm.lead:crm_job_position.view_crm_case_leads_filter_job_position +#: view:crm.lead:crm_job_position.view_crm_case_opportunities_filter_job_position +#: field:crm.lead,job_position:0 +#: model:ir.model,name:crm_job_position.model_crm_job_position +#: view:res.partner:crm_job_position.view_res_partner_filter_job_position +#: field:res.partner,job_position:0 +msgid "Job position" +msgstr "Puesto de trabajo" + +#. module: crm_job_position +#: field:crm.lead,function:0 +#: field:res.partner,function:0 +msgid "Detailed job position" +msgstr "Puesto de trabajo detallado" + +#. module: crm_job_position +#: view:crm.job_position:crm_job_position.crm_job_position_tree_view +#: model:ir.actions.act_window,name:crm_job_position.crm_job_position_action +#: model:ir.ui.menu,name:crm_job_position.menu_crm_job_position +msgid "Job positions" +msgstr "Puestos de trabajo" + diff --git a/crm_job_position/models/__init__.py b/crm_job_position/models/__init__.py new file mode 100644 index 000000000..0ab7c4ce5 --- /dev/null +++ b/crm_job_position/models/__init__.py @@ -0,0 +1,8 @@ +# -*- encoding: utf-8 -*- +############################################################################## +# For copyright and license notices, see __openerp__.py file in root directory +############################################################################## + +from . import crm_job_position +from . import crm_lead +from . import res_partner diff --git a/crm_job_position/models/crm_job_position.py b/crm_job_position/models/crm_job_position.py new file mode 100644 index 000000000..665425d51 --- /dev/null +++ b/crm_job_position/models/crm_job_position.py @@ -0,0 +1,20 @@ +# -*- encoding: utf-8 -*- +############################################################################## +# For copyright and license notices, see __openerp__.py file in root directory +############################################################################## +from openerp import models, fields + + +class CrmJobPosition(models.Model): + _name = 'crm.job_position' + _order = "parent_left" + _parent_order = "name" + _parent_store = True + _description = "Job position" + + name = fields.Char(required=True) + parent_id = fields.Many2one(comodel_name='crm.job_position') + children = fields.One2many(comodel_name='crm.job_position', + inverse_name='parent_id') + parent_left = fields.Integer('Parent Left', select=True) + parent_right = fields.Integer('Parent Right', select=True) diff --git a/crm_job_position/models/crm_lead.py b/crm_job_position/models/crm_lead.py new file mode 100644 index 000000000..1fecc91ed --- /dev/null +++ b/crm_job_position/models/crm_lead.py @@ -0,0 +1,26 @@ +# -*- encoding: utf-8 -*- +############################################################################## +# For copyright and license notices, see __openerp__.py file in root directory +############################################################################## +from openerp import models, fields + + +class CrmLead(models.Model): + _inherit = 'crm.lead' + + function = fields.Char(string="Detailed job position") + job_position = fields.Many2one(comodel_name='crm.job_position', + string="Job position") + + def _lead_create_contact(self, cr, uid, lead, name, is_company, + parent_id=False, context=None): + """ + Propagate job_position to created partner. + """ + partner_id = super(CrmLead, self)._lead_create_contact( + cr, uid, lead, name, is_company, parent_id=parent_id, + context=context) + self.pool['res.partner'].write( + cr, uid, partner_id, {'job_position': lead.job_position.id}, + context=context) + return partner_id diff --git a/crm_job_position/models/res_partner.py b/crm_job_position/models/res_partner.py new file mode 100644 index 000000000..5a76412d1 --- /dev/null +++ b/crm_job_position/models/res_partner.py @@ -0,0 +1,13 @@ +# -*- encoding: utf-8 -*- +############################################################################## +# For copyright and license notices, see __openerp__.py file in root directory +############################################################################## +from openerp import models, fields + + +class ResPartner(models.Model): + _inherit = 'res.partner' + + function = fields.Char(string="Detailed job position") + job_position = fields.Many2one(comodel_name='crm.job_position', + string="Job position") diff --git a/crm_job_position/static/description/icon.png b/crm_job_position/static/description/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..add81b17a4847ff2663923593ecc364587d3dd9f GIT binary patch literal 22620 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%0A{Ckv_A`d0n`sc6nr@&!27fYc51Y z*+G^46cETTAsRTakF~G5+MaP7E2ZrH;SYbf?xve=dhFV3uT}rqh~VrgVRFlsEx}j* z_HUARKlA*%hbAVOo6RJS?A?2`BbLAM(Vb7907xd2Bd+66@wE(s3XW136?O`Tql6Vg zIAQO2bSSD9azY!l8({&~)DXGG>0rV(Zt}BdDyf#}HMxE*zdkqyGf zXp1NZQ5DZNr+Ez^Y#oQP4f74pzL|6UFniTSy$wDBgoHo`8U>u$cZiv(oM_3km`pmY z+S}W&03JIpoWRB(cI*iE@;-U;^zxyhp+!l@wfWI8(n@c;|Iw#UY*2GsqKmgDo=E8S zt}dmLEk>qVaAQeS%nkEsp+cE%@myaJ2B^$3{q|f+ zYn$-^W5XsCAzaDsTi<#rm1#ZN+0zTkHF3ukaVI2+#*~YcA~dg&c1a8YmK2g917&N$ zQFUte?7cv?A-5K`HW{>O`NUZrm7ox(&t83G5GF`AX}7#U-!R4RyQ{Cu;y7fnkZG0nZy(l)o3HKuHhV_k%m z&FPwHTpDq1lP=CO{i31FYi9vgra21uRXl$Y_CTsk3R9e>+iR&a-^}kW&Qf~ z_uhN&y~F1{3)sAQv)s0Ao6f}DkK`uDS1em~@zrwKQj*2|+&R|x@s$h9*3MCblAmH#!9-Et@HIXEdOx5-RNhzSLnF%!Aj#DceHdo;4SGX#S z8gVY#G-hg2Ym5(~Ie(42s00oB1kUo_4d%W1_3E*SnZ1*&X^Yux?f-vD<+TZyO-kVO z;iKfHr)4skG|6}(K5yQB9=0s0-gTmz}Mh6=s^oHFDLrBb#mgf6(XGe-*kx z5m`8E4JHUsz{H;Y)52cxPqr?&p5| z=uaN}#+9$Us-=`KY%EOV?L|wL$T{;D7@?GqsU(@c9(wwhFmLrrI+rd)w4^Bb9%Ex; zi*#PiUkXEEwLn1(=+Y?9g!_EQgKG>kSwWGLpxR2k7v%x zt!?uT;Mu96p{YZ+(M?yiPS>`4%uXjoE!`6hm&8QNFn*QrtIIRa=~Ar0Mx*pX48Wpw zSSR$$9=bJ6*~0kXDO)TRWvNucahzoz`N&7+o_80}aI%FE!Ux!X_r13dPfUOC@m((l zfs(OoYdcbF22Y$cJD+$`9zJx$?%lPEaL70;>R&@l1}MU&j_K(cw9!bZaE)QaSjyIr zaU6nj8Ar*mbvzosdX}Kiu?D0X@mJTu7-(=C^?JRSHGH~>y=!I@y3PR%%@V$?QYY-$ z&dJsmQPf-Cnm3SGY+x}m{ETOgpA;3ZVuTQkj*g^$^rIi?3+4bk_~3&Q(D&Va-=7Rk zOn&I@M;|rW);323aB$!LFCW_b;1(-j{F7(Z}8pBxy74Gj(DjvhJk!99ESj9w52 zVDkqaRGT*4pg-}6Pc7N;%+62jI(UeVR7##XHJE$s7tg-CJbw7Q09U{2HD|1Jm~a!; z8bjGiWIRLf+$=_fE7h!u5m!#VZ_irLni(C?qhym{jA@R_>w(_c5q5nthoF(kXR4Wn zs4jVGG|jeQ3&=0g`q>(P4l~bejjuh|Ira;R*}IGd+VgNwrnGCnlD?nsS+L;x-}~L) zed>G^gw7cQZ1cmG@qI@R-}Lx%FSbdo_29_?`_O%N{cd^u@ON*$_15sj8ZsAm<{?`5shN2ZYZ-&xxR_O87-=04H4o5 zChXgvy&l%m%r~etcZg;`Uv2lY5glaq4xvUBa_cyzaW^BCGqK-XwC))vR@sWO zF0@)eXY0f)TW!c>b|4t>4VqwJ(`=#}Qo#B~^SVO`L}M$ssqqzT19&8=u7B2U%j)lC zl$c0sk&c70C7WHb6b-}GSnGxxZZH?Z0jM2XTh5Ub0_Dy{nNlohw^*p4$g7U0=MYXN7VKq=hh@=ydVXFmh zDZsG;$AW9Y6&7W~$0`xdE;eyNk3uZC@+#8ZJ@*4V^hcZ3`6Pv&^A?XgcM0QvXz8M5 zi^kn}`S7t*?|=7qA9%y?Ro6WI^s&Rw4G*1M-QL|tGL4H)8%ZJVu$d1rTdQ+4H$By#PTm9Xz4O!{_R9`{7Ok7r z&wjS;^o_537m_|wjN6x0}6#UK1HKR357Kx9LQ**Ng$#gn%P-JnwoYBW-W|u*Z|fbc>Bu&I7y9o zD1>N$b0dy|J)17o7>WuZKt=53NaPBI5}=T{#vnW&$1fnmfgmWrm1%-(hG$}m^7iez zYbvh+#8gk zOcHZlv<}3sXLbgAD&y|d@aeU{eZ3AA|3W(e4aK3=t5@4CTegfm^Z0%D-Sy?ql&16f zkC#eCBb5^Sj^0Zut|%5PN`;X>f{+|CJDRHMnR3Vl7T*a89aXK>5sFtU%v3jrH?V=^ ztfv%>D+z5Vp0HC%hEcg7JapA<_QDMX8Eq!G`F<+3RJL~yGQAYuW?Q~g$Bm+0X2=v6 z%eaY%iXjE1QO0CSpeGqbF8*dts0a2|v&`UUS_&irWgXfis7`_sW}!gbE72w>;!2TZ zpbz@{k$p8(wSr%*P^eTWl}q`SU8Yzp5{4mR5a9bhzSf!dK)#w6-#8pDQ%M!s@gt-> zkuzj0an#|Bojb)h9{;PfB=CpVt)UQjU(0bAeDRC#d?I*CQTOb#&jvT#a6`0f*RHz{ z9XkB=zx>jd*s*iBooIA~vIb)^D1|c?WDb?+9pX|zE(A5+ZgbB-Kf_TH{0*yqc2GvavwgYtXVJrN!D@ zIX2JEv-!-hdRD1yTMr6E*5NCO(+a5-0+nB>1j@Or&|*O)7Li6km()dBDOL;+4OU3| zmy_0Nh)N|}&9!Pa$<+##QkhbvL@_K-$XB!Hd1$Q{3?+mRCmC6u=x8pLLXrKRbH_1% zQEZ74DU7j1u|axO1R=`vamqPgfNcN(7tu*XK~&<(87RRM5)UX0O14ZM7Tc5o&=)W0 zreh1JwpnZUcGr5wy??%>nK(8}@cI$f&5YA=^UWi;=KiOD&?Jm{<@kO~ih%Y+nq ziRq#wSRil`OyJQKn$Y@K>Cy2V&IpQ)h{5q$2506lA}L!Z%IW0vvgq|mcD}fKfnS|WbKS%2KC7)mIkD)5;#g8q z_(_b9ppaKIoq%ebvU*~ifz}vSCbX4L{x0z?SYnp18sb-e{Z?05Tl%k^wCPC|ws2;D z+}ZOv&kwgFhmQ*3CuckdSS)6+W5nl6BY-)zKXMq4`4MIYs zz^qDn-+%l!c*_;YE}ltpJ?7lcNc&jn{auvyJyfc!h|cH^AcSze-t{GyT=J)X{pBxT zdE2jC`QZG-k+grwfPdi75htX=_dTk`kXo%uwN|52E>o$Lsgx^}%b7Drp-{jN0)imZ z8P-}aOrCoS+?~ZDMK;M&h~uyy=SY%-PNzes-KJHqQ=gq>c4~^5v2kV&A7*arE}ByZ ziSmD`1r!C;B;4@OBb@WzyG7r5Ye^zWC-xCigGf0Yj4javto9mD0y-K35>`*wIk(=$ z2}f5e3aO=W|E-DxQtRdh;CX3T+ zBx!3Hh&!Br=okat7O~EBmW(vCWsBgV8n^z34`cf+(C)#dPTag*kGGTvUpC)uT<~sV ziyuw8Z~Q@$@)yPOn#LJP0%xb6wg82i_XbkTT15Zy6)SAHTviKNwv>4}T`p|ZJ)noR zc46CAN~1k-JRqDSi4(e=7M*sRcB4sScAB~A8RjP@s2>?)e%BtF2X@fS3oZqb$;6b^ zQiiU&-i6DTQydy_eqSGjzM2awWx{gVd4&R=9}4Yjilu&)xPoj%7AwsHj=_5j|- z?nKA1Q@n9IOSw{p=J9rN;9%8}InHTzFnp;x}uG~X)QN?>ivlR7Ai5Bda(s3 zC9WrbzX(JloJ80lYe|cUG)?}@I`4OzoqeA#7gm3z+ukR_;%ax=0-!f8x!{tCO|_Sf zZFzNT|4r9l=Y|Fc1p+5Tb_-ZAiV$Mq>eZ{&J8OuOgm$YGW@d7N`q42O zhmMHO%Ug-;Ot0>TC!ip3wZXM+kZ2YWS53L8&DCVo7*mApIbee&FMI z9$tRL^b$rxk-4TMvEX@%#5$Za3qAj=&tMQ%pPo9M6NG*N!91~4D63e}>T==HQH1T# z(mIp9*E96Jdlff)@?LCzN}5Cj(&M<%k;@BZi+j`#oL=C$2^?CcAjO*0G``$z@4YZA zuKvT*k_5h4GWc7+_o=^n>bcDyd)K+kl8-$6kY2TN1yW_(owY8zQbjSHZkJ}WNqugf ziK%HOCXS&GjS}zPN9({gY!;PH3!Eo#fx!7|u5`t7R}n5>MliTUhLx(&<+2RQB@q;h zcwva|`}wucN9+99$l=&Rh?bIaPDnW|g&0>-j&)u6#`%Ug&j`J!(I9?Iu6!Cw^;WQR zqQeuTV@wumRHB&6j*N28_E#u$V}v#|WQ&oz)^p7xw-OaHc6E@R=*#`~UNdV}C(tZ8uv5r073}&=%bH%8#Zi6uD$BY=clJ;KK8XQ|1XYB&e+>-xlt@% zzKkS}nV6hlY zr9==G(7t~>L9{l5nhV(y&=5k*NGYe4lw(55F|G9xDdo}pF;*^@r`E1rJ9~I+-tFDD z@7vR}&GVEhXZ!HUtLaTaQl}#Y=p}#xFEyOgZn1o35-*J@o0v8&hTnH7SAP6`#9os` zTcqpJ-NdO*Qf_cz5o!ELtFgFA-E@=PuweuD-E-GBq;Qi-6b(J`cmF$m z>G@5I?@igeUos+Ye(%++T)vFqp#hfk_cK_l(O0b!mWuer0^0L)n;48%YF0`)sid3` zhzTjhI4~iloKQ+lJLe_?DQD2$Ou15?U$bUS^C!LE=Qi*DZ>^?(v-U%*$W83u5%Z=j z2Pl+6tWs2rVAaeF>n6t0+At%Uyz9d^v*y9~koaw^lqd(f$CEh4`Onf9ff5EKz}Vy? zt=68`OQj3`=(GgDop;`8o_z92Ra?6B@Xnn(AL{Gt|Kcq-Ubl8~Y6`8j=xrORo%v}dcJbJ_aihHU z+G}O0R1$gV+D%VSyH)Fc>DTt{9{(NViWmis6oJdjEoXK(;ZO*|LWoHr#4PrEzrxFZjEVNbre?>iGz)ybillI9cpHxDKdEo!P-M`)y_GDvRRhz#A(g(e!62oQHr{pKYEx(=@{?% zjoTP`&pM3jpsdT_XI327JIJ*Le}>F6tD!iNN$w%=T!It!W56S)9faVVlRJ0rRNJ;~ zTX^o$OD|pANpvT#*hLe2#>TTR?E36vBiWE$KV4pLSVR|o2m0;?$8;L<%%;s;|Hck( z{M{hz#z{wpAn3983A$j|Bp@!>NzBvQs$)%|_RSu%`qgFTPJ6NCcZxd^~0 z@VgBjzWsWZU3)%(^|8()Rt_g~NPO-|;}#uJnck6DKq>d=Yp1*gh#vRR)Xtg!NQ|`( zxga$0PHz9uD>pa_!7!WtaW@-&_bZGZ8=%wHB-UYt&REhi1IHi*q$#8+&Ls=T=|rR? zDkV_~?vxUjoc88?T1_{p&Xxf9(8qrJ&#m*k<7~Kh_!#Kf(1?g?rO39Ye#EA~eV!xx zx*(QNEUuvIAo5ZYPh#kykZkrKMPd-nqMSfFnK`nZQW79QXlCn)JZl2ruDkC0BR{O< z?k4Yi4j^)^Lu3~lDBRH)@1W!85y#6f?PJ@k`&qi`Tx?KazR{)KbvPX$eIF%srlE{O z;Ag#wL?WbHlr4&%J`f#P6gzh9Q)f*8+;ZEmJ{Abu8i zdjWnII@2v)`1T7-zR{%W4N~r3&QxreXmw~Lj@XuPln~0xysV{Ln9v3K^goBx zh$3y{)95Pd?SR=9G*XAtMYJCxti_2KWR%PAdPw8*#1l`@>~!(GGG|c$-2d3rOao&q zbM-ny%a$U9JoP^N+m3)Nh0_iifukH$*tBOKcMn_k?3pI96%rYv$!M%rIJA)j#;0gP zOvA8a^EO_4^)<1ycksMov1i6cf~g^#rXX$;@`#Nob6t`^p$%x~VP#(W5eZhrI4Mzhq;oN&TMqEX_qU@X!3F1EK5wS2e-;J6t+(Iy@cg_P$i%B1Nz`R#dXiGDMi>+_ zg6e{ir8oltkgaN*#dv%n}o3>CZRH;-dgvF3lMHr!w(ns5X6wSn3lc&G4iB4+{ts(>lCp`S1@8DSz z03W>nflDT*npgLr}E?JT>kIzt_zzL8}ATcD`q7qF|sIhHylpBLK zI`tTx3`nGh6j5HRkqcKmDRMIoAu_E5A&|;Pb}jq2yvFtychH&buzvjoXyp^z6lYVm zY<-!nTVKJ&F{MD@$u3T$;0hE=OV6GF__g~VYRt_xe#7R{HO?udP{c`0vtDO(^a$l* zi697%!_`mkB>>3$5K{>uKAj|GSJyC{MqJMr-=1{%-4a^P;wZdjOHk(8NvU)MMp8)& z_zj=QT{FD+)E1-+u_eiOU)sdj)HoW6hb2@7Pj)lK6%%s#Ro87eYXacYpZVPU!NW%% zZnfGqC47YQfJ_MlCopNk)c6GB6XQsws8lMaCkT2pb_YUOtZ*bs;2VXqj-wuoj!tt= zwZ&w&!J#RGk_D`I>x0PU{bDB_(mEW9NNZBQcB_)S<%QUbT0rz7i%3W zmamEKxc&YQoi)v%8?L)z?&6Er{&^T`tj&rt!YPE!WMq7)5!TUZb=bab8_z!T3Ckj4MxTK9GW#L0}|WTahCQ7zy&zrV~=QN$rC+`HN!Dl;TW4e4wSRC{ZrvNn=b z!c@>DsoCg~vaMvKIPO_4aHwFFXQyD@uqzRru!KF2GYUt-VB*J;obL)W`l>u-eU=Ez%_CJj5u=PiT8Xr|t6H2HU>OM= z1(PynpPplvnC6XSin+K&DiVa&IHOQRIAKVIhmnp{C7Bvh*RphI?Xy>2b<=-`(?ksU zmo$Fq(o6pJ?9>aFI%C$yCRt?dCUC+ba)D{+X$(0U^L3hyCj0m8qf{y}G`y7BKtGjg zmB0_O7Q0-uBjm&l=}z(#6e5$WSt!yvLg84wY>1a%n_<4RlFQCX+4JiINRuIgoz32hgOT$tihuR~2k#T2Y|hF6 zxc<5;ntS$6UibBHeDk>j2gWXRF5tNTn0%88eowmAp><}Dd+5MHICu!D6u##X1OZ_o zBn%6bN<~V=5@8sk1CO8(VohG2rKfqE>ktcxvI#e?9N~#AN7?2l3`cvYmSF3A2Hc2E zLV}}{7^3`2Xmth*2~xE{vlGIBlQ>})+Qc$zf*^31*s*l=$n0hBzT#RTY74}Svn~Jt zUis0>vmdzcnoGa>w=cYS^l0NMAs|i7Tb6K7Y^r2D$4sNjl0*?{9Mh`TaZZq?3C0?< z)}+RuJdJaplmzD}6p9EbXf|62Au%>03YM~c?=HS8kFd_}=SaGWaWdN+s|9JE^!13) z$_hlTlqyaVsUXLSHPaQ~eSNS$-n{g21L`Kd#P z4*h8(j*&_&sEp&pg49jsOSm9imcz7jQVBh-PsUvKr2>_Gt=d-^099sJ0U-oYr-QW? zB}DdbJ&oT@P$DAmQd$&g=#W&oEOE?Hz1p}1?4WeyY#)$D2|s+HB9x8Hor@2neH`~8RC;yXC217KqEh*&zb(ybjC z9tGC_<>Ozyr_qTvj2@l5G-{`4SA_lUA(FvKcZ1OJB0xs`_qrxqIij&Wfg)ni) z6GxdB3}pW3xuGtee7C5vlr8r#Qwhm^mkbe7w0PIMR=>7>{rR8&=mU5EgAgM9X$n-o z7>maDU)*``bI))7zxagaUFbL62~!8DopB7>Su2vNhD6B*tEu%_U_N+ z%@3!S^HM87=eLW6Nza2PNi!V-B{l7Konl$zT$-+4w_@xAAH4Oq?|ATO$06={$X7Y9`hD4(z|;$kEYjXJ+PBDJicxa^$F;nwrA*Laei*Tq<83 zhCy*|ZuU8AObQXQT(kc2b(fvf8U2fk`^yc}x8msacir?i;tWW`o;?0Puc%<3wgGsH P00000NkvXXu0mjfiBcmQ literal 0 HcmV?d00001 diff --git a/crm_job_position/views/crm_job_position_view.xml b/crm_job_position/views/crm_job_position_view.xml new file mode 100644 index 000000000..f5dfce5be --- /dev/null +++ b/crm_job_position/views/crm_job_position_view.xml @@ -0,0 +1,30 @@ + + + + + + Job positions + crm.job_position + form + tree + + + + CRM job_position tree + crm.job_position + + + + + + + + + + + + \ No newline at end of file diff --git a/crm_job_position/views/crm_lead_view.xml b/crm_job_position/views/crm_lead_view.xml new file mode 100644 index 000000000..169fdd48c --- /dev/null +++ b/crm_job_position/views/crm_lead_view.xml @@ -0,0 +1,86 @@ + + + + + + CRM - Leads Form with job positions + crm.lead + + + + + + + + + + + + CRM - Leads Search with job positions + crm.lead + + + + + + + + + + + + + CRM - Leads Form with job position + crm.lead + + + + + + + + + + + + CRM - Leads Search with job positions + crm.lead + + + + + + + + + + + + + \ No newline at end of file diff --git a/crm_job_position/views/res_partner_view.xml b/crm_job_position/views/res_partner_view.xml new file mode 100644 index 000000000..871411116 --- /dev/null +++ b/crm_job_position/views/res_partner_view.xml @@ -0,0 +1,48 @@ + + + + + + Partner form with job position + res.partner + + + + + + + + + + + + Partner search with job position + res.partner + + + + + + + + + + + + + \ No newline at end of file From 8f1f6966ed829796e8260e40463c17e024a81829 Mon Sep 17 00:00:00 2001 From: Antonio Espinosa Date: Sat, 21 Feb 2015 20:45:43 +0100 Subject: [PATCH 02/12] Add copyright info --- crm_job_position/__openerp__.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/crm_job_position/__openerp__.py b/crm_job_position/__openerp__.py index 311e1d6c4..0414e0f9a 100644 --- a/crm_job_position/__openerp__.py +++ b/crm_job_position/__openerp__.py @@ -4,6 +4,8 @@ # OpenERP, Odoo Source Management Solution # Copyright (c) 2014 Serv. Tecnol. Avanzados (http://www.serviciosbaeza.com) # Pedro M. Baeza +# Copyright (c) 2015 Antiun Ingeniería S.L. (http://www.antiun.com) +# Antonio Espinosa # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as published From 40e174bbc44d88c8a7200b218820900ae0392791 Mon Sep 17 00:00:00 2001 From: Antonio Espinosa Date: Tue, 3 Mar 2015 15:49:11 +0100 Subject: [PATCH 03/12] CRM Job position access rights --- crm_job_position/__openerp__.py | 1 + crm_job_position/security/ir.model.access.csv | 5 +++++ 2 files changed, 6 insertions(+) create mode 100644 crm_job_position/security/ir.model.access.csv diff --git a/crm_job_position/__openerp__.py b/crm_job_position/__openerp__.py index 0414e0f9a..61227e13c 100644 --- a/crm_job_position/__openerp__.py +++ b/crm_job_position/__openerp__.py @@ -36,6 +36,7 @@ 'views/crm_job_position_view.xml', 'views/crm_lead_view.xml', 'views/res_partner_view.xml', + 'security/ir.model.access.csv', ], "installable": True, } diff --git a/crm_job_position/security/ir.model.access.csv b/crm_job_position/security/ir.model.access.csv new file mode 100644 index 000000000..bd53556bd --- /dev/null +++ b/crm_job_position/security/ir.model.access.csv @@ -0,0 +1,5 @@ +"id","name","model_id:id","group_id:id","perm_read","perm_write","perm_create","perm_unlink" +"access_crm_job_position_public","crm_job_position group_public","model_crm_job_position","base.group_public",1,0,0,0 +"access_crm_job_position_portal","crm_job_position group_portal","model_crm_job_position","base.group_portal",1,0,0,0 +"access_crm_job_position_group_partner_manager","crm_job_position group_partner_manager","model_crm_job_position","base.group_partner_manager",1,1,1,1 +"access_crm_job_position_group_user","crm_job_position group_user","model_crm_job_position","base.group_user",1,0,0,0 From 3b4322b8de8ffdc691f08fbf7f35e6ec5293f41e Mon Sep 17 00:00:00 2001 From: Antonio Espinosa Date: Fri, 27 Mar 2015 12:53:53 +0100 Subject: [PATCH 04/12] Set some fields as tranlate --- crm_job_position/models/crm_job_position.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/crm_job_position/models/crm_job_position.py b/crm_job_position/models/crm_job_position.py index 665425d51..e03ba74f4 100644 --- a/crm_job_position/models/crm_job_position.py +++ b/crm_job_position/models/crm_job_position.py @@ -12,7 +12,7 @@ class CrmJobPosition(models.Model): _parent_store = True _description = "Job position" - name = fields.Char(required=True) + name = fields.Char(required=True, translate=True) parent_id = fields.Many2one(comodel_name='crm.job_position') children = fields.One2many(comodel_name='crm.job_position', inverse_name='parent_id') From c3d8658ea718c104ac5b0e294ad7d22d1d0455aa Mon Sep 17 00:00:00 2001 From: Antonio Espinosa Date: Wed, 8 Apr 2015 19:34:58 +0200 Subject: [PATCH 05/12] [FIX] XML revised --- .../views/crm_job_position_view.xml | 48 +++--- crm_job_position/views/crm_lead_view.xml | 154 +++++++++--------- crm_job_position/views/res_partner_view.xml | 84 +++++----- 3 files changed, 143 insertions(+), 143 deletions(-) diff --git a/crm_job_position/views/crm_job_position_view.xml b/crm_job_position/views/crm_job_position_view.xml index f5dfce5be..5fda8727c 100644 --- a/crm_job_position/views/crm_job_position_view.xml +++ b/crm_job_position/views/crm_job_position_view.xml @@ -1,30 +1,30 @@ - + - + - - Job positions - crm.job_position - form - tree - + + Job positions + crm.job_position + form + tree + - - CRM job_position tree - crm.job_position - - - - - - - + + CRM job_position tree + crm.job_position + + + + + + + - + - + \ No newline at end of file diff --git a/crm_job_position/views/crm_lead_view.xml b/crm_job_position/views/crm_lead_view.xml index 169fdd48c..082be11e6 100644 --- a/crm_job_position/views/crm_lead_view.xml +++ b/crm_job_position/views/crm_lead_view.xml @@ -1,86 +1,86 @@ - + - + - - CRM - Leads Form with job positions - crm.lead - - - - - - - + + CRM - Leads Form with job positions + crm.lead + + + + + + + - + - - CRM - Leads Search with job positions - crm.lead - - - - - - - - - - + + CRM - Leads Search with job positions + crm.lead + + + + + + + + + + - - CRM - Leads Form with job position - crm.lead - - - - - - - + + CRM - Leads Form with job position + crm.lead + + + + + + + - + - - CRM - Leads Search with job positions - crm.lead - - - - - - - - - - + + CRM - Leads Search with job positions + crm.lead + + + + + + + + + + - + \ No newline at end of file diff --git a/crm_job_position/views/res_partner_view.xml b/crm_job_position/views/res_partner_view.xml index 871411116..9c3e26250 100644 --- a/crm_job_position/views/res_partner_view.xml +++ b/crm_job_position/views/res_partner_view.xml @@ -1,48 +1,48 @@ - + - + - - Partner form with job position - res.partner - - - - - - - + + Partner form with job position + res.partner + + + + + + + - + - - Partner search with job position - res.partner - - - - - - - - - - + + Partner search with job position + res.partner + + + + + + + + + + - + \ No newline at end of file From 465885833e4c5d2f3c3795c7aef4f72a3f714045 Mon Sep 17 00:00:00 2001 From: Antonio Espinosa Date: Thu, 16 Apr 2015 16:32:07 +0200 Subject: [PATCH 06/12] [FIX] View fields review --- crm_job_position/views/crm_lead_view.xml | 6 ++++-- crm_job_position/views/res_partner_view.xml | 9 ++++++++- 2 files changed, 12 insertions(+), 3 deletions(-) diff --git a/crm_job_position/views/crm_lead_view.xml b/crm_job_position/views/crm_lead_view.xml index 082be11e6..0ed1cfd46 100644 --- a/crm_job_position/views/crm_lead_view.xml +++ b/crm_job_position/views/crm_lead_view.xml @@ -8,7 +8,8 @@ - + @@ -48,7 +49,8 @@ - + diff --git a/crm_job_position/views/res_partner_view.xml b/crm_job_position/views/res_partner_view.xml index 9c3e26250..21d94f624 100644 --- a/crm_job_position/views/res_partner_view.xml +++ b/crm_job_position/views/res_partner_view.xml @@ -10,8 +10,15 @@ + attrs="{'invisible': [('is_company','=', True)]}" + options='{"no_open": True}'/> + + + From 8bf225ad58b069cea9fb5edf51f91c68d42964ee Mon Sep 17 00:00:00 2001 From: Antonio Espinosa Date: Fri, 22 May 2015 09:29:19 +0200 Subject: [PATCH 07/12] [FIX] Add new record on top of the list --- crm_job_position/views/crm_job_position_view.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/crm_job_position/views/crm_job_position_view.xml b/crm_job_position/views/crm_job_position_view.xml index 5fda8727c..330890340 100644 --- a/crm_job_position/views/crm_job_position_view.xml +++ b/crm_job_position/views/crm_job_position_view.xml @@ -13,7 +13,7 @@ CRM job_position tree crm.job_position - + From ae49cbca991952e0a9718baf4dc43d4872aa236f Mon Sep 17 00:00:00 2001 From: Javier Iniesta Date: Wed, 27 May 2015 12:00:23 +0200 Subject: [PATCH 08/12] [IMP] Updated translations --- crm_job_position/i18n/crm_job_position.pot | 50 +++++++++++++------ crm_job_position/i18n/es.po | 58 +++++++++++++++------- 2 files changed, 76 insertions(+), 32 deletions(-) diff --git a/crm_job_position/i18n/crm_job_position.pot b/crm_job_position/i18n/crm_job_position.pot index 620e822d0..c825139a8 100644 --- a/crm_job_position/i18n/crm_job_position.pot +++ b/crm_job_position/i18n/crm_job_position.pot @@ -6,8 +6,8 @@ msgid "" msgstr "" "Project-Id-Version: Odoo Server 8.0\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2015-01-24 13:47+0000\n" -"PO-Revision-Date: 2015-01-24 13:47+0000\n" +"POT-Creation-Date: 2015-05-27 09:03+0000\n" +"PO-Revision-Date: 2015-05-27 09:03+0000\n" "Last-Translator: <>\n" "Language-Team: \n" "MIME-Version: 1.0\n" @@ -35,6 +35,25 @@ msgstr "" msgid "ID" msgstr "" +#. module: crm_job_position +#: view:crm.lead:crm_job_position.crm_case_form_view_leads_job_position +#: view:crm.lead:crm_job_position.crm_case_form_view_oppor_job_position +#: view:crm.lead:crm_job_position.view_crm_case_opportunities_filter_job_position +#: field:crm.lead,job_position:0 +#: model:ir.model,name:crm_job_position.model_crm_job_position +#: view:res.partner:crm_job_position.view_partner_form_job_position +#: view:res.partner:crm_job_position.view_res_partner_filter_job_position +#: field:res.partner,job_position:0 +msgid "Job position" +msgstr "" + +#. module: crm_job_position +#: view:crm.job_position:crm_job_position.crm_job_position_tree_view +#: model:ir.actions.act_window,name:crm_job_position.crm_job_position_action +#: model:ir.ui.menu,name:crm_job_position.menu_crm_job_position +msgid "Job positions" +msgstr "" + #. module: crm_job_position #: field:crm.job_position,write_uid:0 msgid "Last Updated by" @@ -45,6 +64,11 @@ msgstr "" msgid "Last Updated on" msgstr "" +#. module: crm_job_position +#: model:ir.model,name:crm_job_position.model_crm_lead +msgid "Lead/Opportunity" +msgstr "" + #. module: crm_job_position #: field:crm.job_position,name:0 msgid "Name" @@ -65,26 +89,24 @@ msgstr "" msgid "Parent id" msgstr "" +#. module: crm_job_position +#: model:ir.model,name:crm_job_position.model_res_partner +msgid "Partner" +msgstr "" + #. module: crm_job_position #: view:crm.lead:crm_job_position.view_crm_case_leads_filter_job_position #: view:crm.lead:crm_job_position.view_crm_case_opportunities_filter_job_position -#: field:crm.lead,job_position:0 -#: model:ir.model,name:crm_job_position.model_crm_job_position -#: view:res.partner:crm_job_position.view_res_partner_filter_job_position -#: field:res.partner,job_position:0 -msgid "Job position" +msgid "Sales Team" msgstr "" #. module: crm_job_position -#: field:crm.lead,function:0 -#: field:res.partner,function:0 -msgid "Detailed job position" +#: view:res.partner:crm_job_position.view_res_partner_filter_job_position +msgid "Salesperson" msgstr "" #. module: crm_job_position -#: view:crm.job_position:crm_job_position.crm_job_position_tree_view -#: model:ir.actions.act_window,name:crm_job_position.crm_job_position_action -#: model:ir.ui.menu,name:crm_job_position.menu_crm_job_position -msgid "Job positions" +#: view:crm.lead:crm_job_position.view_crm_case_leads_filter_job_position +msgid "job_position" msgstr "" diff --git a/crm_job_position/i18n/es.po b/crm_job_position/i18n/es.po index 9568802e5..0adcfeded 100644 --- a/crm_job_position/i18n/es.po +++ b/crm_job_position/i18n/es.po @@ -1,13 +1,13 @@ # Translation of Odoo Server. # This file contains the translation of the following modules: -# * crm_job_position +# * crm_job_position # msgid "" msgstr "" "Project-Id-Version: Odoo Server 8.0\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2015-01-24 13:47+0000\n" -"PO-Revision-Date: 2015-01-24 13:47+0000\n" +"POT-Creation-Date: 2015-05-27 09:03+0000\n" +"PO-Revision-Date: 2015-05-27 09:03+0000\n" "Last-Translator: <>\n" "Language-Team: \n" "MIME-Version: 1.0\n" @@ -35,6 +35,25 @@ msgstr "Creado en" msgid "ID" msgstr "ID" +#. module: crm_job_position +#: view:crm.lead:crm_job_position.crm_case_form_view_leads_job_position +#: view:crm.lead:crm_job_position.crm_case_form_view_oppor_job_position +#: view:crm.lead:crm_job_position.view_crm_case_opportunities_filter_job_position +#: field:crm.lead,job_position:0 +#: model:ir.model,name:crm_job_position.model_crm_job_position +#: view:res.partner:crm_job_position.view_partner_form_job_position +#: view:res.partner:crm_job_position.view_res_partner_filter_job_position +#: field:res.partner,job_position:0 +msgid "Job position" +msgstr "Puesto de trabajo" + +#. module: crm_job_position +#: view:crm.job_position:crm_job_position.crm_job_position_tree_view +#: model:ir.actions.act_window,name:crm_job_position.crm_job_position_action +#: model:ir.ui.menu,name:crm_job_position.menu_crm_job_position +msgid "Job positions" +msgstr "Puestos de trabajo" + #. module: crm_job_position #: field:crm.job_position,write_uid:0 msgid "Last Updated by" @@ -45,6 +64,11 @@ msgstr "Última actualización por" msgid "Last Updated on" msgstr "Última actualización en" +#. module: crm_job_position +#: model:ir.model,name:crm_job_position.model_crm_lead +msgid "Lead/Opportunity" +msgstr "Iniciativa/Oportunidad" + #. module: crm_job_position #: field:crm.job_position,name:0 msgid "Name" @@ -65,26 +89,24 @@ msgstr "Padre derecho" msgid "Parent id" msgstr "ID del padre" +#. module: crm_job_position +#: model:ir.model,name:crm_job_position.model_res_partner +msgid "Partner" +msgstr "Empresa" + #. module: crm_job_position #: view:crm.lead:crm_job_position.view_crm_case_leads_filter_job_position #: view:crm.lead:crm_job_position.view_crm_case_opportunities_filter_job_position -#: field:crm.lead,job_position:0 -#: model:ir.model,name:crm_job_position.model_crm_job_position -#: view:res.partner:crm_job_position.view_res_partner_filter_job_position -#: field:res.partner,job_position:0 -msgid "Job position" -msgstr "Puesto de trabajo" +msgid "Sales Team" +msgstr "Equipo de ventas" #. module: crm_job_position -#: field:crm.lead,function:0 -#: field:res.partner,function:0 -msgid "Detailed job position" -msgstr "Puesto de trabajo detallado" +#: view:res.partner:crm_job_position.view_res_partner_filter_job_position +msgid "Salesperson" +msgstr "Comercial" #. module: crm_job_position -#: view:crm.job_position:crm_job_position.crm_job_position_tree_view -#: model:ir.actions.act_window,name:crm_job_position.crm_job_position_action -#: model:ir.ui.menu,name:crm_job_position.menu_crm_job_position -msgid "Job positions" -msgstr "Puestos de trabajo" +#: view:crm.lead:crm_job_position.view_crm_case_leads_filter_job_position +msgid "job_position" +msgstr "" From 8327e6c8c316f1d5d1e727116b4a37726dc1ec95 Mon Sep 17 00:00:00 2001 From: Antonio Espinosa Date: Mon, 16 Nov 2015 11:59:21 +0100 Subject: [PATCH 09/12] Avoid creation of job positions in partner form --- crm_job_position/i18n/crm_job_position.pot | 8 ++++++-- crm_job_position/i18n/es.po | 10 +++++++--- crm_job_position/views/res_partner_view.xml | 4 ++-- 3 files changed, 15 insertions(+), 7 deletions(-) diff --git a/crm_job_position/i18n/crm_job_position.pot b/crm_job_position/i18n/crm_job_position.pot index c825139a8..f8b374a6b 100644 --- a/crm_job_position/i18n/crm_job_position.pot +++ b/crm_job_position/i18n/crm_job_position.pot @@ -6,8 +6,8 @@ msgid "" msgstr "" "Project-Id-Version: Odoo Server 8.0\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2015-05-27 09:03+0000\n" -"PO-Revision-Date: 2015-05-27 09:03+0000\n" +"POT-Creation-Date: 2015-11-16 10:18+0000\n" +"PO-Revision-Date: 2015-11-16 10:18+0000\n" "Last-Translator: <>\n" "Language-Team: \n" "MIME-Version: 1.0\n" @@ -110,3 +110,7 @@ msgstr "" msgid "job_position" msgstr "" +#. module: crm_job_position +#: field:res.partner,function:0 +msgid "Detailed job position" +msgstr "" diff --git a/crm_job_position/i18n/es.po b/crm_job_position/i18n/es.po index 0adcfeded..40c6d18fc 100644 --- a/crm_job_position/i18n/es.po +++ b/crm_job_position/i18n/es.po @@ -1,13 +1,13 @@ # Translation of Odoo Server. # This file contains the translation of the following modules: -# * crm_job_position +# * crm_job_position # msgid "" msgstr "" "Project-Id-Version: Odoo Server 8.0\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2015-05-27 09:03+0000\n" -"PO-Revision-Date: 2015-05-27 09:03+0000\n" +"POT-Creation-Date: 2015-11-16 10:18+0000\n" +"PO-Revision-Date: 2015-11-16 10:18+0000\n" "Last-Translator: <>\n" "Language-Team: \n" "MIME-Version: 1.0\n" @@ -110,3 +110,7 @@ msgstr "Comercial" msgid "job_position" msgstr "" +#. module: crm_job_position +#: field:res.partner,function:0 +msgid "Detailed job position" +msgstr "Puesto de trabajo detallado" diff --git a/crm_job_position/views/res_partner_view.xml b/crm_job_position/views/res_partner_view.xml index 21d94f624..6ca9186b4 100644 --- a/crm_job_position/views/res_partner_view.xml +++ b/crm_job_position/views/res_partner_view.xml @@ -11,13 +11,13 @@ + options="{'no_open': True, 'no_create': True}"/> + options="{'no_open': True, 'no_create': True}"/> From 0aa91a225a0057ba0be5d860a3f99cf34abcd6d3 Mon Sep 17 00:00:00 2001 From: Antonio Espinosa Date: Mon, 16 Nov 2015 12:03:35 +0100 Subject: [PATCH 10/12] Update version --- crm_job_position/__openerp__.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/crm_job_position/__openerp__.py b/crm_job_position/__openerp__.py index 61227e13c..91c28d451 100644 --- a/crm_job_position/__openerp__.py +++ b/crm_job_position/__openerp__.py @@ -24,7 +24,7 @@ { 'name': 'Job positions in CRM', - 'version': '1.0', + 'version': '8.0.1.1.0', 'category': 'Customer Relationship Management', 'author': 'Serv. Tecnolog. Avanzados - Pedro M. Baeza, ' 'Antiun Ingeniería S.L.', From a77950a3d558364299b4ff38bf82310f31f117ac Mon Sep 17 00:00:00 2001 From: "Pedro M. Baeza" Date: Tue, 8 Dec 2015 09:32:46 +0100 Subject: [PATCH 11/12] [FIX] Author --- crm_job_position/__openerp__.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/crm_job_position/__openerp__.py b/crm_job_position/__openerp__.py index 91c28d451..6fdcdf3a0 100644 --- a/crm_job_position/__openerp__.py +++ b/crm_job_position/__openerp__.py @@ -26,7 +26,7 @@ 'name': 'Job positions in CRM', 'version': '8.0.1.1.0', 'category': 'Customer Relationship Management', - 'author': 'Serv. Tecnolog. Avanzados - Pedro M. Baeza, ' + 'author': 'Serv. Tecnol. Avanzados - Pedro M. Baeza, ' 'Antiun Ingeniería S.L.', 'website': 'http://www.serviciosbaeza.com, http://www.antiun.com', 'depends': [ From 5f63fd0f00970438db77e79656bff87049a059db Mon Sep 17 00:00:00 2001 From: Jairo Llopis Date: Fri, 18 Dec 2015 17:46:52 +0100 Subject: [PATCH 12/12] Prepare for OCA: - Renamed crm_job_position to partner_contact_job_position. - Drop all CRM dependencies. - Improve README. - Add form view. - Rename one model. - Rename some fields. - Reorder module. - Remove pot. - Update translation. - Use new-style short license and copyright headers. --- crm_job_position/README.rst | 13 -- crm_job_position/__init__.py | 6 - crm_job_position/__openerp__.py | 42 ------- crm_job_position/i18n/crm_job_position.pot | 116 ------------------ crm_job_position/i18n/es.po | 116 ------------------ crm_job_position/models/__init__.py | 8 -- crm_job_position/models/crm_job_position.py | 20 --- crm_job_position/models/crm_lead.py | 26 ---- crm_job_position/models/res_partner.py | 13 -- crm_job_position/security/ir.model.access.csv | 5 - .../views/crm_job_position_view.xml | 30 ----- crm_job_position/views/crm_lead_view.xml | 88 ------------- partner_contact_job_position/README.rst | 74 +++++++++++ partner_contact_job_position/__init__.py | 9 ++ partner_contact_job_position/__openerp__.py | 29 +++++ partner_contact_job_position/i18n/es.po | 101 +++++++++++++++ .../models/__init__.py | 9 ++ .../models/res_partner.py | 38 ++++++ .../security/ir.model.access.csv | 5 + .../static/description/icon.png | Bin .../views/res_partner_job_position_view.xml | 42 +++++++ .../views/res_partner_view.xml | 32 ++--- 22 files changed, 316 insertions(+), 506 deletions(-) delete mode 100644 crm_job_position/README.rst delete mode 100644 crm_job_position/__init__.py delete mode 100644 crm_job_position/__openerp__.py delete mode 100644 crm_job_position/i18n/crm_job_position.pot delete mode 100644 crm_job_position/i18n/es.po delete mode 100644 crm_job_position/models/__init__.py delete mode 100644 crm_job_position/models/crm_job_position.py delete mode 100644 crm_job_position/models/crm_lead.py delete mode 100644 crm_job_position/models/res_partner.py delete mode 100644 crm_job_position/security/ir.model.access.csv delete mode 100644 crm_job_position/views/crm_job_position_view.xml delete mode 100644 crm_job_position/views/crm_lead_view.xml create mode 100644 partner_contact_job_position/README.rst create mode 100644 partner_contact_job_position/__init__.py create mode 100644 partner_contact_job_position/__openerp__.py create mode 100644 partner_contact_job_position/i18n/es.po create mode 100644 partner_contact_job_position/models/__init__.py create mode 100644 partner_contact_job_position/models/res_partner.py create mode 100644 partner_contact_job_position/security/ir.model.access.csv rename {crm_job_position => partner_contact_job_position}/static/description/icon.png (100%) create mode 100644 partner_contact_job_position/views/res_partner_job_position_view.xml rename {crm_job_position => partner_contact_job_position}/views/res_partner_view.xml (56%) diff --git a/crm_job_position/README.rst b/crm_job_position/README.rst deleted file mode 100644 index 31fbf7ba6..000000000 --- a/crm_job_position/README.rst +++ /dev/null @@ -1,13 +0,0 @@ -Job positions in CRM -==================== - -This module adds the concept of job position to the CRM main objects (lead, -opportunity, partner), and propagate them through the workflow. - -Credits -======= - -Contributors ------------- -* Pedro M. Baeza -* Antonio Espinosa diff --git a/crm_job_position/__init__.py b/crm_job_position/__init__.py deleted file mode 100644 index 054c8853d..000000000 --- a/crm_job_position/__init__.py +++ /dev/null @@ -1,6 +0,0 @@ -# -*- encoding: utf-8 -*- -############################################################################## -# For copyright and license notices, see __openerp__.py file in root directory -############################################################################## - -from . import models diff --git a/crm_job_position/__openerp__.py b/crm_job_position/__openerp__.py deleted file mode 100644 index 6fdcdf3a0..000000000 --- a/crm_job_position/__openerp__.py +++ /dev/null @@ -1,42 +0,0 @@ -# -*- encoding: utf-8 -*- -############################################################################## -# -# OpenERP, Odoo Source Management Solution -# Copyright (c) 2014 Serv. Tecnol. Avanzados (http://www.serviciosbaeza.com) -# Pedro M. Baeza -# Copyright (c) 2015 Antiun Ingeniería S.L. (http://www.antiun.com) -# Antonio Espinosa -# -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU Affero General Public License as published -# by the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU Affero General Public License for more details. -# -# You should have received a copy of the GNU Affero General Public License -# along with this program. If not, see . -# -############################################################################## - -{ - 'name': 'Job positions in CRM', - 'version': '8.0.1.1.0', - 'category': 'Customer Relationship Management', - 'author': 'Serv. Tecnol. Avanzados - Pedro M. Baeza, ' - 'Antiun Ingeniería S.L.', - 'website': 'http://www.serviciosbaeza.com, http://www.antiun.com', - 'depends': [ - 'crm', - ], - 'data': [ - 'views/crm_job_position_view.xml', - 'views/crm_lead_view.xml', - 'views/res_partner_view.xml', - 'security/ir.model.access.csv', - ], - "installable": True, -} diff --git a/crm_job_position/i18n/crm_job_position.pot b/crm_job_position/i18n/crm_job_position.pot deleted file mode 100644 index f8b374a6b..000000000 --- a/crm_job_position/i18n/crm_job_position.pot +++ /dev/null @@ -1,116 +0,0 @@ -# Translation of Odoo Server. -# This file contains the translation of the following modules: -# * crm_job_position -# -msgid "" -msgstr "" -"Project-Id-Version: Odoo Server 8.0\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2015-11-16 10:18+0000\n" -"PO-Revision-Date: 2015-11-16 10:18+0000\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: crm_job_position -#: field:crm.job_position,children:0 -msgid "Children" -msgstr "" - -#. module: crm_job_position -#: field:crm.job_position,create_uid:0 -msgid "Created by" -msgstr "" - -#. module: crm_job_position -#: field:crm.job_position,create_date:0 -msgid "Created on" -msgstr "" - -#. module: crm_job_position -#: field:crm.job_position,id:0 -msgid "ID" -msgstr "" - -#. module: crm_job_position -#: view:crm.lead:crm_job_position.crm_case_form_view_leads_job_position -#: view:crm.lead:crm_job_position.crm_case_form_view_oppor_job_position -#: view:crm.lead:crm_job_position.view_crm_case_opportunities_filter_job_position -#: field:crm.lead,job_position:0 -#: model:ir.model,name:crm_job_position.model_crm_job_position -#: view:res.partner:crm_job_position.view_partner_form_job_position -#: view:res.partner:crm_job_position.view_res_partner_filter_job_position -#: field:res.partner,job_position:0 -msgid "Job position" -msgstr "" - -#. module: crm_job_position -#: view:crm.job_position:crm_job_position.crm_job_position_tree_view -#: model:ir.actions.act_window,name:crm_job_position.crm_job_position_action -#: model:ir.ui.menu,name:crm_job_position.menu_crm_job_position -msgid "Job positions" -msgstr "" - -#. module: crm_job_position -#: field:crm.job_position,write_uid:0 -msgid "Last Updated by" -msgstr "" - -#. module: crm_job_position -#: field:crm.job_position,write_date:0 -msgid "Last Updated on" -msgstr "" - -#. module: crm_job_position -#: model:ir.model,name:crm_job_position.model_crm_lead -msgid "Lead/Opportunity" -msgstr "" - -#. module: crm_job_position -#: field:crm.job_position,name:0 -msgid "Name" -msgstr "" - -#. module: crm_job_position -#: field:crm.job_position,parent_left:0 -msgid "Parent Left" -msgstr "" - -#. module: crm_job_position -#: field:crm.job_position,parent_right:0 -msgid "Parent Right" -msgstr "" - -#. module: crm_job_position -#: field:crm.job_position,parent_id:0 -msgid "Parent id" -msgstr "" - -#. module: crm_job_position -#: model:ir.model,name:crm_job_position.model_res_partner -msgid "Partner" -msgstr "" - -#. module: crm_job_position -#: view:crm.lead:crm_job_position.view_crm_case_leads_filter_job_position -#: view:crm.lead:crm_job_position.view_crm_case_opportunities_filter_job_position -msgid "Sales Team" -msgstr "" - -#. module: crm_job_position -#: view:res.partner:crm_job_position.view_res_partner_filter_job_position -msgid "Salesperson" -msgstr "" - -#. module: crm_job_position -#: view:crm.lead:crm_job_position.view_crm_case_leads_filter_job_position -msgid "job_position" -msgstr "" - -#. module: crm_job_position -#: field:res.partner,function:0 -msgid "Detailed job position" -msgstr "" diff --git a/crm_job_position/i18n/es.po b/crm_job_position/i18n/es.po deleted file mode 100644 index 40c6d18fc..000000000 --- a/crm_job_position/i18n/es.po +++ /dev/null @@ -1,116 +0,0 @@ -# Translation of Odoo Server. -# This file contains the translation of the following modules: -# * crm_job_position -# -msgid "" -msgstr "" -"Project-Id-Version: Odoo Server 8.0\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2015-11-16 10:18+0000\n" -"PO-Revision-Date: 2015-11-16 10:18+0000\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: crm_job_position -#: field:crm.job_position,children:0 -msgid "Children" -msgstr "Hijos" - -#. module: crm_job_position -#: field:crm.job_position,create_uid:0 -msgid "Created by" -msgstr "Creado por" - -#. module: crm_job_position -#: field:crm.job_position,create_date:0 -msgid "Created on" -msgstr "Creado en" - -#. module: crm_job_position -#: field:crm.job_position,id:0 -msgid "ID" -msgstr "ID" - -#. module: crm_job_position -#: view:crm.lead:crm_job_position.crm_case_form_view_leads_job_position -#: view:crm.lead:crm_job_position.crm_case_form_view_oppor_job_position -#: view:crm.lead:crm_job_position.view_crm_case_opportunities_filter_job_position -#: field:crm.lead,job_position:0 -#: model:ir.model,name:crm_job_position.model_crm_job_position -#: view:res.partner:crm_job_position.view_partner_form_job_position -#: view:res.partner:crm_job_position.view_res_partner_filter_job_position -#: field:res.partner,job_position:0 -msgid "Job position" -msgstr "Puesto de trabajo" - -#. module: crm_job_position -#: view:crm.job_position:crm_job_position.crm_job_position_tree_view -#: model:ir.actions.act_window,name:crm_job_position.crm_job_position_action -#: model:ir.ui.menu,name:crm_job_position.menu_crm_job_position -msgid "Job positions" -msgstr "Puestos de trabajo" - -#. module: crm_job_position -#: field:crm.job_position,write_uid:0 -msgid "Last Updated by" -msgstr "Última actualización por" - -#. module: crm_job_position -#: field:crm.job_position,write_date:0 -msgid "Last Updated on" -msgstr "Última actualización en" - -#. module: crm_job_position -#: model:ir.model,name:crm_job_position.model_crm_lead -msgid "Lead/Opportunity" -msgstr "Iniciativa/Oportunidad" - -#. module: crm_job_position -#: field:crm.job_position,name:0 -msgid "Name" -msgstr "Nombre" - -#. module: crm_job_position -#: field:crm.job_position,parent_left:0 -msgid "Parent Left" -msgstr "Padre izquierdo" - -#. module: crm_job_position -#: field:crm.job_position,parent_right:0 -msgid "Parent Right" -msgstr "Padre derecho" - -#. module: crm_job_position -#: field:crm.job_position,parent_id:0 -msgid "Parent id" -msgstr "ID del padre" - -#. module: crm_job_position -#: model:ir.model,name:crm_job_position.model_res_partner -msgid "Partner" -msgstr "Empresa" - -#. module: crm_job_position -#: view:crm.lead:crm_job_position.view_crm_case_leads_filter_job_position -#: view:crm.lead:crm_job_position.view_crm_case_opportunities_filter_job_position -msgid "Sales Team" -msgstr "Equipo de ventas" - -#. module: crm_job_position -#: view:res.partner:crm_job_position.view_res_partner_filter_job_position -msgid "Salesperson" -msgstr "Comercial" - -#. module: crm_job_position -#: view:crm.lead:crm_job_position.view_crm_case_leads_filter_job_position -msgid "job_position" -msgstr "" - -#. module: crm_job_position -#: field:res.partner,function:0 -msgid "Detailed job position" -msgstr "Puesto de trabajo detallado" diff --git a/crm_job_position/models/__init__.py b/crm_job_position/models/__init__.py deleted file mode 100644 index 0ab7c4ce5..000000000 --- a/crm_job_position/models/__init__.py +++ /dev/null @@ -1,8 +0,0 @@ -# -*- encoding: utf-8 -*- -############################################################################## -# For copyright and license notices, see __openerp__.py file in root directory -############################################################################## - -from . import crm_job_position -from . import crm_lead -from . import res_partner diff --git a/crm_job_position/models/crm_job_position.py b/crm_job_position/models/crm_job_position.py deleted file mode 100644 index e03ba74f4..000000000 --- a/crm_job_position/models/crm_job_position.py +++ /dev/null @@ -1,20 +0,0 @@ -# -*- encoding: utf-8 -*- -############################################################################## -# For copyright and license notices, see __openerp__.py file in root directory -############################################################################## -from openerp import models, fields - - -class CrmJobPosition(models.Model): - _name = 'crm.job_position' - _order = "parent_left" - _parent_order = "name" - _parent_store = True - _description = "Job position" - - name = fields.Char(required=True, translate=True) - parent_id = fields.Many2one(comodel_name='crm.job_position') - children = fields.One2many(comodel_name='crm.job_position', - inverse_name='parent_id') - parent_left = fields.Integer('Parent Left', select=True) - parent_right = fields.Integer('Parent Right', select=True) diff --git a/crm_job_position/models/crm_lead.py b/crm_job_position/models/crm_lead.py deleted file mode 100644 index 1fecc91ed..000000000 --- a/crm_job_position/models/crm_lead.py +++ /dev/null @@ -1,26 +0,0 @@ -# -*- encoding: utf-8 -*- -############################################################################## -# For copyright and license notices, see __openerp__.py file in root directory -############################################################################## -from openerp import models, fields - - -class CrmLead(models.Model): - _inherit = 'crm.lead' - - function = fields.Char(string="Detailed job position") - job_position = fields.Many2one(comodel_name='crm.job_position', - string="Job position") - - def _lead_create_contact(self, cr, uid, lead, name, is_company, - parent_id=False, context=None): - """ - Propagate job_position to created partner. - """ - partner_id = super(CrmLead, self)._lead_create_contact( - cr, uid, lead, name, is_company, parent_id=parent_id, - context=context) - self.pool['res.partner'].write( - cr, uid, partner_id, {'job_position': lead.job_position.id}, - context=context) - return partner_id diff --git a/crm_job_position/models/res_partner.py b/crm_job_position/models/res_partner.py deleted file mode 100644 index 5a76412d1..000000000 --- a/crm_job_position/models/res_partner.py +++ /dev/null @@ -1,13 +0,0 @@ -# -*- encoding: utf-8 -*- -############################################################################## -# For copyright and license notices, see __openerp__.py file in root directory -############################################################################## -from openerp import models, fields - - -class ResPartner(models.Model): - _inherit = 'res.partner' - - function = fields.Char(string="Detailed job position") - job_position = fields.Many2one(comodel_name='crm.job_position', - string="Job position") diff --git a/crm_job_position/security/ir.model.access.csv b/crm_job_position/security/ir.model.access.csv deleted file mode 100644 index bd53556bd..000000000 --- a/crm_job_position/security/ir.model.access.csv +++ /dev/null @@ -1,5 +0,0 @@ -"id","name","model_id:id","group_id:id","perm_read","perm_write","perm_create","perm_unlink" -"access_crm_job_position_public","crm_job_position group_public","model_crm_job_position","base.group_public",1,0,0,0 -"access_crm_job_position_portal","crm_job_position group_portal","model_crm_job_position","base.group_portal",1,0,0,0 -"access_crm_job_position_group_partner_manager","crm_job_position group_partner_manager","model_crm_job_position","base.group_partner_manager",1,1,1,1 -"access_crm_job_position_group_user","crm_job_position group_user","model_crm_job_position","base.group_user",1,0,0,0 diff --git a/crm_job_position/views/crm_job_position_view.xml b/crm_job_position/views/crm_job_position_view.xml deleted file mode 100644 index 330890340..000000000 --- a/crm_job_position/views/crm_job_position_view.xml +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - Job positions - crm.job_position - form - tree - - - - CRM job_position tree - crm.job_position - - - - - - - - - - - - \ No newline at end of file diff --git a/crm_job_position/views/crm_lead_view.xml b/crm_job_position/views/crm_lead_view.xml deleted file mode 100644 index 0ed1cfd46..000000000 --- a/crm_job_position/views/crm_lead_view.xml +++ /dev/null @@ -1,88 +0,0 @@ - - - - - - CRM - Leads Form with job positions - crm.lead - - - - - - - - - - - - CRM - Leads Search with job positions - crm.lead - - - - - - - - - - - - - CRM - Leads Form with job position - crm.lead - - - - - - - - - - - - CRM - Leads Search with job positions - crm.lead - - - - - - - - - - - - - \ No newline at end of file diff --git a/partner_contact_job_position/README.rst b/partner_contact_job_position/README.rst new file mode 100644 index 000000000..00f2706d0 --- /dev/null +++ b/partner_contact_job_position/README.rst @@ -0,0 +1,74 @@ +.. image:: https://img.shields.io/badge/licence-AGPL--3-blue.svg + :target: http://www.gnu.org/licenses/agpl-3.0-standalone.html + :alt: License: AGPL-3 + +==================== +Partner job position +==================== + +This module extends the functionality of partners job position to support +having them categorized in tree form and allow you to choose a categorized job +position for your contacts in addition to the current custom string for job +position. + +Configuration +============= + +To configure job positions, you need to: + +* Go to *Sales > Configuration > Address Book > Job Positions*. + +Usage +===== + +To use this module, you need to: + +* Go to any partner's form. +* Use the new *Categorized job position* field. + +.. image:: https://odoo-community.org/website/image/ir.attachment/5784_f2813bd/datas + :alt: Try me on Runbot + :target: https://runbot.odoo-community.org/runbot/134/8.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 smashing it by providing a detailed and welcomed `feedback +`_. + +Credits +======= + +Images +------ + +* `Antiun Ingeniería S.L. `_: Icon. + +Contributors +------------ + +* Pedro M. Baeza +* Antonio Espinosa +* Rafael Blasco +* Jairo Llopis + +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/partner_contact_job_position/__init__.py b/partner_contact_job_position/__init__.py new file mode 100644 index 000000000..9af8488e4 --- /dev/null +++ b/partner_contact_job_position/__init__.py @@ -0,0 +1,9 @@ +# -*- coding: utf-8 -*- +# Copyright (c) 2014 Serv. Tecnol. Avanzados (http://www.serviciosbaeza.com) +# Pedro M. Baeza +# Copyright (c) 2015 Antiun Ingeniería S.L. (http://www.antiun.com) +# Antonio Espinosa +# © 2015 Antiun Ingeniería S.L. - Jairo Llopis +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). + +from . import models diff --git a/partner_contact_job_position/__openerp__.py b/partner_contact_job_position/__openerp__.py new file mode 100644 index 000000000..3e4521aad --- /dev/null +++ b/partner_contact_job_position/__openerp__.py @@ -0,0 +1,29 @@ +# -*- coding: utf-8 -*- +# Copyright (c) 2014 Serv. Tecnol. Avanzados (http://www.serviciosbaeza.com) +# Pedro M. Baeza +# Copyright (c) 2015 Antiun Ingeniería S.L. (http://www.antiun.com) +# Antonio Espinosa +# © 2015 Antiun Ingeniería S.L. - Jairo Llopis +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). + +{ + "name": "Partner job position", + "summary": "Categorize job positions for contacts", + "version": "8.0.1.0.0", + 'category': 'Customer Relationship Management', + "website": "http://www.antiun.com", + 'author': 'Serv. Tecnolog. Avanzados - Pedro M. Baeza, ' + 'Antiun Ingeniería S.L., ' + "Odoo Community Association (OCA)", + "license": "AGPL-3", + "application": False, + "installable": True, + "depends": [ + "base", + ], + "data": [ + 'security/ir.model.access.csv', + 'views/res_partner_job_position_view.xml', + 'views/res_partner_view.xml', + ], +} diff --git a/partner_contact_job_position/i18n/es.po b/partner_contact_job_position/i18n/es.po new file mode 100644 index 000000000..93f2409ab --- /dev/null +++ b/partner_contact_job_position/i18n/es.po @@ -0,0 +1,101 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * crm_job_position +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 8.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2015-12-18 18:22+0100\n" +"PO-Revision-Date: 2015-12-18 18:22+0100\n" +"Last-Translator: <>\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: \n" +"X-Generator: Poedit 1.8.5\n" + +#. module: partner_contact_job_position +#: field:res.partner,job_position_id:0 +msgid "Categorized job position" +msgstr "Puesto de trabajo categorizado" + +#. module: partner_contact_job_position +#: field:res.partner.job_position,child_ids:0 +msgid "Children" +msgstr "Hijos" + +#. module: partner_contact_job_position +#: field:res.partner.job_position,create_uid:0 +msgid "Created by" +msgstr "Creado por" + +#. module: partner_contact_job_position +#: field:res.partner.job_position,create_date:0 +msgid "Created on" +msgstr "Creado en" + +#. module: partner_contact_job_position +#: field:res.partner.job_position,id:0 +msgid "ID" +msgstr "ID" + +#. module: partner_contact_job_position +#: model:ir.actions.act_window,name:partner_contact_job_position.res_partner_job_position_action +#: model:ir.ui.menu,name:partner_contact_job_position.menu_res_partner_job_position +msgid "Job Positions" +msgstr "Puestos de trabajo" + +#. module: partner_contact_job_position +#: model:ir.model,name:partner_contact_job_position.model_res_partner_job_position +#: view:res.partner:partner_contact_job_position.view_res_partner_filter_job_position +msgid "Job position" +msgstr "Puesto de trabajo" + +#. module: partner_contact_job_position +#: view:res.partner.job_position:partner_contact_job_position.res_partner_job_position_form_view +#: view:res.partner.job_position:partner_contact_job_position.res_partner_job_position_tree_view +msgid "Job positions" +msgstr "Puestos de trabajo" + +#. module: partner_contact_job_position +#: field:res.partner.job_position,write_uid:0 +msgid "Last Updated by" +msgstr "Última actualización por" + +#. module: partner_contact_job_position +#: field:res.partner.job_position,write_date:0 +msgid "Last Updated on" +msgstr "Última actualización en" + +#. module: partner_contact_job_position +#: field:res.partner.job_position,name:0 +msgid "Name" +msgstr "Nombre" + +#. module: partner_contact_job_position +#: field:res.partner.job_position,parent_id:0 +msgid "Parent" +msgstr "Padre" + +#. module: partner_contact_job_position +#: field:res.partner.job_position,parent_left:0 +msgid "Parent left" +msgstr "Padre izquierdo" + +#. module: partner_contact_job_position +#: field:res.partner.job_position,parent_right:0 +msgid "Parent right" +msgstr "Padre derecho" + +#. module: partner_contact_job_position +#: model:ir.model,name:partner_contact_job_position.model_res_partner +msgid "Partner" +msgstr "Empresa" + +#. module: partner_contact_job_position +#: view:res.partner:partner_contact_job_position.view_res_partner_filter_job_position +msgid "Salesperson" +msgstr "Comercial" diff --git a/partner_contact_job_position/models/__init__.py b/partner_contact_job_position/models/__init__.py new file mode 100644 index 000000000..213b25fdc --- /dev/null +++ b/partner_contact_job_position/models/__init__.py @@ -0,0 +1,9 @@ +# -*- coding: utf-8 -*- +# Copyright (c) 2014 Serv. Tecnol. Avanzados (http://www.serviciosbaeza.com) +# Pedro M. Baeza +# Copyright (c) 2015 Antiun Ingeniería S.L. (http://www.antiun.com) +# Antonio Espinosa +# © 2015 Antiun Ingeniería S.L. - Jairo Llopis +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). + +from . import res_partner diff --git a/partner_contact_job_position/models/res_partner.py b/partner_contact_job_position/models/res_partner.py new file mode 100644 index 000000000..abb6863fa --- /dev/null +++ b/partner_contact_job_position/models/res_partner.py @@ -0,0 +1,38 @@ +# -*- coding: utf-8 -*- +# Copyright (c) 2014 Serv. Tecnol. Avanzados (http://www.serviciosbaeza.com) +# Pedro M. Baeza +# Copyright (c) 2015 Antiun Ingeniería S.L. (http://www.antiun.com) +# Antonio Espinosa +# © 2015 Antiun Ingeniería S.L. - Jairo Llopis +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). + +from openerp import models, fields + + +class ResPartner(models.Model): + _inherit = 'res.partner' + + job_position_id = fields.Many2one( + "res.partner.job_position", + "Categorized job position", + oldname="job_position") + + +class ResPartnerJobPosition(models.Model): + _name = "res.partner.job_position" + _order = "parent_left" + _parent_order = "name" + _parent_store = True + _description = "Job position" + + name = fields.Char(required=True, translate=True) + parent_id = fields.Many2one( + "res.partner.job_position", + "Parent") + child_ids = fields.One2many( + "res.partner.job_position", + "parent_id", + "Children", + oldname="children") + parent_left = fields.Integer(index=True) + parent_right = fields.Integer(index=True) diff --git a/partner_contact_job_position/security/ir.model.access.csv b/partner_contact_job_position/security/ir.model.access.csv new file mode 100644 index 000000000..93930fc92 --- /dev/null +++ b/partner_contact_job_position/security/ir.model.access.csv @@ -0,0 +1,5 @@ +"id","name","model_id:id","group_id:id","perm_read","perm_write","perm_create","perm_unlink" +"access_res_partner_job_position_public","res_partner_job_position group_public","model_res_partner_job_position","base.group_public",1,0,0,0 +"access_res_partner_job_position_portal","res_partner_job_position group_portal","model_res_partner_job_position","base.group_portal",1,0,0,0 +"access_res_partner_job_position_group_partner_manager","res_partner_job_position group_partner_manager","model_res_partner_job_position","base.group_partner_manager",1,1,1,1 +"access_res_partner_job_position_group_user","res_partner_job_position group_user","model_res_partner_job_position","base.group_user",1,0,0,0 diff --git a/crm_job_position/static/description/icon.png b/partner_contact_job_position/static/description/icon.png similarity index 100% rename from crm_job_position/static/description/icon.png rename to partner_contact_job_position/static/description/icon.png diff --git a/partner_contact_job_position/views/res_partner_job_position_view.xml b/partner_contact_job_position/views/res_partner_job_position_view.xml new file mode 100644 index 000000000..e70b45a91 --- /dev/null +++ b/partner_contact_job_position/views/res_partner_job_position_view.xml @@ -0,0 +1,42 @@ + + + + + + Job Positions + res.partner.job_position + form + tree + + + + Job position tree + res.partner.job_position + + + + + + + + + + Job position form + res.partner.job_position + +
+ + + + + +
+
+
+ + + +
+
diff --git a/crm_job_position/views/res_partner_view.xml b/partner_contact_job_position/views/res_partner_view.xml similarity index 56% rename from crm_job_position/views/res_partner_view.xml rename to partner_contact_job_position/views/res_partner_view.xml index 6ca9186b4..f1a2a0e45 100644 --- a/crm_job_position/views/res_partner_view.xml +++ b/partner_contact_job_position/views/res_partner_view.xml @@ -8,48 +8,34 @@ - + options='{"no_open": True}'/> - - + + options='{"no_open": True}'/> - - Partner search with job position res.partner - + + context="{'group_by': 'job_position_id'}"/> - \ No newline at end of file +