
    tz0i                         S SK J r   S SKrS SKJrJrJrJrJr  S SKJ	r	  S SK
JrJrJrJrJrJrJrJrJrJrJrJr  \R.                  " S5      rS rg)    )datetimeN)appjsonifyrender_templaterequestsession)check_user_access)buscar_tarea_crmbuscar_oportunidad_crmdata_for_emailenviarCorreoCostingCreadogenerar_costing_headSQLget_currencies	get_taxesobtener_contexto_usuarioobtener_datos_formularioupload_archivos_simpleuploadFileAuxiliarupdate_costing_head_docsidSQLcotizaciones_especialesc                 Z   SnU R                   " U S3S/S9U R                  S 5       5       n U R                   " U S3S/S9U R                  S 5       5       n U R                   " U S3S/S9U R                  S	 5       5       n U R                   " S
S/S9U R                  S 5       5       n U R                   " U S3S/S9U R                  S 5       5       n U R                   " U S3S/S9U R                  S 5       5       n U R                   " U S3S/S9U R                  S 5       5       n	g)u   
Función principal que registra todas las funciones y endpoints del módulo de cotizaciones de ingeniería.
Args:
    app: Instancia de Flask
    mail: Instancia del sistema de mail
z1/api/Operaciones/Ingenieria/Cotiz/CotizCreatedIngz/get_data_for_emailGET)methodsc                  z    [         R                  R                  S[        S9n U (       d  SS0S4$ [	        U 5      nU$ )Ntask_id)typeerrorztask_id es requerido  )r   argsgetintr   )r   dataJsons     vC:\Users\victor.barrera\Documents\proyectos\elepV3\Elep\src\App\Operaciones_Module\Ingenieria\Cotiz\CotizCreatedIng.pyget_data_for_email5cotizcreateding_solicitud.<locals>.get_data_for_email!   s@     ,,""93"734c99,W5    z/user_idc                  p    [         R                  " S5      n U c  [        SS05      S4$ [        SU 05      S4$ )u>   
Retorna el UserID actual de la sesión si está autenticado.
user_idr   u   No hay sesión activai     )r   r    r   )r(   s    r#   get_user_id.cotizcreateding_solicitud.<locals>.get_user_id0   sB     ++i(?G%<=>CC	7+,c11r&   z/currenciesc                       [        5       n U (       a  [        U 5      S4$ [        SS05      S4$ ! [         a'  n[        SU 35        [        SS05      S4s S	nA$ S	nAff = f)
zb
Endpoint para obtener todas las monedas activas del sistema.
Ruta final: /api/general/currencies
r)   messagez!No se encontraron monedas activasi  zError en currencies endpoint: r   (   Ocurrió un error interno en el servidor  N)r   r   	Exceptionprint)
currencieses     r#   get_currencies_controller2=cotizcreateding_solicitud.<locals>.get_currencies_controller2A   ss    
	W')Jz*C//	+NOPRUUU 	W21#67G%OPQSVVV	Ws   / / 
A AA A z+/Ingenieria/Cotiz/CotizCreatedIng/get_taxesc                      [         R                  R                  SS5      n U (       d  [        SS05      S4$ [	        U 5      n[        U5      S4$ ! [
         a'  n[        SU 35        [        SS05      S	4s SnA$ SnAff = f)
z
Endpoint para obtener impuestos activos filtrados por CurrencyCode (query param).
Compatible con: fillTaxCurrencySelect(currencyCode)
currencyNr   u%   El parámetro 'currency' es requeridor   r)   zError en get_taxes endpoint: r.   r/   )r   r   r    r   r   r0   r1   )currency_codetaxesr3   s      r#   get_taxes_controller28cotizcreateding_solicitud.<locals>.get_taxes_controller2X   s    	W#LL,,Z>M )PQRTWWWm,E5>3&& 	W1!56G%OPQSVVV	Ws"   5A A 
BA<6B<Bz/uploadFilePOSTc                     [         R                  " S5      n [        R                  R	                  S5      n[        R
                  R                  SS5      n[        R
                  R                  S5      n[        USU UUS9nUR                  S5      n[        XSU5      nUR                  S5      (       a  S	OS
n[        U5      U4$ )Nr(   z
archivos[]	categoriaCotizCreatedIng	CostingID)archivos	modulo_idr(   r@   r>   DocsIDsuccessr)   r   )	r   r    r   filesgetlistformr   r   r   )UserIDrA   r>   r@   	resultadorC   status_codes          r#   
uploadFile-cotizcreateding_solicitud.<locals>.uploadFileq   s     Y'MM)),7LL$$[2CD	LL$$[1	 +'
	 x(&v	B	 ']]955c3y!;..r&   z/Q_CostingHead/Completoc                  J    Sn Sn[         R                  " 5       n[        U5      $ )u   
Endpoint que crea Q_CostingHead y Q_CostingDetail en una transacción.
Obtiene el último CostingNum, incrementa +1 y lo usa para insertar.
N)r   get_jsonr   )conncursordatas      r#   generar_costing_head7cotizcreateding_solicitud.<locals>.generar_costing_head   s'     !&t,,r&   z/updateCostingHead-docsIDc                  B    [         R                  " 5       n [        U 5      $ )z6
Endpoint para actualizar el DocsID en Q_CostingHead.
)r   rN   r   )rQ   s    r#   update_costing_head_docsid=cotizcreateding_solicitud.<locals>.update_costing_head_docsid   s     !-d33r&   N)routelogin_required)
r   mail	_BASE_URLr$   r*   r4   r:   rK   rR   rU   s
             r#   cotizcreateding_solicitudr[      s    DI 	YY)/05'B  C 	YY)H%w7	2  8	2 	YY)K(5':W  ;W$ 	YY<ugNW  OW( 	YY)K(6(;/  </2 	YY)34vhG
-  H
- 	YY)56I4  J4r&   )r   loggingflaskr   r   r   r   r   App.Security_Module.UserAccessr	   =Consultas_SQL.Operaciones.Ingenieria.Cotiz.CotizCreatedIngSQLr
   r   r   r   r   r   r   r   r   r   r   r   	getLoggerloggerr[    r&   r#   <module>rc      sC      B B <    
		4	5R4r&   