refactor(Asignación de prospectos): se extrae método
This commit is contained in:
		| @@ -59,3 +59,13 @@ class Prospect(ModelSQL, ModelView, DeactivableMixin): | ||||
|     def on_change_city(self): | ||||
|         if self.city: | ||||
|             self.department = self.city.parent | ||||
|  | ||||
|     # TODO assign to current user if is operator | ||||
|     # @classmethod | ||||
|     # def create(cls, values): | ||||
|     #     records = super().create(values) | ||||
|     #     Transaction.atexit( | ||||
|     #         lambda: cls.try_assign_to_current_operator(records)) | ||||
|  | ||||
|     # @classmethod | ||||
|     # def try_assign_to_current_operator(cls, prospect, user) | ||||
|   | ||||
| @@ -6,6 +6,56 @@ from trytond.wizard import Wizard, StateView, Button, StateTransition | ||||
| from trytond.model import ModelView, fields | ||||
| from trytond.pyson import Eval | ||||
| from trytond.pool import Pool | ||||
| from core.Prospect.models.prospect import Prospect | ||||
|  | ||||
| from core.ProspectTrace.models.prospect_trace import ProspectTrace | ||||
|  | ||||
|  | ||||
| class AssignOperator(Wizard): | ||||
|     'Asignar operador a prospecto' | ||||
|     __name__ = 'sale.prospect.assign' | ||||
|  | ||||
|     start = StateView( | ||||
|         'sale.prospect.assign.start', | ||||
|         'sale_opportunity_management.assign_start_view_form', [ | ||||
|             Button("Cancel", 'end', 'tryton-cancel'), | ||||
|             Button("Assign", 'assign', 'tryton-ok', default=True)]) | ||||
|  | ||||
|     assign = StateTransition() | ||||
|  | ||||
|     def transition_assign(self): | ||||
|         _prospects = self.start.prospects | ||||
|         _operator = self.start.operator | ||||
|  | ||||
|         self._assign_operator(_prospects, _operator) | ||||
|  | ||||
|         return 'end' | ||||
|  | ||||
|     def _assign_operator(self, prospects, operator): | ||||
|  | ||||
|         for prospect in prospects: | ||||
|             prospect.assigned_operator = operator | ||||
|             prospect.state = 'assigned' | ||||
|  | ||||
|             prospect_trace = self._create_prospect_trace(prospect) | ||||
|  | ||||
|             prospect.prospect_trace = prospect_trace | ||||
|             prospect.save() | ||||
|  | ||||
|     def _create_prospect_trace(self, prospect: Prospect) -> ProspectTrace: | ||||
|         pool = Pool() | ||||
|         ProspectTrace = pool.get('sale.prospect_trace') | ||||
|  | ||||
|         prospect_trace = ProspectTrace( | ||||
|             prospect=prospect, | ||||
|             prospect_city=prospect.city, | ||||
|             prospect_business_unit=prospect.business_unit, | ||||
|             prospect_assigned_operator=prospect.assigned_operator, | ||||
|             prospect_contacts=prospect.contact_methods | ||||
|         ) | ||||
|  | ||||
|         prospect_trace.save() | ||||
|         return prospect_trace | ||||
|  | ||||
|  | ||||
| class AssignOperatorStart(ModelView): | ||||
| @@ -45,39 +95,3 @@ class AssignOperatorStart(ModelView): | ||||
|                 [('state', '=', 'unassigned'), | ||||
|                  ('business_unit', '=', self.business_unit)], | ||||
|                 limit=self.prospects_chunk) | ||||
|  | ||||
|  | ||||
| class AssignOperator(Wizard): | ||||
|     'Asignar operador a prospecto' | ||||
|     __name__ = 'sale.prospect.assign' | ||||
|  | ||||
|     start = StateView( | ||||
|         'sale.prospect.assign.start', | ||||
|         'sale_opportunity_management.assign_start_view_form', [ | ||||
|             Button("Cancel", 'end', 'tryton-cancel'), | ||||
|             Button("Assign", 'assign', 'tryton-ok', default=True)]) | ||||
|  | ||||
|     assign = StateTransition() | ||||
|  | ||||
|     def transition_assign(self): | ||||
|         pool = Pool() | ||||
|         ProspectTrace = pool.get('sale.prospect_trace') | ||||
|  | ||||
|         for prospect in self.start.prospects: | ||||
|             prospect.assigned_operator = self.start.operator | ||||
|             prospect.state = 'assigned' | ||||
|             prospect.save() | ||||
|  | ||||
|             prospect_trace = ProspectTrace( | ||||
|                 prospect=prospect, | ||||
|                 prospect_city=prospect.city, | ||||
|                 prospect_business_unit=prospect.business_unit, | ||||
|                 prospect_assigned_operator=prospect.assigned_operator, | ||||
|                 prospect_contacts=prospect.contact_methods | ||||
|             ) | ||||
|             prospect_trace.save() | ||||
|  | ||||
|             prospect.prospect_trace = prospect_trace | ||||
|             prospect.save() | ||||
|  | ||||
|         return 'end' | ||||
|   | ||||
							
								
								
									
										28
									
								
								core/Prospect/wizards/assign_to_me.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										28
									
								
								core/Prospect/wizards/assign_to_me.py
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,28 @@ | ||||
| # This file is part of Tryton.  The COPYRIGHT file at the top level of | ||||
| # this repository contains the full copyright notices and license terms. | ||||
|  | ||||
| from trytond.wizard import Wizard, StateView, Button, StateTransition | ||||
| from trytond.model import ModelView, fields | ||||
|  | ||||
|  | ||||
| class AssignToMe(Wizard): | ||||
|     'Asignar un prospecto al usuario actual' | ||||
|     __name__ = 'sale.prospect.assign_to_me' | ||||
|  | ||||
|     start = StateView( | ||||
|         model_name='sale.prospect.assign_to_me.start', | ||||
|         view='sale_opportunity_management.assign_to_me_start_view_form', | ||||
|         buttons=[ | ||||
|             Button("Cancel", 'end', 'tryton-cancel'), | ||||
|             Button("Confirm", 'confirm', 'tryton-ok', default=True) | ||||
|         ] | ||||
|     ) | ||||
|  | ||||
|     start = StateTransition() | ||||
|  | ||||
|  | ||||
| class AssignToMeStart(ModelView): | ||||
|     'Inicio de asignación de un prospecto al usuario actual' | ||||
|     __name__ = 'sale.prospect.assign_to_me.start' | ||||
|  | ||||
|     assign_to_me = fields.Boolean("Assign to me?") | ||||
		Reference in New Issue
	
	Block a user