+
    i&                     j    ^ RI t ^ RIHtHtHt ^ RIHt  ! R R4      t ! R R4      t ! R R	4      t	R# )
    N)OptionalListDict)get_connectionc                   H   a  ] tR t^	t o RtV 3R lR ltV 3R lR ltRtV tR# )CRM_OpportunityDTOu3   DTO para la información de la oportunidad del CRM.c                n   < V ^8  d   QhRS[ RS[ RS[ RS[ RS[ RS[ RS[ RS[ R	S[ R
S[ RS[ RS[ RS[ RS[ /# )   crm_idcrm_opportunity_numbercrm_contact_namecrm_contact_typecrm_assigned_salespersoncrm_contact_adresscrm_contact_coloniacrm_contact_citycrm_contact_numbercrm_contact_countrycrm_contact_legal_identifiercrm_contact_zipcrm_contact_statecrm_contact_email)str)format__classdict__s   "hC:\Users\victor.barrera\Documents\proyectos\elepV3\Elep\src\App\api\services\quotation_cotiz_services.py__annotate__CRM_OpportunityDTO.__annotate__   s     2 2s 2C 2SV 2jm 2+.2DG2^a2#&2<?2VY2 032 FI2 ^a2 %(	2    c                    Wn         W n        W0n        W@n        WPn        W`n        Wpn        Wn        Wn        Wn	        Wn
        Wn        Wn        Wn        R # NCRM_OpportunityIDCRM_OpportunityNumberCRM_ContactNameCRM_ContactTypeCRM_AssignedSalespersonCRM_ContactAdressCRM_ContactColoniaCRM_ContactCityCRM_ContactNumberCRM_ContactCountryCRM_ContactLegalIdentifierCRM_ContactZipCRM_ContactStateCRM_ContactEmail)selfr   r   r   r   r   r   r   r   r   r   r   r   r   r   s   &&&&&&&&&&&&&&&r   __init__CRM_OpportunityDTO.__init__   sX    
 "(%;"//'?$!3"5/!3"5*F'- 1 1r   c                    < V ^8  d   QhRS[ /# r
   returndict)r   r   s   "r   r   r       s     
 
 
r   c                V   R V P                   RV P                  RV P                  RV P                  RV P                  RV P
                  RV P                  RV P                  RV P                  R	V P                  R
V P                  RV P                  RV P                  RV P                  /# r"   r"   )r1   s   &r   to_dictCRM_OpportunityDTO.to_dict    s    !7!7#T%?%?t33t33%t'C'C!7!7 $"9"9t33!7!7 $"9"9($*I*Id11 5 5 5 5
 	
r   )r'   r(   r*   r)   r,   r0   r-   r%   r+   r/   r&   r.   r#   r$   N	__name__
__module____qualname____firstlineno____doc__r2   r:   __static_attributes____classdictcell__r   s   @r   r   r   	   s     =2 2(
 
r   r   c                   H   a  ] tR t^3t o RtV 3R lR ltV 3R lR ltRtV tR# )TaskDTOu   
Objeto de Transferencia de Datos (DTO) para la información de las tareas de cotización.
Ahora incluye los datos de la oportunidad del CRM.
c          !        < V ^8  d   QhRS[ RS[ RS[ RS[RS[S[ ,          RS[S[P                  ,          RS[RS[P                  R	S[R
S[S[,          RS[S[,          RS[S[ ,          RS[P                  RS[RS[RS[S[,          /# )r
   UserIDTaskIDSellerUserIDFormIDAssignedUserIDAssignedDateStatus
StatusDater#   QuotationIDQuotationDateDocsID	UpdatedAt	UpdatedByActivecrm_data)intr   r   datetimeboolr   )r   r   s   "r   r   TaskDTO.__annotate__9   s     #! #!#! #! 	#!
 #! !#! x001#! #! %%#! #! c]#!  }#! #! $$#! #!  !#!$ -.%#!r   c                    Wn         W n        W0n        W@n        WPn        W`n        Wpn        Wn        Wn        Wn	        Wn
        Wn        Wn        Wn        \        V4      V n        VV n        R # r!   )rH   rI   rJ   rK   rL   rM   rN   rO   r#   rP   rQ   rR   rS   rT   rY   rU   rV   )r1   rH   rI   rJ   rK   rL   rM   rN   rO   r#   rP   rQ   rR   rS   rT   rU   rV   s   &&&&&&&&&&&&&&&&&r   r2   TaskDTO.__init__9   sb    ( (,($!2&*""6l r   c                    < V ^8  d   QhRS[ /# r5   r7   )r   r   s   "r   r   rZ   ^   s       r   c                   RV P                   RV P                  RV P                  RV P                  RV P                  RV P
                  '       d   V P
                  P                  4       MRRV P                  R	V P                  '       d   V P                  P                  4       MRR
V P                  RV P                  RV P                  RV P                  RV P                  '       d   V P                  P                  4       MRRV P                  RV P                  /pV P                   '       d   V P                   P#                  4       VR&   V# )z2Convierte el objeto a un diccionario serializable.rH   rI   rJ   rK   rL   rM   NrN   rO   r#   rP   rQ   rR   rS   rT   rU   rV   )rH   rI   rJ   rK   rL   rM   	isoformatrN   rO   r#   rP   rQ   rR   rS   rT   rU   rV   r:   )r1   	base_dicts   & r   r:   TaskDTO.to_dict^   s    t{{dkkD--dkkd11T=N=N=ND--779TXdkk$//335d!7!74++T//dkkt~~~1134dkk
	$ ===$(MM$9$9$;Ij!r   )rU   rM   rL   r#   rR   rK   rQ   rP   rJ   rN   rO   rI   rS   rT   rH   rV   Nr<   rD   s   @r   rF   rF   3   s     
#! #!J r   rF   c                   @   a  ] tR t^wt o Rt]V 3R lR l4       tRtV tR# )Quotation_Cotiz_ServiceuT   Clase de servicio para manejar la lógica relacionada con las tareas de cotización.c                6   < V ^8  d   QhRS[ RS[S[,          /# )r
   taskIdr6   )rW   r   rF   )r   r   s   "r   r   $Quotation_Cotiz_Service.__annotate__{   s$     ^ ^S ^Xg-> ^r   c                   Rp \        4       ;_uu_ 4       pVP                  4       ;_uu_ 4       pVP                  W4       VP                  4       pV'       Ed4   \	        V^,          V^,          V^,          V^,          V^,          V^,          V^,          V^,          V^,          V^,          V^,          V^,          V^,          V^,          R7      p\        R/ RV^,          bRV^ ,          bRV^,          bRV^,          bRV^,          bRV^,          bR	V^,          bR
V^,          bRV^,          bRV^,          bRV^	,          bRV^
,          bRV^,          bRV^,          bRV^,          bRVb pVuuRRR4       uuRRR4       #  RRR4       RRR4       R#   + '       g   i     M; i RRR4       R#   + '       g   i     R# ; i  \         d   p\        RT 24        Rp?R# Rp?ii ; i)us   
Recupera una única tarea de cotización y los datos de la oportunidad del CRM
por su TaskID, utilizando un JOIN.
a  
                SELECT
                        Q_SpQ_QuotationTasks.TaskID, --0
                        Q_SpQ_QuotationTasks.SellerUserID, --1
                        Q_SpQ_QuotationTasks.FormID, --2
                        Q_SpQ_QuotationTasks.AssignedUserID, --3
                        Q_SpQ_QuotationTasks.AssignedDate, --4
                        Q_SpQ_QuotationTasks.Status, --5
                        Q_SpQ_QuotationTasks.StatusDate, --6
                        Q_SpQ_QuotationTasks.CRM_OpportunityID, --7
                        Q_SpQ_QuotationTasks.CostingID, --8
                        Q_SpQ_QuotationTasks.CostingDate, --9
                        Q_SpQ_QuotationTasks.DocsID, --10
                        Q_SpQ_QuotationTasks.UpdatedAt, --11
                        Q_SpQ_QuotationTasks.UpdatedBy, --12
                        Q_SpQ_QuotationTasks.Active, --13

                        Q_OpportunityCRM.CRM_OpportunityNumber, --14
                        Q_OpportunityCRM.Version, --15
                        Q_OpportunityCRM.UserID, --16
                        Q_OpportunityCRM.CRM_ContactID, --17
                        Q_OpportunityCRM.CRM_ContactName, --18
                        Q_OpportunityCRM.CRM_ContactType, --19
                        Q_OpportunityCRM.CRM_AssignedSalesperson, --20
                        Q_OpportunityCRM.CRM_ContactAdress, --21
                        Q_OpportunityCRM.CRM_ContactColonia, --22
                        Q_OpportunityCRM.CRM_ContactCity, --23
                        Q_OpportunityCRM.CRM_ContactNumber, --24
                        Q_OpportunityCRM.CRM_ContactCountry, --25
                        Q_OpportunityCRM.CRM_ContactLegalIdentifier, --26
                        Q_OpportunityCRM.CRM_ContactZip, --27
                        Q_OpportunityCRM.CRM_ContactState, --28
                        Q_OpportunityCRM.CRM_ContactEmail --29
                    FROM
                        Q_SpQ_QuotationTasks
                    INNER JOIN
                        Q_OpportunityCRM ON Q_SpQ_QuotationTasks.CRM_OpportunityID = Q_OpportunityCRM.CRM_OpportunityID
                    WHERE
                        Q_SpQ_QuotationTasks.TaskID = ?;

                )r   r   r   r   r   r   r   r   r   r   r   r   r   r   rH   rI   rJ   rK   rL   rM   rN   rO   r#   rP   rQ   rR   rS   rT   rU   rV   NzError en getQuotationTaskById:  )r   cursorexecutefetchoner   rF   	Exceptionprint)re   queryconnri   rowrV   task_objes   &       r   getQuotationTaskById,Quotation_Cotiz_Service.getQuotationTaskByIdz   s   (R0	!!T[[]]fNN51 //+Cs#5#&q636r7-0W-0W58W/22w03B-0W/22w03B9<R,/G.1"g.1"g$" $+ $%(W$#&q6$ *-Q$ $'q6	$
 ,/q6$ *-Q$ $'q6$ (+1v$ /2!f$ ),A$ +.a&$ $'r7$ '*"g$ '*"g$ $'r7$  &.!$$  (S #] "!X  $W # "!"]] "!!!Z  	3A378	sd   G F>E	F 	8
F>
G F 	F>G  F0+F>4G >G		G G G6G11G6rh   N)	r=   r>   r?   r@   rA   staticmethodrs   rB   rC   rD   s   @r   rc   rc   w   s     ^^ ^r   rc   )
rX   typingr   r   r   Consultas_SQL.conexionr   r   rF   rc   rh   r   r   <module>rx      s7     ' ' 2'
 '
TA AHb br   