+
    s.—j°L  ã                   ó´  € R t ^ RIt^ RIt^ RIt^ RIt^ RIt^ RIt^ RIt^ RI	H
t
 ^ RIt^ RIt^ RIHtHtHtHtHtHtHt ]P*                  P-                  ]P*                  P/                  ]4      4      t]! 4       t]t]t]! 4       t. ROtR tR t R t!R t"R t#R	 t$R
 t%RR lt&R t'RR lt(R t)RR lt*R t+R t,R t-R t.R t/R t0R t1]2R8X  d
   ]1! 4        R# R# )a  
Carga historica Nomina + P&G en PostgreSQL.

Rango por defecto: enero 2024 a marzo 2026.

Uso:
    python3 cargar_historico_nomina_pyg.py --init-db
    python3 cargar_historico_nomina_pyg.py --fuente ambas
    python3 cargar_historico_nomina_pyg.py --fuente nomina --desde 2024-01 --hasta 2024-03
    python3 cargar_historico_nomina_pyg.py --mes-anterior --fuente ambas

El dashboard sigue usando /proxy/nomina/reporte y /proxy/pyg/reporte; servidor.py
lee esta tabla para periodos historicos y cae a la API para meses vivos.
N)Údate)ÚAPI_BASEÚNOMINA_API_KEYÚPYG_API_KEYÚPYG_URLÚ	db_configÚrequire_secretsÚssl_contextc                 ó@   € \         P                  ! V R RR\        R7      # )FT)Úensure_asciiÚ	sort_keysÚ
separatorsÚdefault)Ú,Ú:)ÚjsonÚdumpsÚstr)Úobjs   &Ú{/Users/ricardomartinez/BIA CLAUDE PROYECTOS/Proyectos Claude IA/Talento Humano Api Dashboard/cargar_historico_nomina_pyg.pyÚstable_jsonr   F   s   € Ü�:Š:�c¨¸È*Ô^aÔbÐbó    c                  ó”   € \         P                  ! R P                  R V  4       4      P                  R4      4      P	                  4       # )Ú|c              3   ó8   "  € T F  p\        V4      x € K  	  R # 5i)N)r   )Ú.0Úps   & r   Ú	<genexpr>Úmake_hash.<locals>.<genexpr>K   s   é € Ð"9±5¨a¤3 q§6 6³5ùs   ‚úutf-8)ÚhashlibÚsha256ÚjoinÚencodeÚ	hexdigest)Úpartss   *r   Ú	make_hashr&   J   s4   € Ü�>Š>˜#Ÿ(™(Ñ"9±5Ó"9Ó9×@Ñ@ÀÓIÓJ×TÑTÓVÐVr   c              #   ó<  "  € V P                  R 4       Uu. uF  p\        V4      NK  	  upw  r4VP                  R 4       Uu. uF  p\        V4      NK  	  upw  rVW43WV38:  d-   W4VR R VR 23x € V^,          pV^8X  g   K(  V^,          p^pK5  R# u upi u upi 5i)Ú-Ú04dÚ02dN)ÚsplitÚint)ÚdesdeÚhastaÚxÚyÚmÚend_yÚend_ms   &&     r   Úmonths_betweenr4   N   s    é € Ø!ŸK™K¨Ô,Ó-Ñ,�qŒC�ŽFÑ,Ñ-�D€AØ$)§K¡K°Ô$4Ó5Ñ$4˜q”C˜–FÑ$4Ñ5�L€EØˆ&�U�NÔ
"Ø�q˜�g˜Q˜q ˜gÐ&Ð&Ò&Ø	ˆQ�ˆØ�Ž7Ø��FˆAØŠAñ #ùò .ùÚ5ùs!   ‚B–BªBÁBÁ(BÂBc                  óÄ   € \         P                  ! 4       p V P                  ^8X  d   V P                  ^,
          R R2# V P                  R RV P                  ^,
          R 2# )é   r)   z-12r(   r*   )r   ÚtodayÚmonthÚyear)r7   s    r   Úprev_month_periodr:   Y   sT   € Ü�JŠJ‹L€EØ‡{�{�aÔØ—*‘*˜q•. Ð% SÐ)Ð)Ø�j‰j˜Ð˜Q˜uŸ{™{¨Q�¨sÐ3Ð4Ð4r   c                  ó6   € \         P                  ! R/ \        B # )N© )Úpsycopg2ÚconnectÚ	DB_CONFIGr<   r   r   r>   r>   `   s   € Ü×ÒÑ(œiÑ(Ð(r   c                 óv  € \        \        P                  P                  \        R 4      RR7      ;_uu_ 4       pVP                  4       pRRR4       V P                  4       ;_uu_ 4       pVP                  X4       RRR4       V P                  4        R#   + '       g   i     LT; i  + '       g   i     L5; i)zhistorico_nomina_pyg.sqlr   )ÚencodingN)	ÚopenÚosÚpathr"   ÚDIRÚreadÚcursorÚexecuteÚcommit)ÚconnÚfhÚsqlÚcurs   &   r   Úinit_dbrN   d   sj   € Ü	Œb�g‰g�l‰lœ3Ð :Ó;Àg×	NÕ	NÐRTØ�g‰g‹iˆ÷ 
Oà	�‰�Œ˜#Ø�‰�CÔ÷ 
à‡K�K†M÷	 
O×	Núç	�ús   ¸BÁ)B(ÂB%	Â(B8	c                 ó”  € RpV P                  4       ;_uu_ 4       pVP                  R\        V4      34       VP                  4        Uu0 uF  q3^ ,          kK  	  ppRRR4       \	        \        V4      X,
          4      pV'       d)   \        RRP                  V4      ,           R,           4      hR# u upi   + '       g   i     Lb; i)Úhistorico_nomina_pygz¯
            SELECT table_name
            FROM information_schema.tables
            WHERE table_schema = current_schema()
              AND table_name = ANY(%s)
            NzFaltan tablas requeridas: z, zC. Ejecutar --init-db una vez con el usuario propietario de la base.)rP   Úhistorico_nomina_pyg_control)rG   rH   ÚlistÚfetchallÚsortedÚsetÚRuntimeErrorr"   )rJ   Úrequired_tablesrM   ÚrowÚexistingÚmissings   &     r   Úensure_db_readyr[   l   s°   € ð€Oð 
