
    i&                     h    S SK r S SKJrJrJr  S SKJr   " S S5      r " S S5      r " S S	5      r	g)
    N)OptionalListDict)get_connectionc                   h    \ rS rSrSrS\S\S\S\S\S\S	\S
\S\S\S\S\S\S\4S jrS\4S jrSr	g)CRM_OpportunityDTO	   u3   DTO para la información de la oportunidad del CRM.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_emailc                     Xl         X l        X0l        X@l        XPl        X`l        Xpl        Xl        Xl        Xl	        Xl
        Xl        Xl        Xl        g 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                  hC:\Users\victor.barrera\Documents\proyectos\elepV3\Elep\src\App\api\services\quotation_cotiz_services.py__init__CRM_OpportunityDTO.__init__   sX    
 "(%;"//'?$!3"5/!3"5*F'- 1 1    returnc                 <   U R                   U R                  U R                  U R                  U R                  U R
                  U R                  U R                  U R                  U R                  U R                  U R                  U R                  U R                  S.$ )Nr   r   )r)   s    r*   to_dictCRM_OpportunityDTO.to_dict    s    !%!7!7%)%?%?#33#33'+'C'C!%!7!7"&"9"9#33!%!7!7"&"9"9*.*I*I"11 $ 5 5 $ 5 5
 	
r-   )r   r    r"   r!   r$   r(   r%   r   r#   r'   r   r&   r   r   N)
__name__
__module____qualname____firstlineno____doc__strr+   dictr0   __static_attributes__ r-   r*   r   r   	   s    =2s 2C 2SV 2jm 2+.2DG2^a2#&2<?2VY2 032 FI2 ^a2 %(	2(
 
r-   r   c            !           \ rS rSrSrS\S\S\S\S\\   S\\R                     S	\S
\R                  S\S\\   S\\   S\\   S\R                  S\S\	S\\
   4 S jrS\4S jrSrg)TaskDTO3   u   
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.
UserIDTaskIDSellerUserIDFormIDAssignedUserIDAssignedDateStatus
StatusDater   QuotationIDQuotationDateDocsID	UpdatedAt	UpdatedByActivecrm_datac                     Xl         X l        X0l        X@l        XPl        X`l        Xpl        Xl        Xl        Xl	        Xl
        Xl        Xl        Xl        [        U5      U l        UU l        g r   )r>   r?   r@   rA   rB   rC   rD   rE   r   rF   rG   rH   rI   rJ   boolrK   rL   )r)   r>   r?   r@   rA   rB   rC   rD   rE   r   rF   rG   rH   rI   rJ   rK   rL   s                    r*   r+   TaskDTO.__init__9   sb    ( (,($!2&*""6l r-   r.   c                 x   U R                   U R                  U R                  U R                  U R                  U R
                  (       a  U R
                  R                  5       OSU R                  U R                  (       a  U R                  R                  5       OSU R                  U R                  U R                  U R                  U R                  (       a  U R                  R                  5       OSU R                  U R                  S.nU R                   (       a  U R                   R#                  5       US'   U$ )z2Convierte el objeto a un diccionario serializable.N)r>   r?   r@   rA   rB   rC   rD   rE   r   rF   rG   rH   rI   rJ   rK   rL   )r>   r?   r@   rA   rB   rC   	isoformatrD   rE   r   rF   rG   rH   rI   rJ   rK   rL   r0   )r)   	base_dicts     r*   r0   TaskDTO.to_dict^   s     {{kk --kk"11=A=N=ND--779TXkk9=$//335d!%!7!7++!//kk7;~~1134kk
	$ ==$(MM$9$9$;Ij!r-   )rK   rC   rB   r   rH   rA   rG   rF   r@   rD   rE   r?   rI   rJ   r>   rL   N)r2   r3   r4   r5   r6   intr7   r   datetimerN   r   r+   r8   r0   r9   r:   r-   r*   r<   r<   3   s    
#!#! #! 	#!
 #! !#! x001#! #! %%#! #! c]#!  }#! #! $$#! #!  !#!$ -.%#!J r-   r<   c                   :    \ rS rSrSr\S\S\\   4S j5       r	Sr
g)Quotation_Cotiz_Servicew   uT   Clase de servicio para manejar la lógica relacionada con las tareas de cotización.taskIdr.   c                    Sn [        5        nUR                  5        nUR                  X5        UR                  5       nU(       a  [	        US   US   US   US   US   US   US   US	   US
   US   US   US   US   US   S9n[        S10 SUS   _SUS   _SUS   _SUS   _SUS   _SUS   _SUS   _SUS    _S!US   _S"US#   _S$US%   _S&US'   _S(US)   _S*US+   _S,US-   _S.U_6nUsS/S/S/5        sS/S/S/5        $  S/S/S/5        S/S/S/5        g/! , (       d  f       O= f S/S/S/5        g/! , (       d  f       g/= f! [         a  n[        S0U 35         S/nAg/S/nAff = f)2us   
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   r>      r?   r   r@      rA      rB      rC      rD      rE      r   rF      rG   r	   rH   
   rI      rJ      rK      rL   NzError en getQuotationTaskById: r:   )r   cursorexecutefetchoner   r<   	Exceptionprint)rY   queryconnru   rowrL   task_objes           r*   getQuotationTaskById,Quotation_Cotiz_Service.getQuotationTaskByIdz   s   (R0	!T[[]fNN51 //+C#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   
E  D/CD/	D/8	E  DD/E  
D"	D/&E  /
D=9E  =E   
E"
EE"r:   N)r2   r3   r4   r5   r6   staticmethodrT   r   r<   r   r9   r:   r-   r*   rW   rW   w   s.    ^^S ^Xg-> ^ ^r-   rW   )
rU   typingr   r   r   Consultas_SQL.conexionr   r   r<   rW   r:   r-   r*   <module>r      s7     ' ' 2'
 '
TA AHb br-   