From 3c887e79d21bc10cfcc2c2931d1bec15ff1a30d3 Mon Sep 17 00:00:00 2001 From: Gianluca Date: Tue, 5 Aug 2025 16:25:50 +0200 Subject: [PATCH] nuovo modulo + modifiche a morpheus crm e morpheus contacts --- morpheus_contacts/__manifest__.py | 2 +- .../__pycache__/__init__.cpython-312.pyc | Bin 192 -> 0 bytes .../__pycache__/__init__.cpython-312.pyc | Bin 204 -> 0 bytes .../__pycache__/res_partner.cpython-312.pyc | Bin 3675 -> 0 bytes morpheus_contacts/models/res_partner.py | 18 ++ morpheus_contacts/views/res_partner_view.xml | 11 ++ morpheus_crm/__manifest__.py | 1 + .../__pycache__/__init__.cpython-312.pyc | Bin 187 -> 0 bytes .../__pycache__/__init__.cpython-312.pyc | Bin 196 -> 0 bytes .../__pycache__/crm_lead.cpython-312.pyc | Bin 8181 -> 0 bytes .../crm_lead_category.cpython-312.pyc | Bin 820 -> 0 bytes morpheus_crm/models/crm_lead.py | 50 ++++-- morpheus_crm/views/crm_wishlist_view.xml | 2 +- morpheus_fornitori/__init__.py | 3 + morpheus_fornitori/__manifest__.py | 22 +++ morpheus_fornitori/data/sequences.xml | 12 ++ .../data/supplier_request_stage_data.xml | 77 ++++++++ morpheus_fornitori/models/__init__.py | 4 + morpheus_fornitori/models/supplier_request.py | 124 +++++++++++++ .../models/supplier_request_stage.py | 41 +++++ .../security/ir.model.access.csv | 5 + .../static/description/index.html | 25 +++ morpheus_fornitori/views/menus.xml | 28 +++ morpheus_fornitori/views/menus_prodotti.xml | 9 + .../views/supplier_request_stage_views.xml | 89 ++++++++++ .../views/supplier_request_views.xml | 166 ++++++++++++++++++ 26 files changed, 677 insertions(+), 12 deletions(-) delete mode 100644 morpheus_contacts/__pycache__/__init__.cpython-312.pyc delete mode 100644 morpheus_contacts/models/__pycache__/__init__.cpython-312.pyc delete mode 100644 morpheus_contacts/models/__pycache__/res_partner.cpython-312.pyc delete mode 100644 morpheus_crm/__pycache__/__init__.cpython-312.pyc delete mode 100644 morpheus_crm/models/__pycache__/__init__.cpython-312.pyc delete mode 100644 morpheus_crm/models/__pycache__/crm_lead.cpython-312.pyc delete mode 100644 morpheus_crm/models/__pycache__/crm_lead_category.cpython-312.pyc create mode 100644 morpheus_fornitori/__init__.py create mode 100644 morpheus_fornitori/__manifest__.py create mode 100644 morpheus_fornitori/data/sequences.xml create mode 100644 morpheus_fornitori/data/supplier_request_stage_data.xml create mode 100644 morpheus_fornitori/models/__init__.py create mode 100644 morpheus_fornitori/models/supplier_request.py create mode 100644 morpheus_fornitori/models/supplier_request_stage.py create mode 100644 morpheus_fornitori/security/ir.model.access.csv create mode 100644 morpheus_fornitori/static/description/index.html create mode 100644 morpheus_fornitori/views/menus.xml create mode 100644 morpheus_fornitori/views/menus_prodotti.xml create mode 100644 morpheus_fornitori/views/supplier_request_stage_views.xml create mode 100644 morpheus_fornitori/views/supplier_request_views.xml diff --git a/morpheus_contacts/__manifest__.py b/morpheus_contacts/__manifest__.py index 78a0d5b..0532117 100644 --- a/morpheus_contacts/__manifest__.py +++ b/morpheus_contacts/__manifest__.py @@ -20,5 +20,5 @@ ], 'installable': True, 'application': False, - 'auto_install': False, + 'auto_install': True, } \ No newline at end of file diff --git a/morpheus_contacts/__pycache__/__init__.cpython-312.pyc b/morpheus_contacts/__pycache__/__init__.cpython-312.pyc deleted file mode 100644 index 685f6fec0bad55988cc7737178596069f360f25f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 192 zcmX@j%ge<81o!x)GjxIUV-N=hn4pZ$0zk%eh7^Vr#vF!R#wbQchDs()=9i2>VNJ$c zY`OUWHo2AAff+7)pCO#@k03}Sp>W@Kc1 L#voF}2IK$$9?mdz diff --git a/morpheus_contacts/models/__pycache__/__init__.cpython-312.pyc b/morpheus_contacts/models/__pycache__/__init__.cpython-312.pyc deleted file mode 100644 index 8d977eef555d1ecc49c9d13e3470606687ea70e3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 204 zcmX@j%ge<81dsWoGmJnqhyw#mP{wBgAY(d13PTEG4nraZG%CW?p7Ve7s&kY(NeG50f>K diff --git a/morpheus_contacts/models/__pycache__/res_partner.cpython-312.pyc b/morpheus_contacts/models/__pycache__/res_partner.cpython-312.pyc deleted file mode 100644 index c48c2b973b43ee23e6d24c584453c405aadf29ae..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3675 zcmb7G%~Ko66`zqtqX7isQ+x^rytb?jh)q)E#A|j_HU>=X8XV&g7bZ2;JKaE&(Tv<9 zQN^qeq{;{HX(1Qjvjo6T^1pHA)O@>vbOl zA$06K7vVt=VMWBkN(755(TG5#O)vaL1p$J>(Ie?K;Q4Pw_Hb?fs&T|IEaUi*QVUe^ zke!Vff4(l@roV`|`KYC4wb{d_{u_%$oWQNP?I`(L@}(;Y4?A!PwjC^r0jkYI4PS!l zXh5}lsIf~>ow)0$yXIf#2mR~8Dct*9IO?m#-Q{7gUt+T#4>ZKw3_14q}j+j-kk4vi8_7rrVS3*I#uB)Fs2i; zSV9KLMp+yHu8cveXfp*C*(jKf>joTCByN1#pTJ(zn#D|rf)TfAHk`t~0ziiHUr|?? z31&`5pf*_pz7m6@Zm)C0&d`(V8ER{~l`kN3J2S3kK7(Nv88*rO!5Lj525}$|q#7CI zX{ea0jPgY0!GKkF-O3|sdagUl^vt5Vfbyi&1CiWCkYH+3u%p67&@Ebg^PST-3-b~~ za52a`VvLyjwnlL_;=9{c+w+*iN$@KU_gr}y8Kol9g9d{$1%b~w zubnT$urE9lHsSf>-)2A^jr*HHGhf&X$*Ey;Nyv%|S;>tOa|sO4N? z+f}9vxMPeyce?5op9?oLaG1^MXGb`A^z!lH{`NP&v| zw8k-6LnWj5zO$iaayHSSyxjN_fwo~Z8;9y@%UitUG)8r(TjX@y_tt(jcv}EU8r1wF z!PL}jOQ*<(0ovNnzwe+v(!W;*Hj-tdD%6s5Z+Qi zwv8YimVw-s2lWM*iV-M4!;xnu_|vluT|%MAnMsOH>k_Qg`CtiR#bWEoq`KuQi^0rk zUu4jMCQ(Du$jX3BtuxEEDY(k}BoFb!9YXK)&4v5w1ZdPH{BR6-M!za~jheXIumWi_ z2`v$)d1fN8Nx8!N|cL37QX@gmz1;`fBtWwc{AP1*CQQaAX zfNP7M5Hw}Kg;^JrK&bA~r4Y##wrE1S%2Jaw7|tGrR;ON>rpjE%8K{ z*itbvjLduy85I5IeP4~0a=fp>r<_$N0&~En1|&t*+n$7~n9$%rx{w`k6-_gNEHuq+ z)-)*l5(K2V2~B$nb^?i_QFDW{H{rRfdCTtz3A=d3FMtr52y z1G#}~oZPg4+z=Q5Wq4(5yUDeXkPZrt{p%x#Adc-a>oV>h&U#tBD80ooCP7dwddpmIb z;M&XFVXmCKQf^(Y#-fArvD8~>76vmQ7(W~@Cx^?)o^orZ8kc-oLKw~+Ec?9jgCI@H z6-7vnRhy*YE6376rA_Eicjf)$Ub3w8l#{*Xock8S-bJCmnK~SrEycppU2UFj4CK0ZjD^=D7|vpfc+yAq53Os>d6 zaVC9J#>@xl>xA00~ zzk(sdp-q{|0f?Dl0SytS;}LW_r`DS2QTSq17y+VV1TV0MVCBat_&wj_1CPt* zso^QO##4}MNWt;&&%eKW+HyP00@qjohb8{{XS^hQHjCZo?|Q#az3h7SFQy&d{5~~) z&YplGuL=7z7%EXw6#prVRHa!_ly_76LwiG2fzPWCB9fTf-P(V)_pBV!Z diff --git a/morpheus_contacts/models/res_partner.py b/morpheus_contacts/models/res_partner.py index 2c5c33b..5d86da8 100644 --- a/morpheus_contacts/models/res_partner.py +++ b/morpheus_contacts/models/res_partner.py @@ -71,6 +71,24 @@ class ResPartner(models.Model): 'fornitore.attuale.option', string="Fornitori Attuali dei Clienti" ) + + # Campo per identificare se è un agente + is_agent = fields.Boolean( + string="È un Agente", + help="Spunta questa casella se questo contatto è un agente" + ) + + # Campo Email 2 + email2 = fields.Char( + string="E-mail 2" , + help="Indirizzo email secondario" + ) + + # Campo Note Logistiche (simile alle note interne) + note_logistiche = fields.Html( + string="Note Logistiche", + help="Note logistiche interne con editor ricco" + ) class ResPartnerSector(models.Model): _name = 'res.partner.sector' # Nome tecnico corretto diff --git a/morpheus_contacts/views/res_partner_view.xml b/morpheus_contacts/views/res_partner_view.xml index 0f8418d..c7461a5 100644 --- a/morpheus_contacts/views/res_partner_view.xml +++ b/morpheus_contacts/views/res_partner_view.xml @@ -8,6 +8,12 @@ + + + + + + @@ -35,6 +41,11 @@ + + + + + diff --git a/morpheus_crm/__manifest__.py b/morpheus_crm/__manifest__.py index 783dba0..fc2fe79 100644 --- a/morpheus_crm/__manifest__.py +++ b/morpheus_crm/__manifest__.py @@ -14,4 +14,5 @@ ], 'installable': True, 'application': False, + 'auto_install': True, } diff --git a/morpheus_crm/__pycache__/__init__.cpython-312.pyc b/morpheus_crm/__pycache__/__init__.cpython-312.pyc deleted file mode 100644 index bf1f6b901f53683964fcf77c25ee479b84b4d151..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 187 zcmX@j%ge<81o!x)GjxIUV-N=hn4pZ$0zk%eh7^Vr#vF!R#wbQchDs()=9i2>VNJ$c zY`OU$I!0@+gxVtim`WMq8CAX3Bz G3 diff --git a/morpheus_crm/models/__pycache__/__init__.cpython-312.pyc b/morpheus_crm/models/__pycache__/__init__.cpython-312.pyc deleted file mode 100644 index 805a5872947be89998d661757f3800c00cc7c5dd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 196 zcmX@j%ge<81kTpd8HPamF^B^LOi;#W0U%>KLkdF*V-7EHn znB4rLf{fJC;&`ALKu$_(PH{|pd}dx|NqoFsLFFwD8=zomPO4oI2hco_g~cGo2WCb_ M#%By-MQlJ00IoJMhX4Qo diff --git a/morpheus_crm/models/__pycache__/crm_lead.cpython-312.pyc b/morpheus_crm/models/__pycache__/crm_lead.cpython-312.pyc deleted file mode 100644 index a580d6abdf628eac091cec9bf9e8b83c0a5e8626..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8181 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 X>~^cb5Aom?hL(o@2LMAn+tB|7EpVA| diff --git a/morpheus_crm/models/__pycache__/crm_lead_category.cpython-312.pyc b/morpheus_crm/models/__pycache__/crm_lead_category.cpython-312.pyc deleted file mode 100644 index f22d021a011a6749af7a8d179ba77a9f51be6a2b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 820 zcmZ8fyKWOf6uq-AuN^;#9FYVh;tFXM$t4m5r7@2bi3=Xh%F<}%8QW{^!lOP&&-!nsQ_{%_iy(;X#n4q zku7sY7RQpzfB-=Ogvdpq=4uEucnUO^x5qPwOB)asWvlTuC$ViNO%wQg#Y+!Wk=Vmo0MWpa^R*?S9VL(?e;8)GE~#-f0+>@x}!FJgQ?@`BZgxeSp`LV26{ zgP|Ws!oo2llrcjV5=NuvvE`ghJ>ffG6}hpJ0`-BGpd$I9gelC62b0J1>fOodyi}b$ z`L=cQ^}WlZi=(SM^^ZHBcfM{lCyy34kh!1MQ6-v=DGVhOQ@W>Z%`+uT+F@6D*IkAE lFdgQYsTWeB^F0Z_bcE0kIQVUp(f*sxEO;CI0ZEsc{{YDT%3J^d diff --git a/morpheus_crm/models/crm_lead.py b/morpheus_crm/models/crm_lead.py index 0c4d9e3..c686af8 100644 --- a/morpheus_crm/models/crm_lead.py +++ b/morpheus_crm/models/crm_lead.py @@ -43,7 +43,36 @@ class CrmLead(models.Model): # Questo messaggio potrebbe apparire se la condizione 'invisible' nell'XML non fosse perfetta # o se il metodo fosse chiamato da un'altra parte. raise UserError(_("L'opportunità deve essere nello stadio 'Nuova' per poterla inviare a 'Wishlist verificata'.")) - + + # --- Invio email agli addetti acquisti --- + emails = [] + if self.addetto_acquisti and self.addetto_acquisti.partner_id.email: + emails.append(self.addetto_acquisti.partner_id.email) + if self.addetto_acquisti_2 and self.addetto_acquisti_2.partner_id.email: + emails.append(self.addetto_acquisti_2.partner_id.email) + if not emails: + return True # Nessun destinatario, esci silenziosamente + + base_url = self.env['ir.config_parameter'].sudo().get_param('web.base.url') + opportunity_url = f"{base_url}/web#id={self.id}&model=crm.lead&view_type=form&page=wishlist_cliente" + button_html = f'Apri wishlist cliente' + body_html = f""" + Gentile Ufficio acquisti,

