+
    i[/                     J    ^ RI t ^ RIHt R tR tR tR tR tR tR	 t	R
 t
R# )    N)get_connectionc                L   Rp \        4       pV'       g   \        R4      hVP                  4       pVP                  W4       VP	                  4       pV Uu. uF  pRV^ ,          /NK  	  upV'       d   VP                  4        # # u upi   \         d4   p\        RT 24       . u Rp?X'       d   TP                  4        # # Rp?i\         d4   p\        RT 24       . u Rp?X'       d   TP                  4        # # Rp?ii ; i  X'       d   TP                  4        i i ; i)z'
Obtiene los correos de los empleados.
z?
       SELECT Correos FROM CorreosdeModulos WHERE  ID = ?
    4   No se pudo establecer conexión con la base de datosCorreos   [Error de conexión] Nz:[Error inesperado] Error obteniendo correos de empleados: r   ConnectionErrorcursorexecutefetchallcloseprint	Exception)idqueryconnr
   resultsrowcees   &       YC:\Users\victor.barrera\Documents\proyectos\elepV3\Elep\src\Consultas_SQL\registration.pyget_Correo_Solicitud_de_altar      s    E!"XYYu#//#/67wCF#w7 JJL  8 %bT*+	 JJL   J1#NO	 JJL 
 JJL s`   AB B*B B DC%D&D DDD !D"D  DD D#c                  ^   R p  \        4       pV'       g   \        R4      hVP                  4       pVP                  V 4       VP	                  4       pV Uu. uF  pRV^ ,          RV^,          /NK  	  upV'       d   VP                  4        # # u upi   \         d4   p\        RT 24       . u Rp?X'       d   TP                  4        # # Rp?i\         d4   p\        RT 24       . u Rp?X'       d   TP                  4        # # Rp?ii ; i  X'       d   TP                  4        i i ; i)z&SELECT CompanyID, Company FROM Companyr   	CompanyIDCompanyr   N1   [Error inesperado] Error obteniendo compañías: r   r   r   r
   r   r   r   r   s          r   get_companiesr   %   s   4E!"XYYu//# ELLGSc!fiQ8GL JJL  M %bT*+	
 JJL 	  A!EF	JJL 	 JJL `   AB B3B B DC.D/D DDD	*D+D 	DD D,c                 ^   Rp  \        4       pV'       g   \        R4      hVP                  4       pVP                  V 4       VP	                  4       pV Uu. uF  pRV^ ,          RV^,          /NK  	  upV'       d   VP                  4        # # u upi   \         d4   p\        RT 24       . u Rp?X'       d   TP                  4        # # Rp?i\         d4   p\        RT 24       . u Rp?X'       d   TP                  4        # # Rp?ii ; i  X'       d   TP                  4        i i ; i)ud   
Obtiene las compañías desde la base de datos.
Retorna una lista de diccionarios con ID y Nombre.
zCSELECT RequestTypeID, RequestType FROM RequestType WHERE Active = 1r   RequestTypeIDRequestTyper   Nr   r   r   s          r   get_RequestTyper#   <   s   
 RE!"XYYu//# MTTGS#a&-Q@GT JJL  U %bT*+	 JJL   A!EF	 JJL 
 JJL r   c                `   Rp \        4       pV'       g   \        R4      hVP                  4       pVP                  W34       VP	                  4       pV Uu. uF  pRV^ ,          RV^,          /NK  	  upV'       d   VP                  4        # # u upi   \         d4   p\        RT 24       . u Rp?X'       d   TP                  4        # # Rp?i\         d4   p\        RT 24       . u Rp?X'       d   TP                  4        # # Rp?ii ; i  X'       d   TP                  4        i i ; i)s   
Obtiene las divisiones asociadas a una compañía específica.
Retorna una lista de diccionarios con ID y Nombre.
zWSELECT DivisionID, Division FROM Division WHERE CompanyID = ? AND DivisionID != 'CLIE' r   r   namer   N0[Error inesperado] Error obteniendo divisiones: r   )
company_idr   r   r
   r   r   r   r   s   &       r   get_divisions_by_companyr)   X   s   
 fE!"XYYum,//#:AB'3s1vvs1v.'B JJL  C %bT*+	 JJL   @DE	 JJL 
 JJL s`   AB B4B B D C/D0D DDD
