Server IP : 127.0.0.2 / Your IP : 3.141.164.124 Web Server : Apache/2.4.18 (Ubuntu) System : User : www-data ( ) PHP Version : 7.0.33-0ubuntu0.16.04.16 Disable Function : disk_free_space,disk_total_space,diskfreespace,dl,exec,fpaththru,getmyuid,getmypid,highlight_file,ignore_user_abord,leak,listen,link,opcache_get_configuration,opcache_get_status,passthru,pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,php_uname,phpinfo,posix_ctermid,posix_getcwd,posix_getegid,posix_geteuid,posix_getgid,posix_getgrgid,posix_getgrnam,posix_getgroups,posix_getlogin,posix_getpgid,posix_getpgrp,posix_getpid,posix,_getppid,posix_getpwnam,posix_getpwuid,posix_getrlimit,posix_getsid,posix_getuid,posix_isatty,posix_kill,posix_mkfifo,posix_setegid,posix_seteuid,posix_setgid,posix_setpgid,posix_setsid,posix_setuid,posix_times,posix_ttyname,posix_uname,pclose,popen,proc_open,proc_close,proc_get_status,proc_nice,proc_terminate,shell_exec,source,show_source,system,virtual MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : ON | Sudo : ON | Pkexec : ON Directory : /opt/odoo/addons/crm/tests/ |
Upload File : |
# -*- coding: utf-8 -*- from .common import TestCrmCases class TestLead2opportunity2win(TestCrmCases): def test_lead2opportunity2win(self): """ Tests for Test Lead 2 opportunity 2 win """ CrmLead2OpportunityPartnerMass = self.env['crm.lead2opportunity.partner.mass'] CalendarAttendee = self.env['calendar.attendee'] default_stage_id = self.ref("crm.stage_lead1") crm_case_2 = self.env.ref('crm.crm_case_2') crm_case_3 = self.env.ref('crm.crm_case_3') crm_case_13 = self.env.ref('crm.crm_case_13') # In order to test the conversion of a lead into a opportunity, # I set lead to open stage. crm_case_3.write({'stage_id': default_stage_id}) # I check if the lead stage is "Open". self.assertEqual(crm_case_3.stage_id.sequence, 1, 'Lead stage is Open') # Giving access rights of salesman to convert the lead into opportunity. # I convert lead into opportunity for exiting customer. crm_case_3.sudo(self.crm_salemanager.id).convert_opportunity(self.env.ref("base.res_partner_2").id) # I check details of converted opportunity. self.assertEqual(crm_case_3.type, 'opportunity', 'Lead is not converted to opportunity!') self.assertEqual(crm_case_3.partner_id.id, self.env.ref("base.res_partner_2").id, 'Partner mismatch!') self.assertEqual(crm_case_3.stage_id.id, default_stage_id, 'Stage of opportunity is incorrect!') # Now I schedule meeting with customer. crm_case_3.action_schedule_meeting() # After communicated with customer, I put some notes with contract details. crm_case_3.message_post(subject='Test note', body='Détails envoyés par le client sur le FAX pour la qualité') # I convert mass lead into opportunity customer. mass = CrmLead2OpportunityPartnerMass.with_context({'active_model': 'crm.lead', 'active_ids': [crm_case_13.id, crm_case_2.id], 'active_id': crm_case_13.id}).create({ 'user_ids': [(6, 0, self.env.ref('base.user_root').ids)], 'team_id': self.env.ref("sales_team.team_sales_department").id }) mass.sudo(self.crm_salemanager.id).mass_convert() # Now I check first lead converted on opportunity. self.assertEqual(crm_case_13.name, "Plan to buy 60 keyboards and mouses", "Opportunity name not correct") self.assertEqual(crm_case_13.type, 'opportunity', "Lead is not converted to opportunity!") expected_partner = "Will McEncroe" self.assertEqual(crm_case_13.partner_id.name, expected_partner, "Partner mismatch! %s vs %s" % (crm_case_13.partner_id.name, expected_partner)) self.assertEqual(crm_case_13.stage_id.id, default_stage_id, "Stage of probability is incorrect!") # Then check for second lead converted on opportunity. self.assertEqual(crm_case_2.name, "Interest in Your New Software", "Opportunity name not correct") self.assertEqual(crm_case_2.type, "opportunity", "Lead is not converted to opportunity!") self.assertEqual(crm_case_2.stage_id.id, default_stage_id, "Stage of probability is incorrect!") # I loose the second opportunity crm_case_2.action_set_lost() # I check details of the opportunity after the loose self.assertEqual(crm_case_2.probability, 0.0, "Revenue probability should be 0.0!") # I confirm review needs meeting. self.env.ref('calendar.calendar_event_4').with_context({'active_model': 'calendar.event'}).write({'state': 'open'}) # I invite a user for meeting. CalendarAttendee.create({'partner_id': self.ref('base.partner_root'), 'email': 'user@meeting.com'}).do_accept() def test_lead2opportunity_assign_salesmen(self): """ Tests for Test Lead2opportunity Assign Salesmen """ CrmLead2OpportunityPartnerMass = self.env['crm.lead2opportunity.partner.mass'] LeadSaleman = self.env['crm.lead'].sudo(self.crm_salesman.id) default_stage_id = self.ref("crm.stage_lead1") # During a lead to opp conversion, salesmen should be assigned to leads following the round-robin method. Start by creating 4 salesmen (A to D) and 6 leads (1 to 6). test_res_user_01 = self.env['res.users'].create({ 'name': 'Test user A', 'login': 'tua@example.com', 'new_password': 'tua' }) test_res_user_02 = self.env['res.users'].create({ 'name': 'Test user B', 'login': 'tub@example.com', 'new_password': 'tub' }) test_res_user_03 = self.env['res.users'].create({ 'name': 'Test user C', 'login': 'tuc@example.com', 'new_password': 'tuc' }) test_res_user_04 = self.env['res.users'].create({ 'name': 'Test user D', 'login': 'tud@example.com', 'new_password': 'tud' }) # Salesman also creates lead so giving access rights of salesman. test_crm_lead_01 = LeadSaleman.create({ 'type': 'lead', 'name': 'Test lead 1', 'email_from': 'Raoul Grosbedon <raoul@grosbedon.fr>', 'stage_id': default_stage_id }) test_crm_lead_02 = LeadSaleman.create({ 'type': 'lead', 'name': 'Test lead 2', 'email_from': 'Raoul Grosbedon <raoul@grosbedon.fr>', 'stage_id': default_stage_id }) test_crm_lead_03 = LeadSaleman.create({ 'type': 'lead', 'name': 'Test lead 3', 'email_from': 'Raoul Grosbedon <raoul@grosbedon.fr>', 'stage_id': default_stage_id }) test_crm_lead_04 = LeadSaleman.create({ 'type': 'lead', 'name': 'Test lead 4', 'email_from': 'Fabrice Lepoilu', 'stage_id': default_stage_id }) test_crm_lead_05 = LeadSaleman.create({ 'type': 'lead', 'name': 'Test lead 5', 'email_from': 'Fabrice Lepoilu', 'stage_id': default_stage_id }) test_crm_lead_06 = LeadSaleman.create({ 'type': 'lead', 'name': 'Test lead 6', 'email_from': 'Agrolait SuperSeed SA', 'stage_id': default_stage_id }) lead_ids = [test_crm_lead_01.id, test_crm_lead_02.id, test_crm_lead_03.id, test_crm_lead_04.id, test_crm_lead_05.id, test_crm_lead_06.id] salesmen_ids = [test_res_user_01.id, test_res_user_02.id, test_res_user_03.id, test_res_user_04.id] # Salesman create a mass convert wizard and convert all the leads. additionnal_context = {'active_model': 'crm.lead', 'active_ids': lead_ids, 'active_id': test_crm_lead_01.id} mass = CrmLead2OpportunityPartnerMass.sudo(self.crm_salesman.id).with_context(**additionnal_context).create({ 'user_ids': [(6, 0, salesmen_ids)], 'team_id': self.env.ref("sales_team.team_sales_department").id, 'deduplicate': False, 'force_assignation': True }) mass.sudo(self.crm_salesman.id).mass_convert() # The leads should now be opps with a salesman and a salesteam. Also, salesmen should have been assigned following a round-robin method. opps = self.env['crm.lead'].sudo(self.crm_salesman.id).browse(lead_ids) i = 0 for opp in opps: self.assertEqual(opp.type, 'opportunity', 'Type mismatch: this should be an opp, not a lead') self.assertEqual(opp.user_id.id, salesmen_ids[i], 'Salesman mismatch: expected salesman %r, got %r' % (salesmen_ids[i], opp.user_id.id)) i = i + 1 if (i < len(salesmen_ids) - 1) else 0