�‰�Œ˜#Ø�‰ðô �/Ó"Ð$ô	
ð '*§l¡l¤nÓ5¡n˜s˜—F�F¡nˆÐ5÷ 
ô ”S˜Ó)¨HÕ4Ó5€GßÜØ(Ø�i‰i˜Ó õ!àSõTó
ð 	
ñ ùò 6÷ 
�ús   ›/B7Á
B2ÁB7Â2B7Â7C	c                 ój  € \         P                  ! V4      P                  R 4      p\        P                  P                  V VRVRR/RR7      p \        P                  P                  WS\        R7      ;_uu_ 4       p\         P                  ! VP                  4       4      uuRRR4       #   + '       g   i     R# ; i  \        P                  P                   dÖ   p TP                  4       P                  R RR	7      pM  \         d    R
p Mi ; iTp	 \         P                  ! T4      P                  RT4      p	M  \         d     Mi ; iT	;'       g    R
P                  4       p	\!        RTP"                   RTP$                   2T	'       d   RT	 2,           4      ThR
,           4      ThRp?ii ; i)r   z	X-API-KeyzContent-Typezapplication/jsonÚPOST)ÚdataÚheadersÚmethod)ÚtimeoutÚcontextNÚreplace)ÚerrorsÚ ÚdetailzHTTP Ú u    â€” )r   r   r#   ÚurllibÚrequestÚRequestÚurlopenÚSSL_CTXÚloadsrF   ÚerrorÚ	HTTPErrorÚdecodeÚ	ExceptionÚgetÚstriprV   ÚcodeÚreason)
ÚurlÚpayloadÚapi_keyra   ÚbodyÚreqÚrespÚexcÚcuerpoÚdetalles
   &&&&      r   Ú	post_jsonr   †   sn  € Ü�:Š:�gÓ×%Ñ% gÓ.€DÜ
�.‰.×
 Ñ
 ØØØ˜g ~Ð7IÐJØð	 !ó €CðÜ�^‰^×#Ñ# CÄ'Ð#×JÔJÈdÜ—:’:˜dŸi™i›kÓ*÷ K×J×JÓJûä�<‰<×!Ñ!ô ð	Ø—X‘X“Z×&Ñ& w°yÐ&ÓA‰FøÜô 	ØŠFð	úàˆð	Ü—j’j Ó(×,Ñ,¨X°vÓ>‰GøÜô 	Ùð	úà—=�=˜b×'Ñ'Ó)ˆÜØ�C—H‘H�:˜Q˜sŸz™z˜lÐ+ÇG°°w°iÐ/@ÕTó