+D,D 
DD D-c                N   Rp \        4       pV'       g   \        R4      hVP                  4       pVP                  W34       VP	                  4       pV Uu. uF  pRV^ ,          /NK  	  upV'       d   VP                  4        # # u upi   \         d4   p\        RT 24       . u Rp?X'       d   TP                  4        # # Rp?i\         d4   p\        RT 24       . u Rp?X'       d   TP                  4        # # Rp?ii ; i  X'       d   TP                  4        i i ; i)r%   z3SELECT  Division FROM Division WHERE DivisionID = ?r   Divisionr   Nr'   r   )
Divisionidr   r   r
   r   r   r   r   s   &       r   get_divisions_by_idr-   t   s    
 BE!"XYYum,//#078SV$8 JJL  9 %bT*+	 JJL   @DE	 JJL 
 JJL s`   AB B+B B DC&D'D	 DDD"D#D	 DD	 	D$c                b   Rp \        4       pV'       g   \        R4      hVP                  4       pVP                  W V34       VP	                  4       pV Uu. uF  pRV^ ,          RV^,          /NK  	  upV'       d   VP                  4        # # u upi   \         d4   p\        RT 24       . u Rp?X'       d   TP                  4        # # Rp?i\         d4   p\        RT 24       . u Rp?X'       d   TP                  4        # # Rp?ii ; i  X'       d   TP                  4        i i ; i)ut   
Obtiene los departamentos filtrados por compañía y división.
Retorna una lista de diccionarios con ID y Nombre.
zy
        SELECT DepartamentID, Departament 
        FROM Departament 
        WHERE CompanyID = ? AND DivisionID = ?
    r   r   r&   r   Nz3[Error inesperado] Error obteniendo departamentos: r   )	r(   division_idr   r   r
   r   r   r   r   s	   &&       r   'get_departments_by_company_and_divisionr0      s   
E
!"XYYu;78//#:AB'3s1vvs1v.'B JJL  C %bT*+	 JJL   CA3GH	 JJL 
 JJL s`   AB B5B B D!C0D1D DDD,D-D DD D.c           "     4   RVRR/pVR8X  d   TP                  RV P                  RR4      RV P                  R	R4      R
V P                  RR4      RV P                  RR4      RV P                  RR4      RV P                  RR4      RV P                  RR4      RV P                  RR4      RV P                  RR4      RV P                  RR4      RV P                  RR4      RV P                  R4      RE9   d   ^M^ /4       V# VRF9   d   TP                  RV P                  RR4      RV P                  RR4      R
V P                  R R4      RV P                  R!R4      RV P                  R"R4      RV P                  R#R4      RV P                  R$R4      RV P                  R%R4      RV P                  R&R4      RV P                  R'R4      RV P                  R(4      RE9   d   ^M^ /4       V# VR)8X  Ed(   TP                  R*V P                  R+R4      R,V P                  R-R4      R.V P                  R/R4      R0V P                  R1R4      R2V P                  R3R4      RV P                  R4R4      R5V P                  R6R4      R7V P                  R8R4      R9V P                  R:R4      R;V P                  R<R4      R=V P                  R>R4      R?V P                  R@R4      RAV P                  RBR4      RV P                  RCR4      RV P                  RD4      RE9   d   ^M^ /4       V# )GuI   
Prepara los datos del formulario para la inserción en la base de datos
r!   Status	PENDIENTEu   DISMÉXBusinessNameMX_BusinessName LegalRepresentativeMX_LegalRepresentativePrimaryContactMX_PrimaryContactContactEmailMX_ContactEmailFiscalAddressMX_FiscalAddress
PostalCodeMX_PostalCodeStateMX_StateCityMX_CityRFCMX_RFCContactPhoneMX_ContactPhoneCommentsMX_CommentsTermsMX_TermsEU_BusinessNameEU_LegalRepresentativeEU_PrimaryContactEU_ContactEmailEU_FiscalAddressEU_PostalCodeEU_StateEU_CityEU_ContactPhoneEU_CommentsEU_TermsEMPLEADO	FirstNameEMPFirstName
MiddleNameEMPMiddleNameLastNameEMPLastNameSecondLastNameEMPSecondLastNameCorporateEmailEMPCorporateEmailEMPContactPhoneEmployeeNumberEMPEmployeeNumberr   EMPCompanyID
DivisionIDEMPDivisionIDDepartamentIDEMPDepartamentIDPositionEMPPositionDirectSupervisorEMPDirectSupervisorPermissionTypeEMPPermissionTypeEMPCommentsEMPTerms)true1onT)DISEUADISCAN)updateget)datarequest_typeprocessed_datas   && r   prepare_form_datar}      s    	+N
 y DHH%6;!488,Db#Idhh':B?DHH%6;TXX&8"=$((?B7TXXj"-DHHY+488Hb)DHH%6;3$((:.2KKQQR
 	j M 