+ è stata verificata la wishlist presente nella seguente opportunità:

+ Nome cliente: {self.partner_id.name}
+ Nome opportunità: {self.name}

+ + {button_html} + """ + mail_values = { + 'subject': f"Wishlist verificata - {self.name}", + 'body_html': body_html, + 'email_to': ','.join(emails), + 'auto_delete': True, + 'model': 'crm.lead', + 'res_id': self.id, + } + self.env['mail.mail'].sudo().create(mail_values).send() return True @@ -75,15 +104,16 @@ class CrmLead(models.Model): self.agente_id = self.partner_id.agente_id self.percent_provvigioni = self.partner_id.percent_provvigioni - @api.model - def create(self, vals): - if vals.get('partner_id'): - partner = self.env['res.partner'].browse(vals['partner_id']) - if not vals.get('agente_id') and partner.agente_id: - vals['agente_id'] = partner.agente_id.id - if not vals.get('percent_provvigioni'): - vals['percent_provvigioni'] = partner.percent_provvigioni - return super(CrmLead, self).create(vals) + @api.model_create_multi + def create(self, vals_list): + for vals in vals_list: + if vals.get('partner_id'): + partner = self.env['res.partner'].browse(vals['partner_id']) + if not vals.get('agente_id') and partner.agente_id: + vals['agente_id'] = partner.agente_id.id + if not vals.get('percent_provvigioni'): + vals['percent_provvigioni'] = partner.percent_provvigioni + return super(CrmLead, self).create(vals_list) # Campi per la Richiesta Offerta diff --git a/morpheus_crm/views/crm_wishlist_view.xml b/morpheus_crm/views/crm_wishlist_view.xml index 0496370..25bb6d6 100644 --- a/morpheus_crm/views/crm_wishlist_view.xml +++ b/morpheus_crm/views/crm_wishlist_view.xml @@ -27,7 +27,7 @@ - +