àð	ØQSÕTó
àð	ûð%ús   Á-B> Á;$B*Â
B> Â*B;	Â5B> Â;B> Â>F2Ã!D Ã?F-Ä DÄF-ÄDÄF-Ä&D=Ä<F-Ä=EÅF-Å
EÅF-ÅAF-Æ-F2c                 ó"  € V P                  \        P                  P                  R 7      ;_uu_ 4       pVP	                  R4       VP                  4        Uu. uF  p\        V4      NK  	  upuuRRR4       # u upi   + '       g   i     R# ; i))Úcursor_factorya±  
            SELECT DISTINCT ON (h.nombre_personalizado, e.nit, h.bu_codigo)
                h.nombre_personalizado AS label,
                h.razon_social,
                e.nit,
                h.hotel_name_api,
                h.bu_codigo,
                h.bu_nombre,
                e.pyg_company_id
            FROM hotel_unificacion h
            JOIN empresas e ON h.razon_social = e.codigo
            WHERE e.nit IS NOT NULL
              AND e.nit <> ''
              AND h.hotel_name_api IS NOT NULL
              AND h.hotel_name_api <> ''
              AND h.nombre_personalizado NOT IN ('No mostrar')
            ORDER BY h.nombre_personalizado, e.nit, h.bu_codigo
        N)rG   r=   ÚextrasÚRealDictCursorrH   rS   Údict)rJ   rM   Úrs   &  r   Úfetch_hotelesr†   ¨   si   € Ø	�‰¤H§O¡O×$BÑ$Bˆ×	CÔ	CÀsØ�‰ð ô 	ð$ "%§¡¤Ó0¡˜A”�Q–¡Ñ0÷' 
DÒ	Cùò& 1÷' 
D×	CÐ	Cús   ³$A=ÁA8Á+A=Á8A=Á=B	c
                 óÐ   € VR  RVR 2p
V P                  4       ;_uu_ 4       pVP                  RWW:WEWgW‰V34       RRR4       V P                  4        R#   + '       g   i     L"; i)r)   r(   r*   aO  
            INSERT INTO historico_nomina_pyg_control
                (fuente, ano, mes, periodo, nit, company_id, bu_codigo, estado, filas, error, terminado_en)
            VALUES (%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,CASE WHEN %s IN ('ok','error') THEN NOW() ELSE NULL END)
            ON CONFLICT (fuente, ano, mes, COALESCE(nit, ''), COALESCE(company_id, -1), COALESCE(bu_codigo, ''))
            DO UPDATE SET
                estado = EXCLUDED.estado,
                filas = EXCLUDED.filas,
                error = EXCLUDED.error,
                terminado_en = EXCLUDED.terminado_en
        N)rG   rH   rI   )rJ   ÚfuenteÚanoÚmesÚnitÚ