-	-DHH%6;!488,Db#Idhh':B?DHH%6;TXX&8"=$((?B7TXXj"-DHHY+DHH%6;3$((:.2KKQQR
 	H - 
	#."5$((?B73dhh':B?dhh':B?DHH%6;dhh':B?."5$((?B7TXX&8"=3)> Cdhh':B?3$((:.2KKQQR
 	(     c                    \        4       pV'       g   \        R4      hVP                  4       p. p. p. p. ROpV P                  4        F  w  rxVR8w  g   K  Vf   K  VP	                  V4       \        V\        4      '       d7   Wv9  d1   VP                  4       P                  4       p	VP	                  V	4       MVP	                  V4       VP	                  R4       K  	  VP	                  R4       VP	                  R4       RRP                  V4       R	RP                  V4       R
2p
VP                  W4       VP                  R4       VP                  4       ^ ,          pVP                  4        RV'       d   VP                  4        # #   \         dB   p\        RT 24       RR\        T4       23u Rp?X'       d   TP                  4        # # Rp?i\        P                    dB   p\        RT 24       RR\        T4       23u Rp?X'       d   TP                  4        # # Rp?i\"         dB   p\        RT 24       RR\        T4       23u Rp?X'       d   TP                  4        # # Rp?i\$         dB   p\        RT 24       RR\        T4       23u Rp?X'       d   TP                  4        # # Rp?ii ; i  X'       d   TP                  4        i i ; i)u   
Inserta una nueva solicitud en la tabla UserRequests.
Params:
    request_data: diccionario con los datos del formulario
Returns:
    tuple: (bool, str) - (éxito, mensaje)
r   	RequestIDN?	CreatedAtz8SYSDATETIMEOFFSET() AT TIME ZONE 'Central Standard Time'z#
        INSERT INTO UserRequests (z, z)
        VALUES (z
)
        zSELECT @@IDENTITYr   Fu   Error de conexión: z[Error de integridad] zError: u   [Error de validación] u   Error de validación: z/[Error inesperado] Error insertando solicitud: zError inesperado: )ra   r!   r   rg   ri   r2   )Tz"Solicitud registrada exitosamente )r   r	   r
   itemsappend
isinstancestrstrip
capitalizejoinr   fetchonecommitr   r   pyodbcIntegrityError
ValueErrorr   )request_datar   r
   fieldsvaluesplaceholdersexclude_formattingfieldvalueformatted_valuer   new_idr   iever   s   &               r   insert_user_requestr      s   C!"XYY  w )..0LE#(9e$ eS))e.M&+kkm&>&>&@OMM/2MM%(##C( 1  	k"VW##'99V#4"5 6<() *	 	u% 	*+"1%: JJL   7%bT*+,SWI666 JJL     *&rd+,By))) JJL   9't,-.s2wi888
 JJL 	  4?sCD*3q6(333JJL 	4 JJL s   AF F DF KG5K6K K+K,H(	K
K (K5K6I2KK 2K?K J<KK <KK K)r   Consultas_SQL.conexionr   r   r   r#   r)   r-   r0   r}   r    r~   r   <module>r      s9     1<.888BAFKr~   