company_idÚ	bu_codigoÚestadoÚfilasrn   ÚperiodorM   s   &&&&&&&&&&  r   Úupsert_controlr‘   ¿   s`   € Ø�S�	˜˜3˜s˜)Ð$€GØ	�‰�Œ˜#Ø�‰ð 
ð ˜3¨¸)ÈUÐ[aÐbô
	d÷ 
ð 	‡K�K†M÷ 
�ús   ¢AÁA%	c           
      ó   € V'       g   ^ # . ROpV UUu. uF"  q2 Uu. uF  qCP                  V4      NK  	  upNK$  	  pppV P                  4       ;_uu_ 4       p\        P                  P	                  VRRP                  V4       R2VRRR7       RRR4       V P                  4        \        V4      # u upi u uppi   + '       g   i     L6; i)é    z/
            INSERT INTO historico_nomina_pyg (r   a/  )
            VALUES %s
            ON CONFLICT (hash_registro) DO UPDATE SET
                valor = EXCLUDED.valor,
                valor_ly = EXCLUDED.valor_ly,
                cantidad = EXCLUDED.cantidad,
                raw_data = EXCLUDED.raw_data,
                cargado_en = NOW()
            Niô  )ÚtemplateÚ	page_size)rˆ   Úregistro_tipor‰   rŠ   r�   r‹   Úrazon_socialÚhotelr�   Ú	bu_nombrerŒ   Úconcepto_codigoÚconcepto_nombreÚgrupoÚsubgrupoÚempleado_codigoÚempleado_nombreÚcargoÚcentro_costoÚvalorÚvalor_lyÚcantidadÚraw_dataÚhash_registro)rr   rG   r=   r‚   Úexecute_valuesr"   rI   Úlen)rJ   ÚrowsÚcolsr…   ÚcÚvaluesrM   s   &&     r   Úinsert_rowsr­   Ð   s±   € ßÙò€Dñ 15Ô5±¨1 Ó&¡˜A�u‰u�QŽx¡Ô&±€FÑ5Ø	�‰�Œ˜#Ü�‰×&Ñ&Øð/Ø/2¯x©x¸«~Ð.>ð ?ð	ð ØØð 	'ô 	
÷ 
ð" 	‡K�K„MÜˆt‹9Ðùò' 'ùÓ5ß	�ús!   ”B7œB2µB7Á8B=Â2B7Â=C	c                 óæ  € . ROpWV.pVe#   VP                  R4       VP                  V4       Ve#   VP                  R4       VP                  V4       Ve1   VP                  R4       VP                  VP                  4       4       V P                  4       ;_uu_ 4       p	V	P                  RRP	                  V4       2V4       RRR4       V P                  4        R#   + '       g   i     L"; i)ú	fuente=%sNznit=%szcompany_id=%sz LOWER(COALESCE(bu_codigo,''))=%sz'DELETE FROM historico_nomina_pyg WHERE z AND )r¯   zano=%szmes=%s)ÚappendÚlowerrG   rH   r"   rI   )
rJ   rˆ   r‰   rŠ   r‹   rŒ   r�   ÚwhereÚparamsrM   s
   &&&&&&&   r   Úclear_slicer´   ï   s¶   € Ú-€EØ˜3Ð€FØ
‚Ø�‰�XÔØ�‰�cÔØÒØ�‰�_Ô%Ø�‰�jÔ!ØÒØ�‰Ð7Ô8Ø�‰�i—o‘oÓ'Ô(Ø	�‰�Œ˜#Ø�‰Ð=¸g¿l¹lÈ5Ó>QÐ=RÐSÐU[Ô\÷ 
à‡K�K†M÷ 
�ús   Â!%C Ã C0	c           *      óv  € VR ,          pRRRRRVRVRVR VR\         P                  P                  V 4      R	\        RRWE4      /.pV P	                  R
4      ;'       g    / pVP                  4        Fw  w  r‰\        V	\        \        34      '       g   K#  VP                  RRRR
RVRVRVR VRVRVRV	R\         P                  P                  RVRV	/4      R	\        RR
WEV4      /4       Ky  	  V P	                  R4      ;'       g    .  Fü  p
V
P	                  R4      ;'       g    ^ V
P	                  R4      ;'       g    ^ ,
          V
P	                  R4      ;'       g    ^ ,           p	VP                  RRRRRVRVRVR VRV
P	                  R4      RV
P	                  R4      RV	RV
P	                  R4      R\         P                  P                  V
4      R	\        RRWEV
P	                  R4      V
P	                  R4      4      /4       Kþ  	  V P	                  R4      ;'       g    .  EF“  pTP                  RRRRRTRTRTR TRVP	                  R4      ;'       g    VP	                  R4      RVP	                  R4      RVP	                  R4      ;'       g+    VP	                  R4      ;'       g    VP	                  R4      R VP	                  R4      ;'       g    VP	                  R!4      R"VP	                  R"4      R#VP	                  R#4      RVP	                  R$4      R\         P                  P                  V4      R	\        RRYEVP	                  R4      ;'       g+    VP	                  R4      ;'       g    VP	                  R4      VP	                  R4      ;'       g    VP	                  R!4      4      /4       EK–  	  V# )%r‹   rˆ   Únominar–   Ú	respuestar‰   rŠ   r�   r¥   r¦   Úresumenrš   r›   r¢   ÚcampoÚ	conceptosÚdevengosÚdeduccionesÚaportes_patronalesÚconceptoÚcodigoÚnombrer¤   Únum_empleadosÚ	empleadosÚempleador˜   Ú
hotel_namer�   rž   Úcodigo_empleadoÚcedularŸ   Únombre_completor    r¡   Útotal_devengos)
r=   r‚   ÚJsonr&   rr   ÚitemsÚ
isinstancer,   Úfloatr°   )ÚrawÚ
hotel_metar‰   rŠ   r�   r‹   r©   r¸   ÚkeyÚvalr«   Úes   &&&&&       r   Únomina_rowsrÒ      s»  € Ø
�UÕ
€Cà�(Ø˜ØˆsØˆsØ�7ØˆsØ”H—O‘O×(Ñ(¨Ó-Øœ 8¨[¸'ÓGð	ð 	€Dð �g‰g�iÓ ×&Ð& B€GØ—M‘M–O‰ˆÜ�cœC¤˜<×(Ô(Ø�K‰KØ˜(Ø Ø�sØ�sØ˜7Ø�sØ! 3Ø! 3Ø˜ØœHŸO™O×0Ñ0°'¸3ÀÈÐ1MÓNØ¤¨8°YÀÈcÓ!Rðö ñ $ð �W‰W�[Ó!×'Ð' RÒ'ˆØ�u‰u�ZÓ ×%Ð% A¨!¯%©%°Ó*>×*CÐ*CÀ!ÕDÈÏÉÐNbÓHc×HhÐHhÐghÕiˆØ�‰Ø�hØ˜ZØ�3Ø�3Ø�wØ�3Ø˜qŸu™u X›Ø˜qŸu™u X›Ø�SØ˜Ÿ™˜oÓ.ØœŸ™×,Ñ,¨QÓ/ØœY x°¸WÈ1Ï5É5ÐQYË?Ð\]×\aÑ\aÐbjÓ\kÓlð
ö 	ñ (ð  �W‰W�[Ó!×'Ð' RÓ'ˆØ�‰Ø�hØ˜ZØ�3Ø�3Ø�wØ�3Ø�Q—U‘U˜7“^×:Ð: q§u¡u¨\Ó':Ø˜Ÿ™˜{Ó+Ø˜qŸu™u X›×]Ð]°!·%±%Ð8IÓ2J×]Ð]ÈaÏeÉeÐT\ËoØ˜qŸu™u X›×JÐJ°!·%±%Ð8IÓ2JØ�Q—U‘U˜7“^Ø˜AŸE™E .Ó1Ø�Q—U‘UÐ+Ó,ØœŸ™×,Ñ,¨QÓ/ØœY x°¸WÈ1Ï5É5ÐQYË?÷  LJð  LJÐ^_×^cÑ^cÐduÓ^v÷  LJð  LJÐz{×zÑzð  AIó  {Jð  LM÷  LQñ  LQð  RZó  L[÷  Lwð  Lwð  _`÷  _dñ  _dð  evó  _wó  xð
÷ 	ñ (ð$ €Kr   c                 óz  € / pV F  pVP                  VR ,          V4       K  	  \        W#4       F¿  w  rxp	\        VP                  4       4       Fœ  w  r«\	        V RWxV
R7        RV
RVRVRRRR	/p\        \         R
2V\        4      p\        V RWxV
R7       \        V \        WÛWxV	4      4      p\	        V RWxV
RVR7       \        RV	 RV
 RV 2RR7       \        P                  ! V4       Kž  	  KÁ  	  R#   \         d;   p\	        T RYxT
R\        T4      R7       \        RT	 RT
 RT 2RR7        Rp?L`Rp?ii ; i)r‹   r¶   )r‹   Ú	hotel_nitr‰   rŠ   Úincluir_empleadosTÚss_vistaÚambosz/nomina/reporteÚok)r‹   rŽ   r�   z
OK nomina z nit=ú filas=©Úflushrn   )r‹   rŽ   rn   zERROR nomina ú: N)Ú
setdefaultr4   rT   rÊ   r‘   r   r   ÚAPI_KEYr´   r­   rÒ   Úprintrq   r   ÚtimeÚsleep)rJ   Úhotelesr-   r.   ÚpausaÚnitsÚhr‰   rŠ   r�   r‹   Úmetarw   rÍ   r�   r|   s   &&&&&           r   Úcargar_nominarç   A  sC  € Ø€DÛˆØ�‰˜˜%� !Ö$ñ ä+¨EÖ9Ñˆ�'Ü §
¡
£Ö-‰IˆCÜ˜4 ¨3¸Õ=ð	NØ&¨¨U°C¸ÀÐEXÐZ^Ð`jÐlsÐt�Ü¤8 *¨OÐ <¸gÄwÓO�Ü˜D (¨C¸#Õ>Ü# D¬+°cÀÈ7Ó*SÓT�Ü˜t X¨s¸SÈÐUZÕ[Ü˜
 7 )¨5°°°W¸U¸GÐDÈDÕQô �JŠJ�uÖó .ó :øô ô NÜ˜t X¨s¸SÈÔX[Ð\_ÓX`ÕaÜ˜ g Y¨e°C°5¸¸3¸%Ð@È×MÒMûðNús   Á$A1C5Ã5D:Ä 0D5Ä5D:c           	      óD  € V  F™  pVP                  R R4      pVP                  R/ 4      pVP                  R/ 4      pVP                  R/ 4      p\        V4      p\        V4      pR VRVP                  RR4      RVRV/W&   \        VP                  R. 4      V4       K›  	  R	# )
Úidre   ÚmonthlyÚrealÚ	last_yearÚlabelrÐ   ÚlyÚchildrenN)rr   Úfirst_month_valueÚflatten_tree)	ÚnodesÚoutÚnodeÚnode_idrê   rë   Úly_datarÐ   rî   s	   &&       r   rñ   rñ   U  sš   € ÛˆØ—(‘(˜4 Ó$ˆØ—(‘(˜9 bÓ)ˆØ�{‰{˜6 2Ó&ˆØ—+‘+˜k¨2Ó.ˆÜ Ó%ˆÜ˜wÓ'ˆØ˜g w°·±¸À"Ó0EÀuÈcÐSWÐY[Ð\ˆ‰Ü�T—X‘X˜j¨"Ó-¨sÖ3ó r   c                 óx  € \        V \        \        34      '       d   V # \        V \        4      '       g   R # V P	                  4        Fo  p\        V\        \        34      '       d   Vu # \        V\        4      '       g   K;  VP                  R4      ;'       g    VP                  R4      ;'       g    R u # 	  R # )g        rŠ   Úvalue)rË   r,   rÌ   r„   r¬   rr   )r^   rÐ   s   & r   rð   rð   a  s‡   € Ü�$œœe˜×%Ò%ØˆÜ�dœD×!Ò!ÙØ�{‰{Ž}ˆÜ�cœC¤˜<×(Ò(ØŠJÜ�cœ4× Ô Ø—7‘7˜5“>×<Ð< S§W¡W¨WÓ%5×<Ð<¸Ò<ñ	 ñ
 r   c           (      ó2  € V P                  R / 4      pT;'       g    RP                  4       p/ p\        VP                  V/ 4      P                  R. 4      V4       RRRRRVRVR	VR
VRVR\        P                  P                  V 4      R\        RRWQV4      /	.p	\        4       p
\         Fê  w  r¼rÞpWº9   g   W¸9  d   K  V
P                  V4       VP                  \        P                  RR4      4      pV
P                  V4       W‹,          pRVRVRVRVRVR,          RVR,          RRRV/pV	P                  RRRRRVRVR	VR
VRVRVRVRVRVRVR,          RVR,          R\        P                  P                  V4      R\        RRWQW{4      /4       Kì  	  V	# )ÚpnlÚlocalÚtreerˆ   Úpygr–   r·   r‰   rŠ   r�   rŒ   r�   r¥   r¦   u   Ã¡Ã©Ã­Ã³ÃºÃ�Ã‰Ã�Ã“ÃšÚ
aeiouAEIOUré   rÀ   rœ   r�   rÐ   rî   Únomina_backedr¾   rš   r›   r¢   r£   )rr   r±   rñ   r=   r‚   rÉ   r&   rU   ÚPYG_CONCEPTOSÚaddÚ	translater   Ú	maketransr°   )rÍ   rŒ   r�   r‰   rŠ   r�   rú   Úbu_keyÚflatr©   Úseenrõ   rÀ   rœ   r�   rÿ   ÚaltÚentryÚrow_raws   &&&&&&             r   Úpyg_rowsr
  n  sÅ  € Ø
�'‰'�%˜Ó
€CØ×"Ð"˜7×)Ñ)Ó+€FØ€DÜ�—‘˜ Ó$×(Ñ(¨°Ó4°dÔ;ð 	�%Ø˜ØˆsØˆsØ�7Ø�jØ�VØ”H—O‘O×(Ñ(¨Ó-Øœ 5¨+°wÈFÓSð
ð 
€Dô ‹5€Dß;HÑ7ˆ˜¨-ØŒ?˜gÔ1ÙØ�‰�ÔØ×Ñ¤§¡Ð.DÀlÓ SÓTˆØ�‰�ŒØ•ˆà�'Ø�fØ�UØ˜Ø�5˜•<Ø�%˜•+Ø�eØ˜]ð	
ˆð 	�‰Ø�eØ˜ZØ�3Ø�3Ø�wØ˜*Ø˜Ø˜wØ˜vØ�UØ˜Ø�U˜5•\Ø˜˜d�ØœŸ™×,Ñ,¨WÓ5ØœY u¨j¸'ÈvÓ_ð
ö 	ñ# <IðD €Kr   c                 óú  € \        V Uu0 uFW  pVP                  R 4      '       g   K  \        VR ,          4      VP                  R4      ;'       g    RP                  4       3kKY  	  up4      p\	        W#4       F®  w  rxp	V F¢  w  r«\        V RWxW«R7        RV
RV VR 2RR	R
V.RR/p\        \        V\        4      p\        V RWxW«R7       \        V \        WÚW·W‰4      4      p\        V RWxW«RVR7       \        RV	 RV
 RV RV 2RR7       \        P                   ! V4       K¤  	  K°  	  R	# u upi   \         d>   p\        T RYxY«R\        T4      R7       \        RT	 RT
 RT RT 2RR7        R	p?LhR	p?ii ; i)Úpyg_company_idr�   rû   rý   )rŒ   r�   rŒ   Úperiodr*   Úscenario_idNÚbusiness_unitsÚinclude_kpisFrØ   )rŒ   r�   rŽ   r�   zOK pyg z	 company=z bu=rÙ   TrÚ   rn   )rŒ   r�   rŽ   rn   z
ERROR pyg rÜ   )rT   rr   r,   r±   r4   r‘   r   r   ÚPYG_KEYr´   r­   r
  rß   rq   r   rà   rá   )rJ   râ   r-   r.   rã   rå   Úpairsr‰   rŠ   r�   rŒ   r�   rw   rÍ   r�   r|   s   &&&&&           r   Ú
cargar_pygr  ¥  s¤  € ÜáóáˆAØ�5‰5Ð!×"ô 	LŒˆQÐÕ Ó	! A§E¡E¨+Ó$6×$AÐ$A¸'×#HÑ#HÓ#JÓKÙñó €Eô
 ,¨EÖ9Ñˆ�'Û%*Ñ!ˆJÜ˜4 ¨¸ZÕ]ðeà  *Ø   c¨# YÐ/Ø! 4Ø$ y kØ" Eð�ô  ¤¨´'Ó:�Ü˜D %¨¸jÕ^Ü# D¬(°3ÀIÐTWÓ*aÓb�Ü˜t U¨CÀÐimÐuzÕ{Ü˜ ˜y¨	°*°¸TÀ)ÀÈGÐTYÐSZÐ[ÐcgÕhô �JŠJ�uÖó% &+ó :ùòøô* ô eÜ˜t U¨CÀÐipÔx{Ð|ó  yAõ  BÜ˜
 7 )¨9°Z°LÀÀYÀKÈrÐRUÐQVÐWÐ_c×dÒdûðeús)   ŠD-¨(D-ÁD-ÂA7D2Ä2E:Ä=3E5Å5E:c            	      óB  € \         P                  ! 4       p V P                  R RR7       V P                  RRR7       V P                  R. R#ORR7       V P                  RR	R
7       V P                  RR	RR7       V P                  RR	RR7       V P                  R\        RR7       V P	                  4       p. pVP
                  R$9   d   VP                  R4       VP
                  R%9   d   VP                  R4       V'       d.   VP                  '       g   VP                  '       g
   \        V!   VP                  '       d   \        4       pW1n        W1n        \        4       ;_uu_ 4       pVP                  '       d$   \        V4       \        RRR7        RRR4       R# \!        V4       VP                  '       Ed7   \#        V4      pV Uu0 uF$  qfP%                  R4      '       g   K  VR,          kK&  	  ppV Uu0 uFW  pVP%                  R4      '       g   K  \'        VR,          4      VP%                  R4      ;'       g    RP)                  4       3kKY  	  pp\        RRR7       \        RVP
                   2RR7       \        RVP                   2RR7       \        R VP                   2RR7       \        R!\+        V4       2RR7       \        R"\+        V4       2RR7        RRR4       R# \#        V4      pVP
                  R$9   d-   \-        WEVP                  VP                  VP.                  4       VP
                  R%9   d-   \1        WEVP                  VP                  VP.                  4       RRR4       R# u upi u upi   + '       g   i     R# ; i)&z--desdez2024-01)r   z--hastaz2026-03z--fuenteÚambas)Úchoicesr   z	--init-dbÚ
store_true)Úactionz--mes-anteriorz-Carga solo el mes anterior a la fecha actual.)r  Úhelpz	--dry-runzBMuestra el periodo y fuentes que cargaria sin escribir en la base.z--pausagš™™™™™É?)Útyper   r   r   zTablas listas.TrÚ   Nr‹   r  r�   rû   z#DRY RUN cargar_historico_nomina_pygz
  fuente: z
  desde:  z
  hasta:  z  nits nomina: z  pares pyg:   )r¶   rý   r  )r¶   r  )rý   r  )ÚargparseÚArgumentParserÚadd_argumentrÌ   Ú
parse_argsrˆ   r°   Údry_runrN   r   Úmes_anteriorr:   r-   r.   r>   rß   r[   r†   rr   r,   r±   r¨   rç   rã   r  )	ÚparserÚargsÚrequiredr�   rJ   râ   rå   rä   Ú	pyg_pairss	            r   Úmainr%  Á  sé  € Ü×$Ò$Ó&€FØ
×Ñ˜	¨9ÐÔ5Ø
×Ñ˜	¨9ÐÔ5Ø
×Ñ˜
Ò,FÐPWÐÔXØ
×Ñ˜¨LÐÔ9Ø
×ÑÐ(°ÐDsÐÔtØ
×Ñ˜¨Lð  @DÐô  EØ
×Ñ˜	¬°sÐÔ;Ø×ÑÓ€Dà€HØ‡{�{Ð)Ô)Ø�‰Ð(Ô)Ø‡{�{Ð&Ô&Ø�‰˜Ô&ß˜ŸŸ˜¨T¯\¯\¨\Ü˜Ò"à××ÐÜ#Ó%ˆØŒ
ØŒ
ä	�Œ�dØ�<�<ˆ<Ü�DŒMÜÐ"¨$Õ/Ø÷	 
‰ô 	˜Ôà�<�<‰<Ü# DÓ)ˆGÙ&-Ó>¡g ·±°u·”H�A�e—H�H¡gˆDÐ>ñ !óá �AØ—5‘5Ð)×*ô T”�QÐ'Õ(Ó)¨A¯E©E°+Ó,>×,IÐ,IÀ'×+PÑ+PÓ+RÓSÙ ð ð ô
 Ð7¸tÕDÜ�J˜tŸ{™{˜mÐ,°DÕ9Ü�J˜tŸz™z˜lÐ+°4Õ8Ü�J˜tŸz™z˜lÐ+°4Õ8Ü�O¤C¨£I ;Ð/°tÕ<Ü�O¤C¨	£NÐ#3Ð4¸DÕAØ÷- 
‰ô0   Ó%ˆØ�;‰;Ð-Ô-Ü˜$¨¯©°T·Z±ZÀÇÁÔLØ�;‰;Ð*Ô*Ü�t d§j¡j°$·*±*¸d¿j¹jÔI÷9 
‰ùò ?ùò÷ 
�ˆúsJ   Å*,NÆ -NÇNÇ*NÇ7NÇ=NÈ(NÉNÉBNË4BNÎ
NÎN	Ú__main__))Úsueldos_y_salarios_del_personalzSueldos y SalariosÚSalarioszSalario MesT)Úhoras_extras_y_festivoszHoras Extras y Festivosr(  zHoras Extras y RecargosT)Úauxilio_de_transportezAuxilio de Transporter(  zSubsidio de TransporteT)ÚauxiliosÚAuxiliosr(  r,  T)ÚincapacidadesÚIncapacidadesr(  r.  T)Ú"prestaciones_sociales_y_vacacionesú"Prestaciones Sociales y VacacionesÚProvisionesr0  T)Úprimas_extralegalesúPrimas Extralegalesr1  r3  T)ÚbonificacionesÚBonificacionesr(  r5  T)Úindemnizaciones_laboralesúIndemnizaciones LaboralesÚIndemnizacionesr7  T)Ú
temporalesÚ
TemporalesúPersonal Externor:  F)Úhonorarios_laboraleszHonorarios Laboralesr;  Ú
HonorariosF)Ú
comisioneszComisiones Personalr;  r=  F)Ú$dotacion_y_suministro_a_trabajadoresúDotacion y SuministroúOtros Gastos PersonalÚDotacionF)u%   dotaciÃ³n_y_suministro_a_trabajadoresr@  rA  rB  F)Úcomida_empleadoszComida EmpleadosrA  Ú	BienestarF)Útransporte_de_personalzTransporte de PersonalrA  rD  F)Úcapacitacion_al_personalúCapacitacion al PersonalrA  rD  F)u   capacitaciÃ³n_al_personalrG  rA  rD  F)Úgastos_medicos_y_medicamentoszGastos Medicos y MedicamentosrA  úGastos MedicosF)Úsalud_ocupacional_y_examenes_dzSalud Ocupacional y ExamenesrA  rI  F)éZ   )NNNÚiniciador“   N)NNN)3Ú__doc__r  r    r   rC   rà   Úurllib.errorrh   Úurllib.requestÚdatetimer   r=   Úpsycopg2.extrasÚ
app_configr   r   r   r   r   r   r	   rD   ÚdirnameÚabspathÚ__file__rE   r?   rÞ   r  rl   r   r   r&   r4   r:   r>   rN   r[   r   r†   r‘   r­   r´   rÒ   rç   rñ   rð   r
  r  r%  Ú__name__r<   r   r   Ú<module>rW     só   ðñó Û Û Û 	Û Û Û Ý ã Û ÷÷ ñ ð 	‡g�g‡o�o�b—g‘g—o‘o hÓ/Ó0€á‹K€	Ø
€Ø
€á
‹-€ò€ò0còWòò5ò)òò
ô4òD1ô.ò"ô>ò">òBò(	4ò
ò4ònò84Jðn ˆzÔÙ†Fñ r   