Ë
    zj�) ã            
       ó¬  — d dl Z e j                  j                  d d«       d dlZd dlZd dlZd dlZd dlZd dlZd dl	m
Z d dlmZ d dlmZmZmZmZ d dlmZ d dlmZ d dlmZ d d	lmZmZmZmZmZ d dlZ ej@                  d
«       d dl!m"Z# d dl$m%Z& d dl'm(Z(m)Z) d dl*m+Z+ d dl,m-Z- d dl.m/Z/m0Z0m1Z1m2Z2m3Z3m4Z4m5Z5 d dl6m7Z7m8Z8 d dl9m:Z:m;Z; d dl<m=Z=m>Z>m?Z? d dl@mAZA d dlBmCZC d dlDmEZE d dlFmGZG d dlHmIZI  eddg¬«      ZJg d¢ZKdeLfd„ZMd„ ZNd„ ZOdePeL   d ePeL   fd!„ZQd"ePfd#„ZRdePfd$„ZSd%„ ZTd&„ ZUd'„ ZVdePfd(„ZWd)„ ZXd‹d*„ZYdŒd+„ZZd�d,„Z[dŒd-„Z\dŽd.„Z]dŒd/„Z^dŒd0„Z_d�d1„Z`eZe[e\e]e^e_e`d2œZad3d4d5d6d7d8d9d2œZbeJjÇ                  d:d;d<¬=«       ed>d?¬@«       ee=«      fdAeLdBefdC„«       ZdeJjÇ                  dDdEdF¬=«       ed>d?¬@«       ee=«      fdAeLdBefdG„«       ZeeJjÇ                  dHdIdJ¬=«       ee=«      fdBefdK„«       ZfeJjÇ                  dLdMdN¬=«       ed>dO¬@«       edPdQ¬@«       ee=«      fdRegdSegdBefdT„«       Zhd�dU„ZieJjÇ                  dVdWdX¬=«       ed>d?¬@«       ee=«      fdAeLdBefdY„«       ZjeJjÇ                  dZd[d\¬=«       ed>d?¬@«       ee=«      fdAeLdBefd]„«       ZkeJjÇ                  d^d_d`¬=«       ed>da¬@«       edbdc¬@«       ee=«      fdRegddeLdBefde„«       Zld�df„Zmd�dg„Zndh„ Zodi„ Zpdj„ Zqdk„ ZreJjÇ                  dldmdn¬=«       ed>do¬@«       ee=«      fdRegdBefdp„«       ZseJjÇ                  dqdrds¬=«       ed>do¬@«       eddt¬@«       edudv¬@«       ee=«      fdRegdweLdxeLdBefdy„«       ZteJjÇ                  dzd{d|¬=«       ed>d}¬@«       ee=«      fdAeLdBefd~„«       ZueJjÇ                  dd€d�¬=«       ed>d}¬@«       edud‚¬@«       ee=«      fdAeLdxeLdBefdƒ„«       Zvd„„ Zwd…„ Zxd†„ Zyd‡„ Zzdˆ„ Z{d‰„ Z|dŠ„ Z}y)‘é    Nz/var/www/html/metafoliadorv2)Únow©ÚCounter)Ú	APIRouterÚDependsÚHTTPExceptionÚQuery)ÚFileResponse)ÚSession)ÚWorkbook)ÚFontÚPatternFillÚ	AlignmentÚBorderÚSideÚAgg)ÚA4Ú	landscape)Úcm)Úcolors)ÚSimpleDocTemplateÚ	ParagraphÚSpacerÚImageÚTableÚ
TableStyleÚ	PageBreak©ÚgetSampleStyleSheetÚParagraphStyle)Ú	TA_CENTERÚTA_LEFT)Úget_dbÚSessionLocalÚtenant_db_url_ctx)ÚAlfrescoSite)ÚAlfrescoFolder)ÚAlfrescoFile)ÚSyncProgress)Úsettingsz/api/v1/reporteszreportes-gen)ÚprefixÚtags)ú#6366F1z#EC4899z#F59E0Bz#10B981z#3B82F6z#8B5CF6z#EF4444z#14B8A6z#F97316z#06B6D4z#84CC16z#D946EFÚdb_urlc                 ó€   — ddl m}m} ddlm} ddlm}  || «      }|j                  |d|«         |dd|¬«      «       S )Nr   )Úcreate_engineÚevent)Úsessionmaker)Ú_set_session_utcÚconnectF)Ú
autocommitÚ	autoflushÚbind)Ú
sqlalchemyr0   r1   Úsqlalchemy.ormr2   Úapp.models.databaser3   Úlisten)r.   r0   r1   r2   r3   Úengines         ú;/var/www/html/metafoliadorv2/app/api/routes/reportes_gen.pyÚ_make_sessionr>   #   s:   € ß/Ý+Ý4Ù˜6Ó"€FØ	‡L�L�˜Ð$4Ô5ØG‰< 5°EÀÔGÓIÐIó    c                 ó@   — t        t        j                  d| «      «      S )Nz^\d+(?:-\d+)*\.\d+\s)ÚboolÚreÚmatch©Únames    r=   Úhas_tipologiarF   ,   s   € Ü”—‘Ð0°$Ó7Ó8Ð8r?   c                 óú   — ddl m} | j                  |«      j                  |j                  dk(  |j
                  dk7  |j
                  dk7  «      j                  «       }|D �cg c]  }|j
                  ‘Œ c}S c c}w )u8   Carga las claves de tipologÃ­a desde alfresco_tipologys.r   )ÚAlfrescoTipologyNÚ )Úapp.models.alfresco_tipologyrH   ÚqueryÚfilterÚ
deleted_atÚvalueÚall)ÚdbrH   ÚrowsÚts       r=   Ú_load_tipologia_keysrS   0   so   € å=Ø�8‰8Ð$Ó%×,Ñ,Ø×#Ñ# tÑ+Ø×Ñ $Ñ&Ø×Ñ "Ñ$ó÷ 
�cƒeð	 	ð
 "Ö"˜ˆA�G‹GÒ"Ð"ùÒ"s   Á"A8Ú
folder_idsÚtipologia_keysc           	      ó   — |r|s
t        «       S ddlm} t        «       }t        |«      }ddj	                  |«      z   dz   }t        dt        |«      d«      D ]ž  }|||dz    }dj	                  d„ t        t        |«      «      D «       «      }	t        |«      D �
�ci c]  \  }
}d	|
› �|“Œ }}
}||d
<   | j                   |d|	› d�«      |«      j                  «       }|D ]  \  }|j                  |«       Œ Œ  |S c c}}
w )uj   Retorna un set de folder_ids cuyos archivos tienen propiedades que coinciden con alguna key de tipologÃ­a.r   ©Útextú{ú,ú}iÐ  ú, c              3   ó&   K  — | ]	  }d |› �–— Œ y­w)z:fN© )Ú.0Újs     r=   ú	<genexpr>z*_find_tipologia_folders.<locals>.<genexpr>E   s   è ø€ Ò E¨a 2 a S¤Ñ Eùó   ‚ÚfÚkeyszg
            SELECT DISTINCT folder_id
            FROM alfresco_files
            WHERE folder_id IN (z¹)
              AND deleted = false
              AND name != 'index.xml'
              AND properties_json IS NOT NULL
              AND properties_json->'properties' ?| :keys
        )Úsetr8   rX   ÚlistÚjoinÚrangeÚlenÚ	enumerateÚexecuteÚfetchallÚadd)rP   rT   rU   rX   ÚresultÚfidsÚ
keys_arrayÚiÚbatchÚplaceholdersr`   ÚfidÚparamsrQ   s                 r=   Ú_find_tipologia_foldersrv   ;   s  € á™^Ü‹uˆÝÜ‹U€FÜ�
Ó€DØ�s—x‘x Ó/Ñ/°#Ñ5€JÜ�1”c˜$“i Ó&ò ˆØ�Q�q˜4‘xÐ ˆØ—y‘yÑ E´5¼¸U»Ó3DÔ EÓEˆÜ-6°uÓ-=×>¡6 1 c�A�a�S�'˜3‘,Ð>ˆÑ>Ø#ˆˆv‰Ø�z‰z™$ð $!ð ". ð /	ð ó ð ó÷ ‘h“jð 	ð ò 	‰FˆSØ�J‰J�s�Oñ	ðð  €Mùó ?s   ÂC:Úroot_folder_idsc                 óD  — ddl m} dj                  d„ t        t	        |«      «      D «       «      }t        |«      D ��ci c]  \  }}d|› �|“Œ }}}| j                   |d|› d�«      |«      j                  «       }i }|D ]  }	|	d   |	d	   |	d
   dœ||	d   <   Œ |S c c}}w )uî   CTE recursivo: obtiene el Ã¡rbol completo de carpetas bajo los roots dados.
    Retorna (folder_map, root_children) donde folder_map es {id: {name, parent_id, has_index_xml}}
    y root_children es la lista de hijos directos de cada root.r   rW   r\   c              3   ó&   K  — | ]	  }d |› �–— Œ y­w)z:ridNr^   ©r_   rq   s     r=   ra   z%_build_folder_tree.<locals>.<genexpr>\   s   è ø€ ÒM¨A˜t A 3œZÑMùrb   Úridz¦
        WITH RECURSIVE tree AS (
            SELECT id, parent_id, name, has_index_xml, 0 AS depth
            FROM alfresco_folders
            WHERE parent_id IN (aH  ) AND deleted = false
            UNION ALL
            SELECT f.id, f.parent_id, f.name, f.has_index_xml, t.depth + 1
            FROM alfresco_folders f
            JOIN tree t ON f.parent_id = t.id
            WHERE f.deleted = false AND t.depth < 20
        )
        SELECT id, parent_id, name, has_index_xml FROM tree
    é   é   é   ©Ú	parent_idrE   Úhas_index_xml©r8   rX   rg   rh   ri   rj   rk   rl   )
rP   rw   rX   rs   rq   r{   ru   rQ   Ú
folder_mapÚrs
             r=   Ú_build_folder_treer…   V   sÍ   € õ  à—9‘9ÑM´´s¸?Ó7KÓ1LÔMÓM€LÜ+4°_Ó+E×F¡  C��A�3ˆi˜‰nÐF€FÑFà�:‰:‘dð  !ð ". ð /ð	ó 	ð ó÷ ‘(“*ð 	ð €JØò TˆØ)*¨1©°q¸±tÈaÐPQÉdÑSˆ
�1�Q‘4ÒðTàÐùó' Gs   ¿Bc                 óD  — ddl m} |si S dj                  d„ t        t	        |«      «      D «       «      }t        |«      D ��ci c]  \  }}d|› �|“Œ }}}| j                   |d|› d�«      |«      j                  «       }|D �ci c]  }|d   |d   “Œ c}S c c}}w c c}w )	z.Cuenta archivos por carpeta en una sola query.r   rW   r\   c              3   ó&   K  — | ]	  }d |› �–— Œ y­w©z:fidNr^   rz   s     r=   ra   z)_count_files_by_folder.<locals>.<genexpr>x   ó   è ø€ ÒH¨A˜t A 3œZÑHùrb   rt   zc
        SELECT folder_id, COUNT(*) AS cnt
        FROM alfresco_files
        WHERE folder_id IN (zM) AND deleted = false AND name != 'index.xml'
        GROUP BY folder_id
    r|   r‚   )	rP   rT   rX   rs   rq   rt   ru   rQ   r„   s	            r=   Ú_count_files_by_folderrŠ   s   s¶   € åÙØˆ	Ø—9‘9ÑH´´s¸:³Ó1GÔHÓH€LÜ+4°ZÓ+@×A¡  C��A�3ˆi˜‰nÐA€FÑAØ�:‰:‘dð  ð *˜Nð +ðó 	ð
 ó÷
 ‘(“*ð 	ð !%Ö%˜1ˆAˆa‰D�!�A‘$‰JÒ%Ð%ùó Bùò &s   ÁBÂBc                 óº   — |j                  |d«      }| j                  «       D ��cg c]  \  }}|d   |k(  sŒ|‘Œ }}}|D ]  }|t        | ||«      z  }Œ |S c c}}w )z?Cuenta archivos recursivamente desde un diccionario en memoria.r   r€   )ÚgetÚitemsÚ_count_files_recursive)rƒ   Ú	folder_idÚfile_countsÚtotalrt   rc   ÚchildrenÚchs           r=   rŽ   rŽ   ƒ   sm   € à�O‰O˜I qÓ)€EØ",×"2Ñ"2Ó"4×T™˜˜Q¸¸+¹È)Ó8S’ÐT€HÑTØò EˆØÔ'¨
°B¸ÓDÑD‰ðEà€Lùó Us
   ¦A·Ac                 óÞ   — | j                  |i «      j                  d«      rdnd}| j                  «       D ��cg c]  \  }}|d   |k(  sŒ|‘Œ }}}|D ]  }|t        | |«      z  }Œ |S c c}}w )u-   Cuenta Ã­ndices recursivamente desde memoria.r�   r|   r   r€   )rŒ   r�   Ú_count_indices_recursive)rƒ   r�   r‘   rt   rc   r’   r“   s          r=   r•   r•   Œ   sx   € à—‘ 	¨2Ó.×2Ñ2°?ÔC‰AÈ€EØ",×"2Ñ"2Ó"4×T™˜˜Q¸¸+¹È)Ó8S’ÐT€HÑTØò :ˆØÔ)¨*°bÓ9Ñ9‰ð:à€Lùó Us   ¹A)Á
A)c           	      óx  — ddl m}  |«       }| D �cg c]  }| |   d   |k(  sŒ|| |   d   f‘Œ }}|D ][  \  }}t        |«      r||xx   t        | ||«      z  cc<   Œ*t	        | ||«      }	|	j                  «       D ]  \  }
}||
xx   |z  cc<   Œ Œ] |j                  |d«      }|dkD  r|dxx   |z  cc<   |S c c}w )u1   Obtiene tipologÃ­as recursivamente desde memoria.r   r   r€   rE   zSIN TIPOLOGIA)Úcollectionsr   rF   rŽ   Ú_get_tipologias_recursive_fastr�   rŒ   )rƒ   r�   Úroot_idr   Ú
tipologiasÚcr’   Úch_idÚch_nameÚsubÚkÚvÚfcs                r=   r˜   r˜   •   sÞ   € å#Ù“€JØ4>Öh¨qÀ*ÈQÁ-ÐP[ÑB\Ð`gÓBg��J˜q‘M &Ñ)Ò*Ðh€HÐhØ"ò #‰ˆˆwÜ˜Ô!Ø�wÓÔ#9¸*ÀeÈ[Ó#YÑYÔä0°¸[È%ÓPˆCØŸ	™	›ò #‘��1Ø˜1“ Ñ"”ñ#ð#ð 
�‰˜ !Ó	$€BØ	ˆA‚vØ�?Ó# rÑ)Ó#ØÐùò is
   ’B7£B7c                 óÞ  — ddl m} |si S dj                  d„ t        t	        |«      «      D «       «      }t        |«      D ��ci c]  \  }}d|› �|“Œ }}}| j                   |d|› d�«      |«      j                  «       }i }|D ]`  \  }}	||vrt        «       ||<   |	r8d|	v r4|	j                  dd	«      d
   j                  «       }
||   |
xx   d	z  cc<   ŒQ||   dxx   d	z  cc<   Œb |S c c}}w )zHObtiene extensiones de archivos agrupadas por carpeta en una sola query.r   rW   r\   c              3   ó&   K  — | ]	  }d |› �–— Œ y­wrˆ   r^   rz   s     r=   ra   z,_get_extensions_by_folder.<locals>.<genexpr>¬   r‰   rb   rt   zX
        SELECT folder_id, name
        FROM alfresco_files
        WHERE folder_id IN (z2) AND deleted = false AND name != 'index.xml'
    ú.r|   éÿÿÿÿzSIN EXTENSION)r8   rX   rg   rh   ri   rj   rk   rl   r   ÚrsplitÚlower)rP   rT   rX   rs   rq   rt   ru   rQ   rn   ÚfnameÚexts              r=   Ú_get_extensions_by_folderrª   §   s  € åÙØˆ	Ø—9‘9ÑH´´s¸:³Ó1GÔHÓH€LÜ+4°ZÓ+@×A¡  C��A�3ˆi˜‰nÐA€FÑAØ�:‰:‘dð  ð *˜Nð +ðó 	ð ó	÷ ‘(“*ð	 	ð
 €FØò .‰
ˆˆUØ�fÑÜ!›)ˆF�3‰KÙ�S˜E‘\Ø—,‘,˜s AÓ& rÑ*×0Ñ0Ó2ˆCØ�3‰K˜Ó Ñ!Ôà�3‰K˜Ó(¨AÑ-Ô(ð.ð €Mùó Bs   ÁC)c                 ó<  — ddl m}  |«       }|j                  |i «      j                  «       D ]  \  }}||xx   |z  cc<   Œ | D �cg c]  }| |   d   |k(  sŒ|‘Œ }}|D ]4  }	t	        | ||	«      }
|
j                  «       D ]  \  }}||xx   |z  cc<   Œ Œ6 |S c c}w )z.Suma extensiones recursivamente desde memoria.r   r   r€   )r—   r   rŒ   r�   Ú_get_extensions_recursive_fast)rƒ   Úext_by_folderr™   r   r‘   rŸ   r    r›   r’   r“   rž   s              r=   r¬   r¬   ¿   sµ   € å#Ù‹I€EØ×!Ñ! '¨2Ó.×4Ñ4Ó6ò ‰ˆˆ1Øˆa‹�A‰Œðà%ÖO�a¨°A©°{Ñ)CÀwÓ)N’ÐO€HÐOØò ˆÜ,¨Z¸ÈÓKˆØ—I‘I“Kò 	‰DˆAˆqØ�!‹H˜‰MŒHñ	ðð €Lùò Ps   ÁBÁBc                 ó¦   — t        j                  «       }| j                  |d|dd¬«       |j                  d«       t	        j
                  | «       |S )NÚpngÚtightÚwhite)ÚformatÚdpiÚbbox_inchesÚ	facecolorr   )ÚioÚBytesIOÚsavefigÚseekÚpltÚclose)Úfigr³   Úbufs      r=   Ú_fig_to_bytesr¾   Í   s>   € Ü
�*‰*‹,€CØ‡K�K�˜E s¸È7€KÔSØ‡H�HˆQ„KÜ‡I�Iˆc„NØ€Jr?   c           	      ó‚  — | j                  |«      }|D �cg c]  }|d   ‘Œ	 }}|D �cg c]  }|d   ‘Œ	 }}|rt        d„ |D «       «      ry t        j                  d¬«      \  }	}
t	        t        |«      «      D �cg c]  }t        |t        t        «      z     ‘Œ }}|
j                  t	        t        |«      «      ||dd¬«      }|
j                  t	        t        |«      «      «       |
j                  |d	d
d¬«       |
j                  |d¬«       |
j                  |ddd¬«       t        ||«      D ]d  \  }}|
j                  |j                  «       |j                  «       dz  z   |j!                  «       t#        |«      dz  z   t%        |«      ddd¬«       Œf |	j'                  «        t)        |	«      S c c}w c c}w c c}w )Nr   r|   c              3   ó&   K  — | ]	  }|d k(  –— Œ y­w©r   Nr^   ©r_   r    s     r=   ra   z"_make_bar_chart.<locals>.<genexpr>Ù   ó   è ø€ Ò0 A˜˜a�Ñ0ùrb   ©é   g      @©Úfigsizer±   ç      à?©ÚcolorÚ	edgecolorÚ	linewidthé-   ÚrightrÅ   ©ÚrotationÚhaÚfontsizeé	   ©rÒ   é   Úboldé
   ©rÒ   Ú
fontweightÚpadr}   ç{®Gáz„?ÚcenterÚbottomé   )rÑ   ÚvarÒ   )Úmost_commonrO   rº   Úsubplotsrh   ri   ÚCHART_COLORSÚbarÚ
set_xticksÚset_xticklabelsÚ
set_ylabelÚ	set_titleÚziprX   Úget_xÚ	get_widthÚ
get_heightÚmaxÚstrÚtight_layoutr¾   )ÚdataÚtitleÚxlabelÚylabelÚmax_barsr�   ÚitÚlabelsÚvaluesr¼   Úaxrq   Úcolors_listÚbarsrã   Úvals                   r=   Ú_make_bar_chartrû   Õ   s”  € Ø×Ñ˜XÓ&€EØ#Ö$˜ˆb�‹eÐ$€FÐ$Ø#Ö$˜ˆb�‹eÐ$€FÐ$Ù”SÑ0¨Ô0Ô0Øä�l‰l 8Ô,�G€CˆÜ@EÄcÈ&ÃkÓ@RÖS¸1”< ¤C¬Ó$5Ñ 5Ó6ÐS€KÐSØ�6‰6”%œ˜F›Ó$ f°KÈ7Ð^aˆ6Ób€DØ‡M�M”%œ˜F›Ó$Ô%Ø×Ñ�v¨¨wÀÐÔCØ‡M�M�& 1€MÔ%Ø‡L�L� °¸B€LÔ?Ü˜˜fÓ%ò @‰ˆˆSØ
�‰�—	‘	“˜cŸm™m›o°Ñ1Ñ1°3·>±>Ó3CÄcÈ&ÃkÐTXÑFXÑ3XÜ�C“˜X¨(¸Qð 	õ 	@ð@ð ×ÑÔÜ˜ÓÐùò! %ùÚ$ùò
 Ts   –F2¨F7Á: F<c           	      óH  — | j                  |«      }|D �cg c]  }|d   ‘Œ	 }}|D �cg c]  }|d   ‘Œ	 }}t        |«      }|dk(  ry t        j                  d¬«      \  }}	t	        t        |«      «      D �
cg c]  }
t        |
t        t        «      z     ‘Œ }}
|	j                  |d d„ |dddi¬	«      \  }}}|D ]  }|j                  d
«       Œ |	j                  |ddd¬«       |	j                  ||dddd
¬«       |j                  «        t        |«      S c c}w c c}w c c}
w )Nr   r|   rÄ   rÆ   c                 ó   — | dkD  r| d›d�S dS )Nr   z.1fú%rI   r^   )Úps    r=   ú<lambda>z!_make_pie_chart.<locals>.<lambda>ô   s   € Ð\]Ð`aÒ\aÐPQÐRUÈwÐVWÈ[€ Ðgi€ r?   éZ   rÒ   rÅ   )rõ   Úautopctr   Ú
startangleÚ	textpropsrÞ   rÕ   rÖ   r×   rØ   rI   zcenter left)r|   rÈ   )rð   ÚlocÚbbox_to_anchorrÒ   )rà   Úsumrº   rá   rh   ri   râ   ÚpieÚset_fontsizerç   Úlegendrî   r¾   )rï   rð   Ú
max_slicesr�   rô   rõ   rö   r‘   r¼   r÷   rq   rø   ÚwedgesÚtextsÚ	autotextsÚats                   r=   Ú_make_pie_chartr  ê   s-  € Ø×Ñ˜ZÓ(€EØ#Ö$˜ˆb�‹eÐ$€FÐ$Ø#Ö$˜ˆb�‹eÐ$€FÐ$Ü�‹K€EØ�‚zØä�l‰l 8Ô,�G€CˆÜ@EÄcÈ&ÃkÓ@RÖS¸1”< ¤C¬Ó$5Ñ 5Ó6ÐS€KÐSØ!Ÿv™v f°TÑCiØ.9ÀbØ2<¸a°ð  &ó  BÑ€FˆE�9ð ò ˆØ
�‰˜Õðà‡L�L� °¸B€LÔ?Ø‡I�Iˆf�f B¨MÈ(Ð]^€IÔ_Ø×ÑÔÜ˜ÓÐùò! %ùÚ$ùò Ts   –D¨DÁ6 Dc           	      óÄ  — | j                  |«      }|D �cg c]  }|d   ‘Œ	 }}|D �cg c]  }|d   ‘Œ	 }}|rt        d„ |D «       «      ry t        j                  d¬«      \  }	}
|
j	                  t        t        |«      «      |dt        d   dd¬	«       |
j                  t        t        |«      «      «       |
j                  |d
dd¬«       |
j                  |d¬«       |
j                  |ddd¬«       |
j                  ddd¬«       t        |«      D ]'  \  }}|
j                  t        |«      ||fdddd¬«       Œ) |	j!                  «        t#        |	«      S c c}w c c}w )Nr   r|   c              3   ó&   K  — | ]	  }|d k(  –— Œ y­wrÁ   r^   rÂ   s     r=   ra   z#_make_line_chart.<locals>.<genexpr>  rÃ   rb   rÄ   rÆ   Úor}   é   ©ÚmarkerrÊ   rÌ   Ú
markersizerÍ   rÎ   rÅ   rÏ   rÓ   rÔ   rÕ   rÖ   r×   rØ   Tú--rÈ   ©Ú	linestyleÚalphaúoffset points©r   rÅ   rÜ   rÞ   ©Ú
textcoordsÚxytextrÑ   rÒ   )rà   rO   rº   rá   Úplotrh   ri   râ   rä   rå   ræ   rç   Úgridrj   Úannotaterí   rî   r¾   ©rï   rð   rñ   rò   Ú
max_pointsr�   rô   rõ   rö   r¼   r÷   rq   rú   s                r=   Ú_make_line_chartr&  ÿ   sM  € Ø×Ñ˜ZÓ(€EØ#Ö$˜ˆb�‹eÐ$€FÐ$Ø#Ö$˜ˆb�‹eÐ$€FÐ$Ù”SÑ0¨Ô0Ô0Øä�l‰l 8Ô,�G€CˆØ‡G�GŒE”#�f“+Ó ¨s¼,Àq¹/ÐUVÐcd€GÔeØ‡M�M”%œ˜F›Ó$Ô%Ø×Ñ�v¨¨wÀÐÔCØ‡M�M�& 1€MÔ%Ø‡L�L� °¸B€LÔ?à‡G�GˆD˜D¨€GÔ,Ü˜FÓ#ò -‰ˆˆ3Ø
�‰”C˜“H˜q #˜h°?È6Ø¨!ð 	õ 	-ð-ð ×ÑÔÜ˜ÓÐùò# %ùÚ$s
   –E¨Ec                 óœ  — | j                  |«      }|D �cg c]  }|d   ‘Œ	 }}|D �cg c]  }|d   ‘Œ	 }}|rt        d„ |D «       «      ry t        j                  d¬«      \  }}	t	        t        |«      «      D �
cg c]  }
t        |
t        t        «      z     ‘Œ }}
|	j                  t	        t        |«      «      ||dd¬«      }|	j                  t	        t        |«      «      «       |	j                  |d	¬
«       |	j                  |d¬
«       |	j                  |ddd¬«       |	j                  «        t        ||«      D ]c  \  }}|	j                  |j                  «       t!        |«      dz  z   |j#                  «       |j%                  «       dz  z   t'        |«      dd¬«       Œe |j)                  «        t+        |«      S c c}w c c}w c c}
w )Nr   r|   c              3   ó&   K  — | ]	  }|d k(  –— Œ y­wrÁ   r^   rÂ   s     r=   ra   z-_make_horizontal_bar_chart.<locals>.<genexpr>  rÃ   rb   rÄ   rÆ   r±   rÈ   rÉ   rÅ   rÔ   rÓ   rÕ   rÖ   r×   rØ   rÛ   r}   rÜ   rÞ   )rß   rÒ   )rà   rO   rº   rá   rh   ri   râ   ÚbarhÚ
set_yticksÚset_yticklabelsÚ
set_xlabelrç   Úinvert_yaxisrè   rX   rê   rì   Úget_yrë   rí   rî   r¾   )rï   rð   rñ   ró   r�   rô   rõ   rö   r¼   r÷   rq   rø   rù   rã   rú   s                  r=   Ú_make_horizontal_bar_chartr/    s•  € Ø×Ñ˜XÓ&€EØ#Ö$˜ˆb�‹eÐ$€FÐ$Ø#Ö$˜ˆb�‹eÐ$€FÐ$Ù”SÑ0¨Ô0Ô0Øä�l‰l 8Ô,�G€CˆÜ@EÄcÈ&ÃkÓ@RÖS¸1”< ¤C¬Ó$5Ñ 5Ó6ÐS€KÐSØ�7‰7”5œ˜V›Ó% v°[ÈGÐ_bˆ7Óc€DØ‡M�M”%œ˜F›Ó$Ô%Ø×Ñ�v¨ÐÔ*Ø‡M�M�& 1€MÔ%Ø‡L�L� °¸B€LÔ?Ø‡O�OÔÜ˜˜fÓ%ò 3‰ˆˆSØ
�‰�—‘“¤# f£+°Ñ"4Ñ4°c·i±i³kÀCÇNÁNÓDTÐWXÑDXÑ6XÜ�C“˜X°ð 	õ 	3ð3ð ×ÑÔÜ˜ÓÐùò# %ùÚ$ùò
 Ts   –F?¨GÁ: G	c           	      ó   — | j                  |«      }|D �cg c]  }|d   ‘Œ	 }}|D �cg c]  }|d   ‘Œ	 }}|rt        d„ |D «       «      ry t        j                  d¬«      \  }	}
|
j	                  t        t        |«      «      |dt        d   ¬«       |
j                  t        t        |«      «      |dt        d   d	d
¬«       |
j                  t        t        |«      «      «       |
j                  |ddd¬«       |
j                  |d¬«       |
j                  |ddd¬«       |
j                  ddd¬«       t        |«      D ]'  \  }}|
j                  t!        |«      ||fdddd¬«       Œ) |	j#                  «        t%        |	«      S c c}w c c}w )Nr   r|   c              3   ó&   K  — | ]	  }|d k(  –— Œ y­wrÁ   r^   rÂ   s     r=   ra   z#_make_area_chart.<locals>.<genexpr>/  rÃ   rb   rÄ   rÆ   çš™™™™™Ù?)r  rÊ   r  r}   r  r  rÍ   rÎ   rÅ   rÏ   rÓ   rÔ   rÕ   rÖ   r×   rØ   Tr  ç333333Ó?r  r  r  rÜ   rÞ   r  )rà   rO   rº   rá   Úfill_betweenrh   ri   râ   r!  rä   rå   ræ   rç   r"  rj   r#  rí   rî   r¾   r$  s                r=   Ú_make_area_chartr5  +  sn  € Ø×Ñ˜ZÓ(€EØ#Ö$˜ˆb�‹eÐ$€FÐ$Ø#Ö$˜ˆb�‹eÐ$€FÐ$Ù”SÑ0¨Ô0Ô0Øä�l‰l 8Ô,�G€CˆØ‡O�O”Eœ#˜f›+Ó&¨°cÄÈaÁ€OÔQØ‡G�GŒE”#�f“+Ó ¨s¼,Àq¹/ÐUVÐcd€GÔeØ‡M�M”%œ˜F›Ó$Ô%Ø×Ñ�v¨¨wÀÐÔCØ‡M�M�& 1€MÔ%Ø‡L�L� °¸B€LÔ?à‡G�GˆD˜D¨€GÔ,Ü˜FÓ#ò -‰ˆˆ3Ø
�‰”C˜“H˜q #˜h°?È6Ø¨!ð 	õ 	-ð-ð ×ÑÔÜ˜ÓÐùò% %ùÚ$s
   –F¨Fc           	      ó¦  — | j                  |«      }|D �cg c]  }|d   ‘Œ	 }}|D �cg c]  }|d   ‘Œ	 }}|rt        d„ |D «       «      ry t        j                  d¬«      \  }	}
t	        t        |«      «      }|
j                  ||t        d   dddd	¬
«       |
j                  |«       |
j                  |ddd¬«       |
j                  |d¬«       |
j                  |ddd¬«       |
j                  ddd¬«       t        |«      D ]'  \  }}|
j                  t        |«      ||fdddd¬«       Œ) |	j!                  «        t#        |	«      S c c}w c c}w )Nr   r|   c              3   ó&   K  — | ]	  }|d k(  –— Œ y­wrÁ   r^   rÂ   s     r=   ra   z&_make_scatter_chart.<locals>.<genexpr>F  rÃ   rb   rÄ   rÆ   éP   çffffffæ?r±   rÈ   )r›   Úsr  Ú
edgecolorsrÌ   rÍ   rÎ   rÅ   rÏ   rÓ   rÔ   rÕ   rÖ   r×   rØ   Tr  r3  r  r  r  rÜ   rÞ   r  )rà   rO   rº   rá   rh   ri   Úscatterrâ   rä   rå   ræ   rç   r"  rj   r#  rí   rî   r¾   )rï   rð   rñ   rò   r%  r�   rô   rõ   rö   r¼   r÷   Úxrq   rú   s                 r=   Ú_make_scatter_chartr>  B  sJ  € Ø×Ñ˜ZÓ(€EØ#Ö$˜ˆb�‹eÐ$€FÐ$Ø#Ö$˜ˆb�‹eÐ$€FÐ$Ù”SÑ0¨Ô0Ô0Øä�l‰l 8Ô,�G€CˆÜŒc�&‹kÓ€AØ‡J�Jˆq�&œL¨™O¨r¸ÈÐ\_€JÔ`Ø‡M�M�!ÔØ×Ñ�v¨¨wÀÐÔCØ‡M�M�& 1€MÔ%Ø‡L�L� °¸B€LÔ?à‡G�GˆD˜D¨€GÔ,Ü˜FÓ#ò -‰ˆˆ3Ø
�‰”C˜“H˜q #˜h°?È6Ø¨!ð 	õ 	-ð-ð ×ÑÔÜ˜ÓÐùò% %ùÚ$s
   –E	¨Ec                 óæ  — t        | j                  «       «      }|rt        d„ |D «       «      ry t        j                  d¬«      \  }}|j                  |t        dt        t        |«      «      xs d«      t        d   dd¬	«       |j                  |xs d
d¬«       |j                  |d¬«       |j                  |ddd¬«       |j                  ddd¬«       |j                  «        t        |«      S )Nc              3   ó&   K  — | ]	  }|d k(  –— Œ y­wrÁ   r^   rÂ   s     r=   ra   z(_make_histogram_chart.<locals>.<genexpr>[  rÃ   rb   rÄ   rÆ   é   r|   r   r±   gš™™™™™é?)ÚbinsrÊ   rË   r  ÚCantidadrÓ   rÔ   rÕ   rÖ   r×   rØ   Tr  r3  r  )rf   rö   rO   rº   rá   ÚhistÚminri   re   râ   r,  ræ   rç   r"  rî   r¾   )rï   rð   rñ   rò   rö   r¼   r÷   s          r=   Ú_make_histogram_chartrF  Y  sÎ   € Ü�$—+‘+“-Ó €FÙ”SÑ0¨Ô0Ô0Øä�l‰l 8Ô,�G€CˆØ‡G�GˆFœ˜R¤¤S¨£[Ó!1Ò!6°QÓ7¼|ÈA¹Ø Sð ô *à‡M�M�&Ò&˜J°€MÔ3Ø‡M�M�& 1€MÔ%Ø‡L�L� °¸B€LÔ?à‡G�GˆD˜D¨€GÔ,Ø×ÑÔÜ˜ÓÐr?   )ÚbarrasÚcircularÚlinealÚbarras_horizontalÚareaÚ
dispersionÚ
histogramaz	de barrasrH  rI  zde barras horizontalesu   de Ã¡reau   de dispersiÃ³nrM  z/trd-tipologias/statusu!   Estado de reporte TRD/TipologÃ­asuN   Consulta el estado de generaciÃ³n de un reporte TRD/TipologÃ­as por su job_id.)ÚsummaryÚdescription.u)   ID del trabajo de generaciÃ³n del reporte)rO  Újob_idrP   c              ƒ   óÖ   K  — |j                  t        «      j                  t        j                  | k(  «      j	                  «       }|sddiS |j
                  |j                  xs ddœS ­w©NÚstatusÚ	not_foundrI   )rS  Úerror©rK   r)   rL   Útask_idÚfirstrS  Úerror_message©rP  rP   Úprogresss      r=   Úget_report_statusr\    ó[   è ø€ à�x‰xœÓ%×,Ñ,¬\×-AÑ-AÀVÑ-KÓL×RÑRÓT€HÙØ˜+Ð&Ð&Ø—o‘o°×0FÑ0FÒ0LÈ"ÑMÐMùó   ‚A'A)z/trd-tipologias/downloadu!   Descargar reporte TRD/TipologÃ­asuq   Descarga el archivo Excel del reporte TRD/TipologÃ­as generado. Elimina el registro de progreso tras la descarga.c              ƒ   ó–  K  — |j                  t        «      j                  t        j                  | k(  «      j	                  «       }|r|j
                  dk7  rt        dd¬«      ‚d| z   dz   }t        j                  j                  |«      st        dd¬«      ‚|j                  |«       |j                  «        |j                  t        «      j                  t        j                  |j                  k(  «      j	                  «       }t        «       j!                  d«      }d	|r|j"                  nd
z   dz   |z   dz   }t%        ||d¬«      S ­w)NÚ	completedé”  úReporte no disponible©Ústatus_codeÚdetailú	/tmp/trd_ú.xlsxúArchivo no encontradoú%Y%m%d_%H%M%SÚTRD_Tipologias_rI   Ú_úAapplication/vnd.openxmlformats-officedocument.spreadsheetml.sheet©ÚfilenameÚ
media_type©rK   r)   rL   rW  rX  rS  r   ÚosÚpathÚexistsÚdeleteÚcommitr&   ÚidÚsite_idÚtznowÚstrftimerE   r
   ©rP  rP   r[  rr  Úsite2Útsr¨   s          r=   Údownload_reportr}  ‡  s  è ø€ à�x‰xœÓ%×,Ñ,¬\×-AÑ-AÀVÑ-KÓL×RÑRÓT€HÙ�x—‘¨+Ò5Ü¨Ð4KÔLÐLØ˜Ñ 'Ñ)€DÜ�7‰7�>‰>˜$ÔÜ¨Ð4KÔLÐLØ‡I�IˆhÔØ‡I�I„KØ�H‰H”\Ó"×)Ñ)¬,¯/©/¸X×=MÑ=MÑ*MÓN×TÑTÓV€EÜ	‹×	Ñ	˜/Ó	*€BØ©u §¢¸"Ñ=ÀÑCÀbÑHÈ7ÑR€EÜ˜ uØ#fôhð hùó   ‚EE	z/sites-with-foldersz*Sitios con Series, Subseries y ExpedienteszwLista los sitios activos que tienen Series, Subseries y Expedientes sincronizados, para usar en selectores de reportes.c              ƒ   ó€  K  — ddl m} | j                   |t        j                  «      «      j                  t        j                  dk(  «      j                  «       }|D �cg c]  }|d   ‘Œ	 }}| j                  t        «      j                  t        j                  j                  |«      t        j                  dk(  «      j                  t        j                  «      j                  «       }|D �cg c]<  }|j                  |j                  dz   |j                  xs |j                  z   dz   dœ‘Œ> c}S c c}w c c}w ­w)Nr   )ÚdistinctFTz (ú))rv  rE   )r8   r€  rK   r'   rw  rL   ÚdeletedrO   r&   rv  Úin_ÚactiveÚorder_byrE   rð   )rP   r€  Úsite_idsr:  ÚidsÚsitess         r=   Úsites_with_foldersr‰  ˜  sõ   è ø€ å#Ø�x‰x™¤×!7Ñ!7Ó8Ó9×@Ñ@Ä×AWÑAWÐ[`ÑA`Óa×eÑeÓg€HØ!Ö
"�Aˆ1ˆQ‹4Ð
"€CÐ
"Ø�H‰H”\Ó"×)Ñ)¬,¯/©/×*=Ñ*=¸cÓ*BÄL×DWÑDWÐ[_ÑD_Ó`×iÑiÔjv×j{Ñj{Ó|÷  Añ  Aó  C€EØUZÖ[ÐPQ�1—4‘4 §¡¨$¡°!·'±'Ò2C¸Q¿V¹VÑ!DÀsÑ!JÓKÒ[Ð[ùò #ùâ[ùs    ‚AD>Á D4Á,BD>Ã0AD9Ä1D>z/trd-tipologiasu   Generar reporte TRD/TipologÃ­asuÎ   Genera de forma asÃ­ncrona un reporte Excel con el Ã¡rbol jerÃ¡rquico de tipologÃ­as documentales y conteo de archivos por Serie, Subserie o Expediente. Devuelve un job_id para consultar estado y descargar.z ID del sitio para el reporte TRDr~   u,   Niveles mÃ¡ximos de profundidad en el Ã¡rbolrw  Ú
max_levelsc              ƒ   ó   ‡ ‡‡‡K  — |j                  t        «      j                  t        j                  ‰ k(  «      j	                  «       }|st        dd¬«      ‚t        t        j                  «       «      Št        ‰‰ dd¬«      }|j                  |«       |j                  «        t        j                  «       xs t        j                  Šˆˆˆˆ fd„}t!        j"                  |d¬	«      j%                  «        d‰d
œS ­w)Nra  úSitio no encontradorc  ÚrunningzGenerando reporte...©rW  rw  rS  Úmessagec                  óô  •— t        ‰«      } 	 t        | ‰‰‰‰«       | j                  «        y # t        $ r«}t        ‰«      }	 |j                  t        «      j                  t        j                  ‰k(  «      j                  «       }|r*d|_        t        |«      d d |_
        |j                  «        |j                  «        n# |j                  «        w xY wY d }~ŒÀd }~ww xY w# | j                  «        w xY w©NrU  éô  )r>   Ú_generate_trdÚ	ExceptionrK   r)   rL   rW  rX  rS  rí   rY  ru  r»   )Údb2ÚeÚdb3rÿ   r.   rP  rŠ  rw  s       €€€€r=   Ú
run_reportz'generate_trd_report.<locals>.run_report®  sÀ   ø€ Ü˜FÓ#ˆð	Ü˜#˜w¨
°F¸FÔCð �I‰I�Køô ò 		Ü Ó'ˆCðØ—I‘IœlÓ+×2Ñ2´<×3GÑ3GÈ6Ñ3QÓR×XÑXÓZ�ÙØ&�A”HÜ&)¨!£f¨T¨c l�A”OØ—J‘J”Là—	‘	•ø�—	‘	•ú”ûð		ûð �I‰I�Kúó?   Ž. ®	C"·CÁA/CÂ2CÃCÃCÃC% ÃC"Ã"C% Ã%C7T©ÚtargetÚdaemon©ÚokrP  )rK   r&   rL   rv  rX  r   rí   ÚuuidÚuuid4r)   rm   ru  r%   rŒ   r*   Údatabase_urlÚ	threadingÚThreadÚstart)rw  rŠ  rP   Úsiter[  r˜  r.   rP  s   ``    @@r=   Úgenerate_trd_reportr¦  ¡  s½   ûè ø€ à�8‰8”LÓ!×(Ñ(¬¯©¸GÑ)CÓD×JÑJÓL€DÙÜ¨Ð4IÔJÐJä”—‘“Ó€FÜ F°GÀIÐWmÔn€HØ‡F�Fˆ8ÔØ‡I�I„Kä×"Ñ"Ó$Ò=¬×(=Ñ(=€F÷ô" ×Ñ˜J¨tÔ4×:Ñ:Ô<Ø &Ñ)Ð)ùs   †C8C>c                 ó’	  ‡‡‡%‡&‡'‡(‡)‡*— | j                  t        «      j                  t        j                  |k(  «      j	                  «       }|sy | j                  t
        «      j                  t
        j                  |k(  t
        j                  d k(  t
        j                  dk(  «      j                  t
        j                  «      j                  «       }d }|D ]  }|j                  dk(  sŒ|} n |r|j                  g}	n|r|D �
cg c]  }
|
j                  ‘Œ }	}
ng }	|	rt        | |	«      ni Š't        ‰'j                  «       «      }t        | |«      Š%t!        | «      }|rt#        | ||«      n	t%        «       Š*t'        «       }|j(                  }d|_        t-        ddd¬«      }t/        ddd	¬
«      }t1        t3        d¬«      t3        d¬«      t3        d¬«      t3        d¬«      ¬«      }g Š)dgŠ&‰'D �cg c]  }‰'|   d   |	v sŒ|‘Œ }}ˆˆ%ˆ&ˆ'ˆˆ(ˆ)ˆ*fd„Š(|D ]  } ‰(|d|g «       Œ ‰)rt5        d„ ‰)D «       «      nd}t7        |d«      }g }t9        |dz
  «      D ]"  }|j;                  dt=        |dz   «      z   «       Œ$ |j;                  d«       t?        |d«      D ]?  \  }}|jA                  d||¬«      }||_!        ||_"        tG        d¬«      |_$        ||_%        ŒA t?        ‰)d«      D ]j  \  }\  }}t        |«      dg|tM        |«      z
  z  z   }t9        |«      D ]6  }||   }|jA                  ||dz   |¬«      }||_%        tG        d¬«      |_$        Œ8 Œl t9        d|dz   «      D ]1  } d|jN                  |jA                  d| ¬«      jP                     _)        Œ3 tU        jV                  ddd¬ «      }!|jY                  |!j                  «       |!j[                  «        d!‰z   dz   }"t]        j^                  |!j                  |"«       ta        ‰xs tb        jd                  «      }#	 |#j                  tf        «      j                  tf        jh                  ‰k(  «      j	                  «       }$|$r6d"|$_5        d#t=        tM        ‰)«      «      z   d$z   |$_6        |#jo                  «        |#j[                  «        y c c}
w c c}w # |#j[                  «        w xY w)%NFÚdocumentLibraryzTRD TipologiasTÚFFFFFFrÕ   )rÖ   rÊ   ÚsizeÚ6366F1Úsolid©Ústart_colorÚ	end_colorÚ	fill_typeÚthin©Ústyle©ÚleftrÎ   ÚtoprÝ   r   r€   c                 ó˜  •— ‰|    d   }| ‰v }t        ‰| ‰«      }t        |«      |gz   }d}|r0t        |«      }|j                  |«       ‰j                  |df«       y ||dz
  k\  r6dt        |«      z   dz   }|j                  |«       ‰j                  |df«       y ‰D �	cg c]  }	‰|	   d   | k(  sŒ|	‘Œ }
}	|
j	                  ˆfd	„¬
«       |
s6dt        |«      z   dz   }|j                  |«       ‰j                  |df«       y t        |«      |gz   }|
D ]§  }‰dxx   dz  cc<   ‰d   dz  dk(  r	 t        ‰«      }|j                  t        «      j                  t        j                  ‰k(  «      j                  «       }|rd‰d   › d�|_        |j                  «        |j                  «         ‰||dz   ||«       Œ© y c c}	w #  Y ŒxY w)NrE   rI   Ú	tipologiar|   zSIN TIPOLOGIA - z	 archivosÚsin_tipr€   c                 ó   •— ‰|    d   S ©NrE   r^   )Úcidrƒ   s    €r=   r   z7_generate_trd.<locals>.process_branch.<locals>.<lambda>   s   ø€  j°¡o°fÑ&=€ r?   ©Úkeyr   éd   zGenerando: z+ Series, Subseries y Expedientes procesados)rŽ   rf   rí   ÚappendÚsortr>   rK   r)   rL   rW  rX  r�  ru  r»   )r�   ÚdepthÚ	max_depthÚparentsrE   Úis_tipÚ
file_countÚrowÚlast_valrt   r’   Únew_parentsrœ   r—  rÿ   r.   r�   Úfolder_countrƒ   rP  Úprocess_branchrQ   Útipologia_folderss                  €€€€€€€€r=   rË  z%_generate_trd.<locals>.process_branchï  sÚ  ø€ Ø˜)Ñ$ VÑ,ˆØÐ/Ð/ˆÜ+¨J¸	À;ÓOˆ
Ü�7‹m˜t˜fÑ$ˆØˆÙÜ˜:“ˆHØ�J‰J�xÔ Ø�K‰K˜˜kÐ*Ô+ØØ�i !‘mÒ#Ø)¬C°
«OÑ;¸kÑIˆHØ�J‰J�xÔ Ø�K‰K˜˜iÐ(Ô)ØØ#-Ö[˜C°¸C±ÀÑ1MÐQZÓ1Z’CÐ[ˆÐ[Ø�‰Ó=ˆÔ>ÙØ)¬C°
«OÑ;¸kÑIˆHØ�J‰J�xÔ Ø�K‰K˜˜iÐ(Õ)ä˜w›-¨4¨&Ñ0ˆKØ!ò I�Ø˜Q“ 1Ñ$“Ø ‘? SÑ(¨AÒ-ð!Ü+¨FÓ3˜ØŸI™I¤lÓ3×:Ñ:¼<×;OÑ;OÐSYÑ;YÓZ×`Ñ`Ób˜ÙØ*5°lÀ1±oÐ5FÐFqÐ(r˜AœIØŸJ™JœLØŸ	™	œá˜u e¨a¡i°¸KÕHñIùò \øð$ !™Dús   Â G Â1G Ä1A>GÇG	c              3   ó8   K  — | ]  }t        |d    «      –— Œ y­wrÁ   )ri   )r_   r„   s     r=   ra   z _generate_trd.<locals>.<genexpr>  s   è ø€ Ò+ ”3�q˜‘t—9Ñ+ùs   ‚r}   é2   r|   zNivel ÚArchivos©rÇ  ÚcolumnrN   rÜ   )Ú
horizontalrI   )Ú	wrap_textrÍ   ©rÇ  rÑ  rg  ú/tmp©rt  ÚsuffixÚdirrf  r`  úCompletado: z filas)8rK   r&   rL   rv  rX  r'   rw  r€   r‚  r…  rE   rO   r…   rf   rd   rŠ   rS   rv   re   r   r„  rð   r   r   r   r   rì   rE  rh   rÀ  rí   rj   ÚcellÚfontÚfillr   Ú	alignmentÚborderri   Úcolumn_dimensionsÚcolumn_letterÚwidthÚtempfileÚNamedTemporaryFileÚsaver»   rq  Úrenamer>   r*   r¡  r)   rW  rS  r�  ru  )+rP   rw  rŠ  rP  r.   r¥  ÚrootsÚdoclibÚrootÚroot_idsr„   Úall_idsrU   ÚwbÚwsÚheader_fontÚheader_fillÚthin_borderrt   Útop_idsÚmax_colsÚheadersrq   r›   ÚhrÚ  Úr_idxrÇ  r  Ú
padded_rowÚc_idxrú   ÚcolÚtmpÚ
final_pathr—  rÿ   r�   rÊ  rƒ   rË  rQ   rÌ  s+      ``                                @@@@@@r=   r“  r“  Ã  sY  ÿ€ Ø�8‰8”LÓ!×(Ñ(¬¯©¸GÑ)CÓD×JÑJÓL€DÙØà�H‰H”^Ó$×+Ñ+Ü×Ñ 'Ñ)Ü× Ñ  DÑ(Ü×Ñ %Ñ'ó÷ �hŒ~×"Ñ"Ó#§C¡C£Eð	 
ð €FØò ˆØ�9‰9Ð)Ó)ØˆFÙðñ
 Ø—I‘I�;‰Ù	Ø"'Ö(˜Q�A—D“DÐ(ˆÑ(àˆá5=Ô# B¨Ô1À2€JÜ�:—?‘?Ó$Ó%€GÜ(¨¨WÓ5€KÜ)¨"Ó-€NÙP^Ô/°°G¸^ÔLÔdgÓdiÐä	‹€BØ	�‰€BØ€B„HÜ˜D¨°rÔ:€KÜ¨(¸hÐRYÔZ€KÜÜ˜Ô¤t°&Ô'9Ü�vÔ¤t°&Ô'9ô€Kð
 €DØ�3€LØ(ÖU�s¨J°s©O¸KÑ,HÈHÒ,TŠsÐU€GÐU÷#Ió #IðJ ò /ˆÙ�s˜A˜z¨2Õ.ð/ñ 04ŒsÑ+ dÔ+Ô+¸€HÜ�8˜RÓ €Hà€GÜ�8˜a‘<Ó ò .ˆØ�‰�x¤# a¨!¡e£*Ñ,Õ-ð.à‡N�N�:Ôä˜' 1Ó%ò "‰ˆˆ1Ø�w‰w˜1 Q¨aˆwÓ0ˆØˆŒ	ØˆŒ	Ü"¨hÔ7ˆŒØ!ˆ�ð"ô !*¨$°Ó 2ò 7Ñˆ‰}��VÜ˜#“Y " ¨´C¸³HÑ)<Ñ!=Ñ=ˆ
Ü˜8“_ò 	7ˆEØ˜UÑ#ˆCØ—7‘7˜u¨U°Q©Y¸c�7ÓBˆDØ%ˆDŒKÜ&°Ô6ˆD�Nñ		7ð7ô �Q˜ 1™Ó%ò RˆØOQˆ×Ñ˜RŸW™W¨°3˜WÓ7×EÑEÑFÕLðRô ×
%Ñ
%¨U¸7ÈÔ
O€CØ‡G�GˆC�H‰HÔØ‡I�I„Kà˜vÑ%¨Ñ/€JÜ‡I�Iˆc�h‰h˜
Ô#ä
˜Ò7¤(×"7Ñ"7Ó
8€CðØ�I‰I”lÓ#×*Ñ*¬<×+?Ñ+?À6Ñ+IÓJ×PÑPÓRˆÙØ"ˆAŒHØ&¬¬S°«Y«Ñ7¸(ÑBˆAŒIØ�J‰JŒLà�	‰	�ùòS )ùò, Vøðf 	�	‰	�ús   ÄR*Ç/R/Ç?R/ÐA;R4 Ò4Sz/graficos-dependencia/statusu+   Estado de reporte grÃ¡ficos por dependenciauO   Consulta el estado de generaciÃ³n de un reporte PDF de grÃ¡ficos por su job_id.c              ƒ   óÖ   K  — |j                  t        «      j                  t        j                  | k(  «      j	                  «       }|sddiS |j
                  |j                  xs ddœS ­wrR  rV  rZ  s      r=   Úget_graficos_statusrû  C  r]  r^  z/graficos-dependencia/downloadu+   Descargar reporte grÃ¡ficos por dependenciau|   Descarga el archivo PDF del reporte de grÃ¡ficos por dependencia generado. Elimina el registro de progreso tras la descarga.c              ƒ   ó–  K  — |j                  t        «      j                  t        j                  | k(  «      j	                  «       }|r|j
                  dk7  rt        dd¬«      ‚d| z   dz   }t        j                  j                  |«      st        dd¬«      ‚|j                  |«       |j                  «        |j                  t        «      j                  t        j                  |j                  k(  «      j	                  «       }t        «       j!                  d«      }d	|r|j"                  nd
z   dz   |z   dz   }t%        ||d¬«      S ­w)Nr`  ra  rb  rc  ú/tmp/graficos_ú.pdfrh  ri  ÚGraficos_Dependencia_rI   rk  úapplication/pdfrm  rp  rz  s          r=   Údownload_graficosr  K  s  è ø€ à�x‰xœÓ%×,Ñ,¬\×-AÑ-AÀVÑ-KÓL×RÑRÓT€HÙ�x—‘¨+Ò5Ü¨Ð4KÔLÐLØ˜fÑ$ vÑ-€DÜ�7‰7�>‰>˜$ÔÜ¨Ð4KÔLÐLØ‡I�IˆhÔØ‡I�I„KØ�H‰H”\Ó"×)Ñ)¬,¯/©/¸X×=MÑ=MÑ*MÓN×TÑTÓV€EÜ	‹×	Ñ	˜/Ó	*€BØ#±U u§z¢zÀÑCÀcÑIÈBÑNÐQWÑW€EÜ˜ uÐ9JÔKÐKùr~  z/graficos-dependenciau)   Generar reporte grÃ¡ficos por dependenciau  Genera de forma asÃ­ncrona un reporte PDF con grÃ¡ficos estadÃ­sticos por dependencia: tipologÃ­as, extensiones de archivo y series documentales. Soporta mÃºltiples tipos de grÃ¡fico (barras, circular, lineal, barras_horizontal, area, dispersion, histograma).u)   ID del sitio para el reporte de grÃ¡ficosrG  uo   Tipos de grÃ¡fico separados por coma: barras, circular, lineal, barras_horizontal, area, dispersion, histogramaÚchart_typesc              ƒ   óœ  ‡ ‡‡‡	K  — |j                  t        «      j                  t        j                  ‰ k(  «      j	                  «       }|st        dd¬«      ‚|j                  d«      D �cg c])  }|j                  «       t        v sŒ|j                  «       ‘Œ+ c}Š	‰	sdgŠ	t        t        j                  «       «      Št        ‰‰ dd¬«      }|j                  |«       |j                  «        t        j                   «       xs t"        j$                  Šˆˆˆ	ˆ fd	„}t'        j(                  |d
¬«      j+                  «        d
‰dœS c c}w ­w)Nra  rŒ  rc  rZ   rG  r�  u!   Generando reporte de grÃ¡ficos...rŽ  c                  óô  •— t        ‰«      } 	 t        | ‰‰‰‰«       | j                  «        y # t        $ r«}t        ‰«      }	 |j                  t        «      j                  t        j                  ‰k(  «      j                  «       }|r*d|_        t        |«      d d |_
        |j                  «        |j                  «        n# |j                  «        w xY wY d }~ŒÀd }~ww xY w# | j                  «        w xY wr‘  )r>   Ú_generate_graficosr”  rK   r)   rL   rW  rX  rS  rí   rY  ru  r»   )r•  r–  r—  rÿ   r.   rP  Ú	requestedrw  s       €€€€r=   r˜  z,generate_graficos_report.<locals>.run_reportp  sÀ   ø€ Ü˜FÓ#ˆð	Ü˜s G¨Y¸ÀÔGð �I‰I�Køô ò 		Ü Ó'ˆCðØ—I‘IœlÓ+×2Ñ2´<×3GÑ3GÈ6Ñ3QÓR×XÑXÓZ�ÙØ&�A”HÜ&)¨!£f¨T¨c l�A”OØ—J‘J”Là—	‘	•ø�—	‘	•ú”ûð		ûð �I‰I�Kúr™  Trš  r�  )rK   r&   rL   rv  rX  r   ÚsplitÚstripÚCHART_GENERATORSrí   rŸ  r   r)   rm   ru  r%   rŒ   r*   r¡  r¢  r£  r¤  )
rw  r  rP   r¥  Úctr[  r˜  r.   rP  r  s
   `      @@@r=   Úgenerate_graficos_reportr  [  sþ   ûè ø€ ð �8‰8”LÓ!×(Ñ(¬¯©¸GÑ)CÓD×JÑJÓL€DÙÜ¨Ð4IÔJÐJà&1×&7Ñ&7¸Ó&<Ö_ ÀÇÁÃ
ÔN^Ò@^�—‘•Ò_€IÙØ�Jˆ	ä”—‘“Ó€FÜ F°GÀIÐWzÔ{€HØ‡F�Fˆ8ÔØ‡I�I„Kä×"Ñ"Ó$Ò=¬×(=Ñ(=€F÷ô" ×Ñ˜J¨tÔ4×:Ñ:Ô<Ø &Ñ)Ð)ùò; `ùs   †A&EÁ,EÂEÂB2Ec                 óþ  ‡%‡&‡'‡(— | j                  t        «      j                  t        j                  |k(  «      j	                  «       }|sy | j                  t
        «      j                  t
        j                  |k(  t
        j                  d k(  t
        j                  dk(  «      j                  t
        j                  «      j                  «       }d }|D ]  }|j                  dk(  sŒ|} n |s	|r|d   nd }|st        |d|«       y | j                  t
        «      j                  t
        j                  |j                  k(  t
        j                  dk(  «      j                  t
        j                  «      j                  «       }	|	st        |d|«       y |	D �
cg c]  }
|
j                  ‘Œ }}
t        | |«      Š%t        ‰%j                  «       «      |z   }|	D ]3  }
|j                  |
j                  |
j                   dœ‰%|
j                  <   Œ5 t#        | |«      }t%        | |«      }t'        «       }t)        d|d   d	d
t*        ¬«      }t)        d|d   ddd¬«      }t)        d|d   ddd¬«      Š&t)        d|d   dd¬«      }d|z   dz   }t-        |t.        dt0        z  dt0        z  dt0        z  dt0        z  ¬«      }g Š(‰(j3                  t5        d|«      «       ‰(j3                  t5        d |j6                  xs |j                  z   |«      «       ‰(j3                  t5        d!t9        «       j;                  d"«      z   |«      «       ‰(j3                  t=        d#d$t0        z  «      «       g }|	D ]5  }t?        ‰%|j                  «      }|j3                  |j                  |f«       Œ7 d%d&gg}|D ]+  \  }}|j3                  t5        ||«      tA        |«      g«       Œ- tC        |d't0        z  dt0        z  g¬(«      }|jE                  tG        d)d*d+tI        jJ                  d,«      fd-d*d+tH        jL                  fd.d/d0d1d2d*d3d$tI        jJ                  d4«      fd5d6d3tH        jL                  tI        jJ                  d7«      gfd8d9d:g«      «       ‰(j3                  t5        d;|«      «       ‰(j3                  |«       ‰(j3                  t=        d#d$t0        z  «      «       t)        d<|tI        jJ                  d=«      dd¬>«      Š'ˆ&ˆ'ˆ(fd?„}|	D �]-  }‰(j3                  tO        «       «       ‰(j3                  t5        d@|j                  z   |«      «       ‰(j3                  t=        d#dAt0        z  «      «       tQ        ‰%||j                  «      } |dB|||j                  «       tS        ‰%||j                  «      } |dC|||j                  «       ‰%D �cg c]  }‰%|   dD   |j                  k(  sŒ|‘Œ } }tU        «       }!tW        | ˆ%fdE„¬F«      D ]  }"tY        ‰%|"|«      |!‰%|"   dG   <   Œ  |dH|!||j                  «       �Œ0 |j[                  ‰(«       t]        |xs t^        j`                  «      }#	 |#j                  tb        «      j                  tb        jd                  |k(  «      j	                  «       }$|$r6dI|$_3        dJtA        ti        |	«      «      z   dKz   |$_5        |#jm                  «        |#jo                  «        y c c}
w c c}w # |#jo                  «        w xY w)LNFr¨  r   uH   No se encontrÃ³ documentLibrary ni Series, Subseries o Expedientes raÃ­zú*No se encontraron dependencias en el sitior   ÚCustomTitleÚTitleé   é   )ÚparentÚfontSizeÚ
spaceAfterrÝ  ÚCustomH2ÚHeading2é   é   r×   )r  r  r  ÚspaceBeforeÚCustomH3ÚHeading3rÕ   r~   rÅ   ÚCustomNormalÚNormalrÓ   ©r  r  Úleadingrý  rþ  g      ø?©ÚpagesizeÚ
leftMarginÚrightMarginÚ	topMarginÚbottomMarginu$   Reporte de GrÃ¡ficos por DependenciazSitio: zFecha: z%Y-%m-%d %H:%Mr|   rÈ   ÚDependenciau   Cantidad de Ã�ndicesé   ©Ú	colWidthsÚ
BACKGROUND©r   r   ©r¥   r   r-   Ú	TEXTCOLOR)ÚFONTNAMEr+  r,  úHelvetica-Bold)ÚFONTSIZEr+  r,  r×   )r0  ©r   r|   ©r¥   r¥   rÓ   )ÚALIGN©r|   r   )r|   r¥   ÚCENTERÚGRIDr2  z#D1D5DBÚROWBACKGROUNDSr1  z#F3F4F6©ÚVALIGNr+  r2  ÚMIDDLE)Ú
TOPPADDINGr+  r2  r  )ÚBOTTOMPADDINGr+  r2  r  zResumen de DependenciasÚSinDatosz#9CA3AF)r  Ú	textColorr  Ú
leftIndentc                 óž  •— ‰j                  t        | ‰
«      «       |rt        |j                  «       «      dk(  r>‰j                  t        d‰«      «       ‰j                  t	        ddt
        z  «      «       y d}|D ]Ž  }t        |   }dt        j                  ||«      z   dz   | z   dz   |z   } |||«      }|€Œ=d	}t        |d
t
        z  dt
        z  d¬«      }	‰j                  |	«       ‰j                  t	        ddt
        z  «      «       Œ� |s>‰j                  t        d‰«      «       ‰j                  t	        ddt
        z  «      «       y y )Nr   zsin datos a mostrarr|   r3  Fu	   GrÃ¡fico ú z - Tr  rÓ   Úproportional)rá  ÚheightÚkind)
rÀ  r   r  rö   r   r   r	  ÚCHART_NAMESrŒ   r   )ÚlabelÚdata_counterr  Údep_nameÚ	any_chartr
  ÚgenÚchart_titler½   ÚimgÚh3_styleÚsin_datos_styleÚstorys             €€€r=   Ú_add_chart_sectionz._generate_graficos.<locals>._add_chart_sectionÝ  s.  ø€ Ø�‰”Y˜u hÓ/Ô0Ùœs <×#6Ñ#6Ó#8Ó9¸QÒ>Ø�L‰LœÐ#8¸/ÓJÔKØ�L‰Lœ  3¬¡8Ó,Ô-ØØˆ	Øò 		.ˆBÜ" 2Ñ&ˆCØ%¬¯©¸¸BÓ(?Ñ?À#ÑEÈÑMÐPUÑUÐX`Ñ`ˆKÙ�l KÓ0ˆCØˆ{ØØˆIÜ˜ 2¬¡7°1´r±6ÀÔOˆCØ�L‰L˜ÔØ�L‰Lœ  3¬¡8Ó,Õ-ð		.ñ Ø�L‰LœÐ#8¸/ÓJÔKØ�L‰Lœ  3¬¡8Ó,Õ-ð r?   zDependencia: r3  u"   GrÃ¡fico por TipologÃ­a Documentalu"   GrÃ¡fico por ExtensiÃ³n de Archivor€   c                 ó   •— ‰|    d   S r»  r^   )r=  rƒ   s    €r=   r   z$_generate_graficos.<locals>.<lambda>ÿ  s   ø€ °¸A±¸vÑ1F€ r?   r½  rE   u0   GrÃ¡fico por Serie Documental (Archivos Totales)r`  rÙ  z dependencias procesadas)8rK   r&   rL   rv  rX  r'   rw  r€   r‚  r…  rE   rO   Ú	_fail_jobr…   rf   rd   r�   rŠ   rª   r   r    r!   r   r   r   rÀ  r   rð   rx  ry  r   r•   rí   r   ÚsetStyler   r   ÚHexColorr±   r   r˜   r¬   r   ÚsortedrŽ   Úbuildr>   r*   r¡  r)   rW  rS  ri   r�  ru  r»   ))rP   rw  r  rP  r.   r¥  ræ  rç  rè  ÚdependenciasÚdÚdep_idsrê  r�   r­   ÚstylesÚtitle_styleÚh2_styleÚnormal_styleÚpdf_pathÚdocÚdependencia_dataÚdepÚ	idx_countÚ
table_datarE   ÚcountÚtblrP  rš   Úextsrt   ÚseriesÚserie_countsÚs_idr—  rÿ   rƒ   rM  rN  rO  s)                                        @@@@r=   r  r  …  sB  û€ Ø�8‰8”LÓ!×(Ñ(¬¯©¸GÑ)CÓD×JÑJÓL€DÙØà�H‰H”^Ó$×+Ñ+Ü×Ñ 'Ñ)Ü× Ñ  DÑ(Ü×Ñ %Ñ'ó÷ �hŒ~×"Ñ"Ó#§C¡C£Eð	 
ð €FØò ˆØ�9‰9Ð)Ó)ØˆFÙðñ
 Ù"��q’¨ˆáÜ�&ÐdÐflÔmØà—8‘8œNÓ+×2Ñ2Ü× Ñ  F§I¡IÑ-Ü×Ñ %Ñ'ó÷ �hŒ~×"Ñ"Ó#§C¡C£Eð ñ
 Ü�&ÐFÈÔOØà)Ö*˜ˆq�t‹tÐ*€GÐ*Ü# B¨Ó0€JÜ�:—?‘?Ó$Ó%¨Ñ/€GØò fˆØ)/¯©¸A¿F¹FÐUV×UdÑUdÑeˆ
�1—4‘4Òðfô )¨¨WÓ5€KÜ-¨b°'Ó:€Mä Ó"€FÜ  °v¸g±ÐQSÐ`aÔmvÔw€KÜ˜j°¸
Ñ1CÈbÐ]^ÐlnÔo€HÜ˜j°¸
Ñ1CÈbÐ]^ÐlmÔn€HÜ! .¸ÀÑ9IÐTUÐ_aÔb€Là &Ñ(¨6Ñ1€HÜ
˜H¬rØ'*¬R¡x¸SÄ2¹XØ&)¬B¡h¸SÄ2¹XôG€Cð €Eà	‡L�L”ÐAÀ;ÓOÔPØ	‡L�L”˜9¨¯
©
Ò(?°d·i±iÑ@À,ÓOÔPØ	‡L�L”˜9¤u£w×'7Ñ'7Ð8HÓ'IÑIÈ<ÓXÔYØ	‡L�L”˜˜3¤™8Ó$Ô%àÐØò 7ˆÜ,¨Z¸¿¹Ó@ˆ	Ø×Ñ §¡¨9Ð 5Õ6ð7ð !Ð"8Ð9Ð:€JØ'ò G‰ˆˆeØ×Ñœ9 T¨<Ó8¼#¸e»*ÐEÕFðGô �
 r¬B¡w°´B±Ð&7Ô
8€CØ‡L�L”Ø	�v˜w¬¯©¸	Ó(BÐCØ	�f˜g¤v§|¡|Ð4Ø7Ø)Ø)Ø,Ø	�˜ 3¬¯©¸	Ó(BÐCØ	˜6 8¬f¯l©l¼F¿O¹OÈIÓ<VÐ-WÐXØ.Ø+Ø.ðó ô ð 
‡L�L”Ð4°hÓ?Ô@Ø	‡L�L�ÔØ	‡L�L”˜˜3¤™8Ó$Ô%ä$ Z¸ÔPV×P_ÑP_Ð`iÓPjÐuvð  DFô  G€Oö.ð* ó tˆØ�‰”Y“[Ô!Ø�‰”Y˜°·±Ñ9¸8ÓDÔEØ�‰”V˜A˜s¤R™xÓ(Ô)ä3°JÀÈSÏVÉVÓTˆ
ÙÐ?ÀÈ[ÐZ]×ZbÑZbÔcä-¨j¸-ÈÏÉÓPˆÙÐ?ÀÀ{ÐTW×T\ÑT\Ô]à!+ÖV˜#¨z¸#©¸{Ñ/KÈsÏvÉvÓ/U’#ÐVˆÐVÜ“yˆÜ˜6Ó'FÔGò 	kˆDÜ5KÈJÐX\Ð^iÓ5jˆL˜ DÑ)¨&Ñ1Ò2ð	káÐMÈ|Ð]hÐjm×jrÑjrÖsðtð" ‡I�IˆeÔä
˜Ò7¤(×"7Ñ"7Ó
8€CðØ�I‰I”lÓ#×*Ñ*¬<×+?Ñ+?À6Ñ+IÓJ×PÑPÓRˆÙØ"ˆAŒHØ&¬¬S°Ó->Ó)?Ñ?ÐB\Ñ\ˆAŒIØ�J‰JŒLà�	‰	�ùòO +ùòn Wøð  	�	‰	�ús   Æ[ Ö7[%×[%ÙA;[* Û*[<c                 óP  — t        |xs t        j                  «      }	 |j                  t        «      j                  t        j                  | k(  «      j                  «       }|rd|_        ||_	        |j                  «        |j                  «        y # |j                  «        w xY w)NrU  )r>   r*   r¡  rK   r)   rL   rW  rX  rS  rY  ru  r»   )rP  r�  r.   r—  rÿ   s        r=   rR  rR    sv   € Ü
˜Ò7¤(×"7Ñ"7Ó
8€CðØ�I‰I”lÓ#×*Ñ*¬<×+?Ñ+?À6Ñ+IÓJ×PÑPÓRˆÙØˆAŒHØ%ˆAŒOØ�J‰JŒLà�	‰	�øˆ�	‰	�ús   ŸA#B ÂB%c                 ó.  — g }| j                  t        «      j                  t        j                  |k(  t        j                  dk(  «      j                  «       }|D ]8  }|j                  |«       |j                  t        | |j                  «      «       Œ: |S )z9Recursively get all descendant folders of a given folder.F)
rK   r'   rL   r€   r‚  rO   rÀ  ÚextendÚ_get_descendant_foldersrv  )rP   r€   rn   r’   r“   s        r=   rm  rm    s�   € à€FØ�x‰xœÓ'×.Ñ.Ü× Ñ  IÑ-¬~×/EÑ/EÈÑ/Nóç	�cƒeð ð ò :ˆØ�‰�bÔØ�‰Ô-¨b°"·%±%Ó8Õ9ð:ð €Mr?   c                 ó¼   — | syt        j                  d| «      }|r>|j                  d«      j                  «       |j                  d«      j                  «       fS d| fS )uò   Extrae cÃ³digo y nombre de carpeta con formato TRD: '3-1110-1-06 CERTIFICACIONES Y CONSTANCIAS' â†’ ('3-1110-1-06', 'CERTIFICACIONES Y CONSTANCIAS').
    TambiÃ©n soporta cÃ³digos simples como '540000 Oficina...' â†’ ('540000', 'Oficina...').)rI   rI   z&^([\d]+(?:-[\d]+)*(?:\.[\d]+)?)\s+(.+)r|   r}   rI   )rB   rC   Úgroupr  )rE   Úms     r=   Ú_extract_trd_code_and_namerq  +  sT   € ñ ØÜ
�‰Ð:¸DÓA€AÙØ�w‰w�q‹z×ÑÓ! 1§7¡7¨1£:×#3Ñ#3Ó#5Ð5Ð5Øˆtˆ8€Or?   c                 óŠ  — g }|j                   }t        «       }|r˜||k7  r“||v rnŽ|j                  |«       | j                  t        «      j                  t        j                  |k(  t        j                  dk(  «      j                  «       }|sn%|j                  |«       |j                   }|r||k7  rŒ“|j                  «        |S )z~Devuelve la lista de ancestros desde dependency_id (exclusive) hasta folder (exclusive), ordenados de dependency hacia folder.F)r€   re   rm   rK   r'   rL   rv  r‚  rX  rÀ  Úreverse)rP   ÚfolderÚdependency_idÚ	ancestorsÚ
current_idÚvisitedr  s          r=   Ú_get_folder_ancestors_to_depry  6  s¹   € à€IØ×!Ñ!€JÜ‹e€GÙ
˜ }Ò4Ø˜Ñ ØØ�‰�JÔØ—‘œ.Ó)×0Ñ0Ü×Ñ Ñ+¬^×-CÑ-CÀuÑ-Ló
ç
‰%‹'ð 	ñ ØØ×Ñ˜Ô Ø×%Ñ%ˆ
ñ ˜ }Ó4ð ×ÑÔØÐr?   c                 óÈ  — | j                  t        «      j                  t        j                  |k(  t        j                  dk(  «      j                  «       }t        |«      }| j                  t        «      j                  t        j                  |k(  t        j                  dk(  «      j                  «       }|D ]'  }|j                  t        | |j                  «      «       Œ) |S )zIObtiene recursivamente todos los archivos no eliminados bajo una carpeta.F)rK   r(   rL   r�   r‚  rO   rf   r'   r€   rl  Ú_get_all_files_underrv  )rP   r�   Úfilesrn   r’   r“   s         r=   r{  r{  J  s·   € à�H‰H”\Ó"×)Ñ)Ü×Ñ )Ñ+¬\×-AÑ-AÀUÑ-Jóç	�cƒeð 
ô �%‹[€FØ�x‰xœÓ'×.Ñ.Ü× Ñ  IÑ-¬~×/EÑ/EÈÑ/Nóç	�cƒeð ð ò 7ˆØ�‰Ô*¨2¨r¯u©uÓ5Õ6ð7à€Mr?   z/fuid/dependenciaszFUID - listar dependenciasz\Lista las dependencias (primer nivel bajo documentLibrary) de un sitio para el reporte FUID.zID del sitio Alfrescoc              ƒ   ó8  K  — |j                  t        «      j                  t        j                  | k(  «      j	                  «       }|st        dd¬«      ‚|j                  t        «      j                  t        j                  | k(  t        j                  d k(  t        j                  dk(  «      j                  «       }d }|D ]  }|j                  dk(  sŒ|} n |s	|r|d   nd }|sg S |j                  t        «      j                  t        j                  |j                  k(  t        j                  dk(  «      j                  t        j                  «      j                  «       }|D �cg c]&  }|j                  |j                  |j                  dœ‘Œ( c}S c c}w ­w)Nra  rŒ  rc  Fr¨  r   )rv  rE   Ú	node_path)rK   r&   rL   rv  rX  r   r'   rw  r€   r‚  rO   rE   r…  r~  )rw  rP   r¥  ræ  rç  r„   ÚdepsrX  s           r=   Úfuid_dependenciasr€  X  sU  è ø€ à�8‰8”LÓ!×(Ñ(¬¯©¸GÑ)CÓD×JÑJÓL€DÙÜ¨Ð4IÔJÐJà�H‰H”^Ó$×+Ñ+Ü×Ñ 'Ñ)Ü× Ñ  DÑ(Ü×Ñ %Ñ'ó÷ 
�cƒeð	 
ð €FØò ˆØ�6‰6Ð&Ó&ØˆFÙðñ Ù"��q’¨ˆÙØˆ	à�8‰8”NÓ#×*Ñ*Ü× Ñ  F§I¡IÑ-Ü×Ñ %Ñ'ó÷ �hŒ~×"Ñ"Ó#§C¡C£Eð 	ð
 MQÖQÀq�1—4‘4 §¡°a·k±kÓBÒQÐQùÒQùs   ‚CFÃBFÅ'+FÆFz/fuidzGenerar reporte FUIDuä   Genera de forma asÃ­ncrona el Formato Ãšnico de Inventario Documental (FUID). Si no se especifica dependencia, genera para todas las dependencias del sitio (una hoja por dependencia en Excel, una pÃ¡gina por dependencia en PDF).zENode ID de la dependencia (opcional). Si se omite, genera para todas.ÚexcelzFormato de salida: excel o pdfru  r²   c           
   ƒ   ó>  ‡ ‡‡‡‡K  — |j                  t        «      j                  t        j                  ‰ k(  «      j	                  «       }|st        dd¬«      ‚‰dvrt        dd¬«      ‚g }|r{|j                  t        «      j                  t        j                  |k(  t        j                  ‰ k(  t        j                  dk(  «      j	                  «       }|st        dd¬«      ‚|g}�n|j                  t        «      j                  t        j                  ‰ k(  t        j                  d k(  t        j                  dk(  «      j                  «       }d }|D ]  }	|	j                  d	k(  sŒ|	} n |s	|r|d
   nd }|r||j                  t        «      j                  t        j                  |j                  k(  t        j                  dk(  «      j                  t        j                  «      j                  «       }|st        dd¬«      ‚t        t        j                  «       «      Šdj!                  d„ |d d D «       «      }
t#        |«      dkD  r|
dt#        |«      dz
  › d�z  }
t%        ‰‰ dd‰j'                  «       › d|
› d�¬«      }|j)                  |«       |j+                  «        t-        j.                  «       xs t0        j2                  Š|D �cg c]  }|j                  ‘Œ c}Šˆˆˆˆˆ fd„}t5        j6                  |d¬«      j9                  «        d‰dœS c c}w ­w)Nra  rŒ  rc  )r�  Úpdfi�  u&   Formato invÃ¡lido. Use 'excel' o 'pdf'FzDependencia no encontradar¨  r   r  r\   c              3   ó4   K  — | ]  }|j                   –— Œ y ­w©NrD   )r_   rX  s     r=   ra   z'generate_fuid_report.<locals>.<genexpr>¥  s   è ø€ Ò> Q˜!Ÿ&�&Ñ>ùs   ‚r~   z y u    mÃ¡sr�  zGenerando FUID z para z...rŽ  c                  ó:  •— t        ‰«      } 	 t        ‰«      dk(  rt        | ‰‰d   ‰‰‰«       nt        | ‰‰‰‰‰«       | j                  «        y # t        $ r«}t        ‰«      }	 |j                  t        «      j                  t        j                  ‰k(  «      j                  «       }|r*d|_
        t        |«      d d |_        |j                  «        |j                  «        n# |j                  «        w xY wY d }~ŒÀd }~ww xY w# | j                  «        w xY w)Nr|   r   rU  r’  )r>   ri   Ú_generate_fuidÚ_generate_fuid_multir”  rK   r)   rL   rW  rX  rS  rí   rY  ru  r»   )	r•  r–  r—  rÿ   r.   rY  r²   rP  rw  s	       €€€€€r=   r˜  z(generate_fuid_report.<locals>.run_report²  sä   ø€ Ü˜FÓ#ˆð	Ü�7‹|˜qÒ Ü˜s G¨W°Q©Z¸ÀÈÕPä$ S¨'°7¸FÀFÈFÔSð �I‰I�Køô ò 		Ü Ó'ˆCðØ—I‘IœlÓ+×2Ñ2´<×3GÑ3GÈ6Ñ3QÓR×XÑXÓZ�ÙØ&�A”HÜ&)¨!£f¨T¨c l�A”OØ—J‘J”Là—	‘	•ø�—	‘	•ú”ûð		ûð �I‰I�KúsB   Ž2A Á	DÁD Á&A/C&ÃD Ã&C8Ã8D Ã;D Ä DÄD ÄDTrš  r�  )rK   r&   rL   rv  rX  r   r'   rw  r‚  r€   rO   rE   r…  rí   rŸ  r   rg   ri   r)   Úupperrm   ru  r%   rŒ   r*   r¡  r¢  r£  r¤  )rw  ru  r²   rP   r¥  Údeps_to_processra  ræ  rç  r„   Ú	dep_namesr[  rX  r˜  r.   rY  rP  s   ` `           @@@r=   Úgenerate_fuid_reportrŒ  v  s¼  üè ø€ ð �8‰8”LÓ!×(Ñ(¬¯©¸GÑ)CÓD×JÑJÓL€DÙÜ¨Ð4IÔJÐJàÐ%Ñ%Ü¨Ð4\Ô]Ð]à€OÙØ�h‰h”~Ó&×-Ñ-Ü×Ñ Ñ.Ü×"Ñ" gÑ-Ü×"Ñ" eÑ+ó
÷ ‰%‹'ð	 	ñ
 Ü¨CÐ8SÔTÐTØ˜%Šà—‘œÓ(×/Ñ/Ü×"Ñ" gÑ-Ü×$Ñ$¨Ñ,Ü×"Ñ" eÑ+ó
÷ ‰#‹%ð	 	ð
 ˆØò 	ˆAØ�v‰vÐ*Ó*Ø�Ùð	ñ Ù!&�U˜1’X¨DˆFÙØ Ÿh™h¤~Ó6×=Ñ=Ü×(Ñ(¨F¯I©IÑ5Ü×&Ñ&¨%Ñ/ó÷ ‰h”~×*Ñ*Ó+¯C©C«Eð ñ
 Ü¨Ð4`ÔaÐaä”—‘“Ó€FØ—	‘	Ñ>¨/¸"¸1Ð*=Ô>Ó>€IÜ
ˆ?Ó˜aÒØ�sœ3˜Ó/°!Ñ3Ð4°EÐ:Ñ:ˆ	ÜØ °	Ø! &§,¡,£.Ð!1°¸	°{À#ÐFô€Hð ‡F�Fˆ8ÔØ‡I�I„Kä×"Ñ"Ó$Ò=¬×(=Ñ(=€FØ,Ö-˜ˆq�t‹tÒ-€G÷ð ô( ×Ñ˜J¨tÔ4×:Ñ:Ô<Ø &Ñ)Ð)ùò/ .ùs   ‡E LÅ(E'LËLË";Lz/fuid/statusu   FUID - estado de generaciÃ³nuC   Consulta el estado de generaciÃ³n de un reporte FUID por su job_id.zID del trabajoc              ƒ   óÖ   K  — |j                  t        «      j                  t        j                  | k(  «      j	                  «       }|sddiS |j
                  |j                  xs ddœS ­wrR  rV  rZ  s      r=   Úfuid_statusrŽ  Ê  r]  r^  z/fuid/downloadzFUID - descargar reportez9Descarga el archivo FUID generado en formato Excel o PDF.zFormato del archivo generadoc              ƒ   óº  K  — |j                  t        «      j                  t        j                  | k(  «      j	                  «       }|r|j
                  dk7  rt        dd¬«      ‚|dk(  rdnd}|dk(  rdnd	}d
| z   |z   }t        j                  j                  |«      st        dd¬«      ‚|j                  |«       |j                  «        |j                  t        «      j                  t        j                  |j                  k(  «      j	                  «       }t        «       j!                  d«      }d|r|j"                  ndz   dz   |z   |z   }	t%        ||	|¬«      S ­w)Nr`  ra  rb  rc  r�  rg  rþ  rl  r   ú
/tmp/fuid_rh  ri  ÚFUID_rI   rk  rm  rp  )
rP  r²   rP   r[  r©   Úcontent_typerr  r{  r|  r¨   s
             r=   Úfuid_downloadr“  Ò  s.  è ø€ ð �x‰xœÓ%×,Ñ,¬\×-AÑ-AÀVÑ-KÓL×RÑRÓT€HÙ�x—‘¨+Ò5Ü¨Ð4KÔLÐLà˜wÒ&‰'¨F€Cð �WÒñ 	LØ"3ð ð ˜&Ñ  3Ñ&€DÜ�7‰7�>‰>˜$ÔÜ¨Ð4KÔLÐLà‡I�IˆhÔØ‡I�I„KØ�H‰H”\Ó"×)Ñ)¬,¯/©/¸X×=MÑ=MÑ*MÓN×TÑTÓV€EÜ	‹×	Ñ	˜/Ó	*€BØ¡U�u—z’z°Ñ3°cÑ9¸BÑ>ÀÑD€EÜ˜ u¸ÔFÐFùs   ‚EEc                 ó  ‡‡— | j                  t        «      j                  t        j                  ‰k(  «      j	                  «       }|sg ddfS t        |j                  «      \  }}|s|j                  }ddlm} | j                   |d«      d‰i«      j                  «       }i Šg }|D ]*  }|d   }	|d   |d   |d   d	œ‰|	<   |j                  |	«       Œ, ˆˆfd
„}
|sg ||fS | j                   |d«      d|i«      j                  «       }i }|D ]  }|d   |d   |d   xs ddœ||d   <   Œ g }‰j                  «       D �]  \  }}|‰k(  r	d}d}d}d}n© |
|«      }t        |«      dk(  rt        |d   «      \  }}|s|d   }d}d}nvt        |d   d   «      \  }}|s|d   d   }t        |«      dk\  rt        |d   d   «      \  }}|s4|d   d   }n+t        |«      dk(  rt        |d   «      \  }}|s
|d   }nd}d}|j                  |i «      }|j                  |||||||j                  d«      |j                  d«      |j                  dd«      dœ	«       �Œ i }|D ]x  }|d   |d   |d   |d   f}||vrt        |«      ||<   Œ(||   }|dxx   |d   z  cc<   |d   r|d   r|d   |d   k  r|d   |d<   |d   sŒ`|d   r|d   |d   kD  sŒq|d   |d<   Œz t!        |j#                  «       «      }|j%                  d„ ¬«       |||fS )z´Extrae y agrupa los datos FUID para una dependencia. Retorna (rows, dep_nombre, dep_codigo).
    Optimizado: 1 consulta recursiva para carpetas + 1 consulta agrupada para archivos.rI   r   rW   aÃ  
        WITH RECURSIVE tree AS (
            SELECT id, parent_id, name, 0 AS depth
            FROM alfresco_folders
            WHERE id = :dep_id AND deleted = false
            UNION ALL
            SELECT f.id, f.parent_id, f.name, t.depth + 1
            FROM alfresco_folders f
            JOIN tree t ON f.parent_id = t.id
            WHERE f.deleted = false AND t.depth < 20
        )
        SELECT id, parent_id, name, depth FROM tree
    Údep_idr|   r}   r~   )r€   rE   rÂ  c                 ó$  •— g }‰j                  | i «      j                  d«      }t        «       }|rO|‰k7  rJ||v s|‰vrnA|j                  |«       |j                  ‰|   «       ‰|   j                  d«      }|r|‰k7  rŒJ|j	                  «        |S )Nr€   )rŒ   re   rm   rÀ  rs  )r�   rv  Úcurrx  ru  rƒ   s       €€r=   Ú_resolve_ancestors_to_depz3_build_fuid_rows.<locals>._resolve_ancestors_to_dep  s—   ø€ Øˆ	Ø�n‰n˜Y¨Ó+×/Ñ/°Ó<ˆÜ“%ˆÙ�c˜]Ò*Ø�g‰~ ¨JÑ!6ØØ�K‰K˜ÔØ×Ñ˜Z¨™_Ô-Ø˜S‘/×%Ñ% kÓ2ˆCñ �c˜]Ó*ð 	×ÑÔØÐr?   zô
        SELECT folder_id, MIN(alfresco_created_at), MAX(alfresco_created_at), SUM(COALESCE(folios, 0))
        FROM alfresco_files
        WHERE folder_id = ANY(:fids) AND deleted = false AND name != 'index.xml'
        GROUP BY folder_id
    ro   )Úfecha_inicialÚfecha_finalÚfoliosrE   r™  rš  r›  )	Ú
dep_codigoÚ
dep_nombreÚserie_codigoÚserie_nombreÚsubserie_codigoÚsubserie_nombrer™  rš  r›  rž  rŸ  r   r¡  c                 ó&   — | d   xs d| d   xs dfS )Nrž  ÚZZZZZr   r^   )r„   s    r=   r   z"_build_fuid_rows.<locals>.<lambda>g  s$   € Ø	ˆ.ÑÒ$˜WØ	Ð
ÑÒ' ð€ r?   r½  )rK   r'   rL   rv  rX  rq  rE   r8   rX   rk   rl   rÀ  r�   ri   rŒ   Údictrf   rö   rÁ  )rP   ru  ra  rœ  r�  rX   Ú	desc_treeÚall_folder_idsr„   rt   r˜  Ú	file_rowsÚ	file_datarQ   r�   Úfinforž  rŸ  r   r¡  rv  ÚfdÚgroupedr¾  Úgrƒ   s    `                       @r=   Ú_build_fuid_rowsr­  í  sÜ  ù€ ð �(‰(”>Ó
"×
)Ñ
)¬.×*;Ñ*;¸}Ñ*LÓ
M×
SÑ
SÓ
U€CÙØ�2�rˆzÐä7¸¿¹ÓAÑ€J�
ÙØ—X‘Xˆ
åØ—
‘
™4ð !ó 	ð �]Ð
#ó%÷ &.¡X£Zð ð €JØ€NØò #ˆØ�‰dˆØ()¨!©°a¸±dÀQÀqÁTÑJˆ
�3‰Ø×Ñ˜cÕ"ð#õ
ñ Ø�:˜zÐ)Ð)à—
‘
™4ð !ó 	ð
 �>Ð
"ó$÷
 %-¡H£Jð ð €IØò 
ˆà˜q™TØ˜Q™4Ø˜‘d’i˜añ
ˆ	�!�A‘$Šð
ð €DØ&×,Ñ,Ó.ó )Ñˆ	�5Ø˜Ò%ØˆLØˆLØ ˆOØ ‰Oá1°)Ó<ˆIÜ�9‹~ Ò"Ü-GÈÈfÉÓ-VÑ*�˜lÙ#Ø#(¨¡=�LØ"$�Ø"$‘ä-GÈ	ÐRSÉÐU[ÑH\Ó-]Ñ*�˜lÙ#Ø#,¨Q¡<°Ñ#7�LÜ�y“> QÒ&Ü7QÐR[Ð\]ÑR^Ð_eÑRfÓ7gÑ4�O _Ù*Ø*3°A©,°vÑ*>™Ü˜“^ qÒ(Ü7QÐRWÐX^ÑR_Ó7`Ñ4�O _Ù*Ø*/°©-™à&(�OØ&(�Oà�]‰]˜9 bÓ)ˆØ�‰Ø$Ø$Ø(Ø(Ø.Ø.ØŸV™V OÓ4ØŸ6™6 -Ó0Ø—f‘f˜X qÓ)ñ

ö 
	ð?)ðV €GØò 
4ˆØ�Ñ  ! NÑ"3°QÐ7HÑ5IÈ1ÐM^ÑK_Ð`ˆØ�gÑÜ ›7ˆG�CŠLà˜‘ˆAØˆh‹K˜1˜X™;Ñ&‹KØ�Ò!¨1¨_Ò+=ÀÀ?ÑASÐVWÐXgÑVhÒAhØ%& Ñ%7��/Ñ"Ø�Ó¨¨=Ò)9¸Q¸}Ñ=MÐPQÐR_ÑP`Ó=`Ø#$ ]Ñ#3��-Ò ð
4ô �—‘Ó Ó!€DØ‡I�Iñ €Iô ð
 �˜ZÐ'Ð'r?   c                 óø   — | j                  t        «      j                  t        j                  |k(  «      j	                  «       }|sy t        | |«      \  }}}	|dk(  rt        |||||«       y t        |||||«       y ©Nr�  )rK   r&   rL   rv  rX  r­  Ú_generate_fuid_excelÚ_generate_fuid_pdf)
rP   rw  ru  r²   rP  r.   r¥  rQ   r�  rœ  s
             r=   r‡  r‡  o  sn   € Ø�8‰8”LÓ!×(Ñ(¬¯©¸GÑ)CÓD×JÑJÓL€DÙØä#3°B¸Ó#FÑ €Dˆ*�jà�ÒÜ˜T 6¨4°¸VÕDä˜4 ¨¨z¸6ÕBr?   c                 ó,  — | j                  t        «      j                  t        j                  |k(  «      j	                  «       }|sy g }|D ]%  }t        | |«      \  }	}
}|j                  |
|	f«       Œ' |dk(  rt        ||||«       y t        ||||«       y r¯  )	rK   r&   rL   rv  rX  r­  rÀ  Ú_generate_fuid_excel_multiÚ_generate_fuid_pdf_multi)rP   rw  rY  r²   rP  r.   r¥  Úall_dataÚdidrQ   r�  rœ  s               r=   rˆ  rˆ  |  s‘   € Ø�8‰8”LÓ!×(Ñ(¬¯©¸GÑ)CÓD×JÑJÓL€DÙØà€HØò ,ˆÜ'7¸¸CÓ'@Ñ$ˆˆj˜*Ø�‰˜ TÐ*Õ+ð,ð �ÒÜ" 8¨V°T¸6ÕBä  ¨6°4¸Õ@r?   c                 óÄ  — t        «       }|j                  }d|_        t        dddd¬«      }t	        ddd¬	«      }t        d
d
d¬«      }	t        dd¬«      }
t        t        d¬«      t        d¬«      t        d¬«      t        d¬«      ¬«      }t        ddd¬«      }t        dd¬«      }t        dddd¬«      }t        d
d
¬«      }t        dd
¬«      }t        dd
¬«      }g d¢}t        |«      }d}d}||z
  }d|j                  xs |j                  fd|j                  xs |j                  fd|fd|fd g}|D ]Y  \  }}|j                  |d||¬!«       |j                  |d|› d"|› �¬#«      }|d$k7  rt        ddd¬«      n||_        ||_        |dz  }Œ[ d}|j                  ||dz   ||¬!«       |j                  ||dz   d%¬#«      }||_        ||_        |dz  }|j                  ||dz   ||¬!«       |j                  ||dz   d&¬#«      }t        ddd¬«      |_        ||_        |dz  }g d'¢}t        |«      D ]@  \  }}|j                  ||dz   |z   |¬#«      }t        ddd¬«      |_        ||_        ||_        ŒB |dz  }t!        t        |«      «      D ]*  }|j                  ||dz   |z   d(¬#«      }||_        ||_        Œ, t#        ||dz   «      }|dz  }|j                  |d||¬!«       |j                  |dd)¬#«      }||_        ||_        |dz  }|dz  }|}t        |d«      D ]5  \  } }!|j                  || |!¬#«      }"||"_        ||"_        |	|"_        ||"_        Œ7 |dz  }|}#t        | «      D ]ª  \  }$}%|$dz   |%d*   |%d+   |%d,   |%d-   |%d.   |%d/   |%d0   r|%d0   j'                  d1«      nd(|%d2   r|%d2   j'                  d1«      nd(|%d3   d4d(g}&t        |&d«      D ]9  \  } }'|j                  || |'¬#«      }"||"_        |
|"_        t        dd¬«      |"_        Œ; |dz  }Œ¬ |dz
  }(|dz  }|d5z  })|)}*|)d6z  }+|j                  |d||*¬!«       |j                  |dd7¬#«      }||_        |j                  ||*dz   ||+¬!«       |j                  ||*dz   d8¬#«      }||_        |j                  ||+dz   ||¬!«       |j                  ||+dz   d9¬#«      }||_        |dz  }d:D ]S  }d|*f|*dz   |+f|+dz   |ffD ]8  \  },}-|j                  ||,||-¬!«       |j                  ||,|› d;�¬#«      }||_        Œ: |dz  }ŒU g d<¢}.t        |.d«      D ]4  \  } }/|/|j(                  |j                  || ¬=«      j*                     _        Œ6 d>|j.                  _        |j2                  |j.                  _        d?|j6                  _        d?|j6                  _        d@|› dA|(› �|j<                  _        tA        jB                  dBdCdD¬E«      }0|jE                  |0j                  «       |0jG                  «        dF|z   dCz   }1tI        jJ                  |0j                  |1«       |r�tM        |«      }2	 |2jO                  tP        «      jS                  tP        jT                  |k(  «      jW                  «       }3|3r+dG|3_,        dHt        | «      › dI�|3_-        |2j]                  «        |2jG                  «        y y # |2jG                  «        w xY w)JNÚFUIDTr©  rÓ   ÚArial©rÖ   rÊ   rª  rE   Ú1F4E79r¬  r­  rÜ   ©rÒ  ÚverticalrÓ  r¶  ©r½  rÓ  r±  r²  r´  r×   ©rÖ   rª  rE   ©rª  rE   é   ©rÖ   rª  rE   rÊ   ©rÒ  r½  rµ  rÎ   ©úNo.u   CÃ“DIGO
DEPENDENCIAÚDEPENDENCIAu   CÃ“DIGO
SERIEúSERIE DOCUMENTALu   CÃ“DIGO
SUBSERIEzSUBSERIE DOCUMENTALzFECHA INICIALzFECHA FINALu   NÃšMERO
DE FOLIOSÚSOPORTEÚNOTASr|   rÅ   úENTIDAD REMITENTE:úENTIDAD PRODUCTORA:úUNIDAD ADMINISTRATIVA:úOFICINA PRODUCTORA:©úOBJETO:z0Inventario documental - Transferencia documental©Ú	start_rowÚstart_columnÚend_rowÚ
end_columnú  rÐ  rÏ  õ   HOJA NÂ° _____ DE _____úREGISTRO DE ENTRADA©u   AÃ‘OÚMESu   DÃ�Au   NÂº T:rI   õ'   FORMATO ÃšNICO DE INVENTARIO DOCUMENTALrœ  r�  rž  rŸ  r   r¡  r™  ú%d/%m/%Yrš  r›  ÚDigitalr~   r}   úELABORADO POR:úENTREGADO POR:úRECIBIDO POR:©zCargo:zFirma:zLugar y Fecha:ú! ________________________________©r  r  é   r  é   r  rä  rÁ  rÁ  r'  r×   rã  rÔ  r   r3  ÚAú:LFrg  rÕ  rÖ  r�  r`  rÙ  ú
 registros)/r   r„  rð   r   r   r   r   r   ri   rE   Úmerge_cellsrÚ  rÛ  rÝ  rj   rÞ  rh   rì   rÜ  ry  rß  rà  rá  Ú
page_setupÚorientationÚPAPERSIZE_LETTERÚ	paperSizeÚpage_marginsrµ  rÎ   Úauto_filterÚrefrâ  rã  rä  r»   rq  rå  r>   rK   r)   rL   rW  rX  rS  r�  ru  )4rQ   rP  r¥  rH  r.   rë  rì  rí  rî  Úheader_alignÚ
cell_alignrï  Ú
bold_labelÚnormal_labelÚ
title_fontÚcenter_alignÚ
left_alignÚright_alignrò  ÚncolsrÇ  Ú	left_colsÚ
right_colsÚ
left_itemsrF  rN   r›   Úhoja_rowÚreg_headersÚciÚrhÚtable_startrö  ró  rÚ  Ú
data_startrô  r„   rö   r    Údata_endÚthirdsÚcols1Úcols2Ú	col_startÚcol_endÚ
col_widthsÚwrø  rù  r—  rÿ   s4                                                       r=   r°  r°  Œ  st  € Ü	‹€BØ	�‰€BØ€B„Hä˜D¨°q¸wÔG€KÜ¨(¸hÐRYÔZ€KÜ¨¸8ÈtÔT€LÜ E°TÔ:€JÜÜ˜Ô¤t°&Ô'9Ü�vÔ¤t°&Ô'9ô€Kô ˜4 b¨wÔ7€JÜ˜R gÔ.€LÜ˜4 b¨w¸hÔG€JÜ¨¸8ÔD€LÜ f°xÔ@€JÜ w¸ÔB€Kò€Gô �‹L€Eð €CØ€IØ˜Ñ"€Jð 
˜tŸz™zÒ6¨T¯Y©YÐ7Ø	 §
¡
Ò 7¨d¯i©iÐ8Ø	! 8Ð,Ø	 Ð)ØGð€Jð #ò ‰ˆˆuØ
�‰ °1¸cÈiˆÔXØ�G‰G˜ A°¨w°b¸¸Ð-@ˆGÓAˆØ:?À9Ò:L”˜4 a¨gÕ6ÐR\ˆŒØ ˆŒØˆq‰‰ðð €HØ‡N�N˜X°IÀ±MÈ8Ð`e€NÔfØ
�‰�H Y°¡]Ð:SˆÓT€AØ€A„FØ€A„KØ��M€Hà‡N�N˜X°IÀ±MÈ8Ð`e€NÔfØ
�‰�H Y°¡]Ð:OˆÓP€AÜ�t !¨'Ô2€A„FØ€A„KØ��M€Hâ3€KÜ˜KÓ(ò ‰ˆˆBØ�G‰G˜¨°Q©¸Ñ);À2ˆGÓFˆÜ˜4 a¨gÔ6ˆŒØ"ˆŒØˆ�ð	ð
 ��M€HÜ”C˜Ó$Ó%ò #ˆØ�G‰G˜¨°Q©¸Ñ);À2ˆGÓFˆØˆŒØ"ˆ�ð#ô ˆc�8˜a‘<Ó
 €CØˆ1�H€CØ‡N�N˜S¨q¸#È%€NÔPØ
�‰�C Ð)RˆÓS€AØ€A„FØ€A„KØˆ1�H€CØˆ1�H€Cà€KÜ˜g qÓ)ò "‰ˆˆqØ�w‰w˜3 u°AˆwÓ6ˆØˆŒ	ØˆŒ	Ø%ˆŒØ!ˆ�ð"ð ˆ1�H€CØ€Jä˜d“Oò ‰ˆˆqà�A‰IØˆl‰OØˆl‰OØˆnÑØˆnÑØÐÑ ØÐÑ Ø78¸Ò7IˆAˆoÑ×'Ñ'¨
Ô3ÈrØ56°}Ò5EˆAˆmÑ×%Ñ% jÔ1È2Øˆh‰KØØð
ˆô " &¨!Ó,ò 	3‰HˆE�1Ø—7‘7˜s¨5¸�7Ó:ˆDØ%ˆDŒKØ'ˆDŒNÜ !¨'Ô2ˆD�Ið		3ð
 	ˆq‰‰ð)ð, �Q‰w€Hð ˆ1�H€CØ�a‰Z€FØ€EØ�Q‰J€Eð ‡N�N˜S¨q¸#È%€NÔPØ
�‰�C Ð)9ˆÓ:€AØ€A„FØ‡N�N˜S¨u°q©yÀ#ÐRW€NÔXØ
�‰�C ¨¡	Ð1AˆÓB€AØ€A„FØ‡N�N˜S¨u°q©yÀ#ÐRW€NÔXØ
�‰�C ¨¡	°ˆÓA€AØ€A„FØˆ1�H€Cà7ò ˆØ$% u :°¸±	¸5Ð/AÀEÈAÁIÈuÐCUÐ"Vò 	"ÑˆI�wØ�N‰N S°yÈ#ÐZaˆNÔbØ—‘˜C¨	Ø!& Ð'HÐIð ó KˆAà!ˆA�Fð		"ð
 	ˆq‰‰ðò A€JÜ˜j¨!Ó,ò ]‰ˆˆqØ[\ˆ×Ñ˜RŸW™W¨¸U˜WÓC×QÑQÑRÕXð]ð !,€B‡M�MÔØ ×1Ñ1€B‡M�MÔØ€B‡O�OÔØ€B‡O�OÔØ˜[˜M¨¨H¨:Ð6€B‡N�NÔä
×
%Ñ
%¨U¸7ÈÔ
O€CØ‡G�GˆC�H‰HÔØ‡I�I„KØ Ñ&¨Ñ0€JÜ‡I�Iˆc�h‰h˜
Ô#áÜ˜FÓ#ˆð	Ø—	‘	œ,Ó'×.Ñ.¬|×/CÑ/CÀvÑ/MÓN×TÑTÓVˆAÙØ&�”Ø*¬3¨t«9¨+°ZÐ@�”	Ø—
‘
”à�I‰I�Kð øð �I‰I�Kús   ÙA0[ Û[c                 ó  — t        «       }|j                  |j                  «       t        dddd¬«      }t	        ddd¬«      }t        d	d	d¬
«      }t        dd¬«      }t        t        d¬«      t        d¬«      t        d¬«      t        d¬«      ¬«      }	t        ddd¬«      }
t        dd¬«      }t        dddd¬«      }t        d	d	¬«      }t        dd	¬«      }t        dd	¬«      }g d¢}t        |«      }d}d}| D �]x  \  }}|dd j                  dd«      j                  dd«      j                  d d«      j                  d!d«      j                  d"d«      j                  d#d«      j                  d$d«      }|j                  |¬%«      }|j                  xs |j                  }d&}d'|fd(|fd)|fd*|fd+g}|D ]U  \  }}|j                  |d&||¬,«       |
|j                  |d&|› d-|› �¬.«      _        ||j                  |d&¬/«      _        |d&z  }ŒW d&}|j                  ||d&z   ||¬,«       |
|j                  ||d&z   d0¬.«      _        ||j                  ||d&z   ¬/«      _        |d&z  }|j                  ||d&z   ||¬,«       t        ddd¬«      |j                  ||d&z   d1¬.«      _        ||j                  ||d&z   ¬/«      _        |d&z  }t#        g d2¢«      D ]@  \  }}|j                  ||d&z   |z   |¬.«      } t        ddd¬«      | _        || _        |	| _        ŒB |d&z  }t'        d3«      D ]*  }|j                  ||d&z   |z   d¬.«      } |	| _        || _        Œ, t)        ||d&z   «      d&z   }|j                  |d&||¬,«       ||j                  |d&d4¬.«      _        ||j                  |d&¬/«      _        |d5z  }|}!t#        |d&«      D ]5  \  }"}#|j                  ||"|#¬.«      }$||$_        ||$_        ||$_        |	|$_        Œ7 |d&z  }|}%t#        |«      D ]ª  \  }&}'|&d&z   |'d6   |'d7   |'d8   |'d9   |'d:   |'d;   |'d<   r|'d<   j-                  d=«      nd|'d>   r|'d>   j-                  d=«      nd|'d?   d@dg}(t#        |(d&«      D ]9  \  }"})|j                  ||"|)¬.«      }$|	|$_        ||$_        t        dd¬«      |$_        Œ; |d&z  }Œ¬ |d&z
  }*|d&z  }|dAz  }+|+|+d5z  }-},|j                  |d&||,¬,«       |
|j                  |d&dB¬.«      _        |j                  ||,d&z   ||-¬,«       |
|j                  ||,d&z   dC¬.«      _        |j                  ||-d&z   ||¬,«       |
|j                  ||-d&z   dD¬.«      _        |d&z  }dED ]Q  }d&|,f|,d&z   |-f|-d&z   |ffD ]6  \  }.}/|j                  ||.||/¬,«       ||j                  ||.|› dF�¬.«      _        Œ8 |d&z  }ŒS g dG¢}0t#        |0d&«      D ]4  \  }"}1|1|j.                  |j                  |!|"¬/«      j0                     _        Œ6 dH|j4                  _        |j8                  |j4                  _        dI|j<                  _        dI|j<                  _         dJ|!› dK|*› �|jB                  _"        |t        |«      z  }�Œ{ tG        jH                  dLdMdN¬O«      }2|jK                  |2j                  «       |2jM                  «        dP|z   dMz   }3tO        jP                  |2j                  |3«       |r�tS        |«      }4	 |4jU                  tV        «      jY                  tV        jZ                  |k(  «      j]                  «       }5|5r.dQ|5_/        dR|› dSt        | «      › dT�|5_0        |4jc                  «        |4jM                  «        yy# |4jM                  «        w xY w)Uz-Genera un Excel con una hoja por dependencia.Tr©  rÓ   r¹  rº  r»  r¬  r­  rÜ   r¼  r¶  r¾  r±  r²  r´  r×   r¿  rÀ  rÁ  rÂ  rÃ  rµ  rÎ   rÄ  rÅ   r   Né   ú:rI   ú\ú/Ú?Ú*ú[ú])rð   r|   rÊ  rË  rÌ  rÍ  rÎ  rÐ  rÕ  rÐ  rÔ  rÖ  r×  rØ  r  rÚ  r}   rœ  r�  rž  rŸ  r   r¡  r™  rÛ  rš  r›  rÜ  r~   rÝ  rÞ  rß  rà  rá  râ  r   r3  rå  ræ  Frg  rÕ  rÖ  r�  r`  rÙ  ú registros en ú dependencias)2r   Úremover„  r   r   r   r   r   ri   ÚreplaceÚcreate_sheetrð   rE   rè  rÚ  rÛ  rÝ  rj   rÞ  rh   rì   rÜ  ry  rß  rà  rá  ré  rê  rë  rì  rí  rµ  rÎ   rî  rï  râ  rã  rä  r»   rq  rå  r>   rK   r)   rL   rW  rX  rS  r�  ru  )6rµ  rP  r¥  r.   rë  rí  rî  rð  rñ  rï  rò  ró  rô  rõ  rö  r÷  rò  rø  rù  Ú
total_rowsrH  rQ   Ú	safe_namerì  ÚentidadrÇ  rû  rF  rN   rü  rþ  rÿ  r›   r   rö  ró  rÚ  r  rô  r„   rö   r    r  r  r  r  r  r  r  r	  rø  rù  r—  rÿ   s6                                                         r=   r³  r³  @  s  € ä	‹€BØ‡I�Iˆb�i‰iÔä˜D¨°q¸wÔG€KÜ¨(¸hÐRYÔZ€KÜ¨¸8ÈtÔT€LÜ E°TÔ:€JÜÜ˜Ô¤t°&Ô'9Ü�vÔ¤t°&Ô'9ô€Kô ˜4 b¨wÔ7€JÜ˜R gÔ.€LÜ˜4 b¨w¸hÔG€JÜ¨¸8ÔD€LÜ f°xÔ@€JÜ w¸ÔB€Kò€Gô
 �‹L€EØ€IØ€Jà"ó b ‰ˆ�$Ø˜S˜b�M×)Ñ)¨#¨rÓ2×:Ñ:¸4ÀÓD×LÑLÈSÐRTÓU×]Ñ]Ð^aÐceÓf×nÑnÐorÐtvÓw×Ñð  ADð  FHó  I÷  Qñ  Qð  RUð  WYó  Zˆ	Ø�_‰_ 9ˆ_Ó-ˆð —*‘*Ò) §	¡	ˆØˆà! 7Ð+Ø" GÐ,Ø% xÐ0Ø" HÐ-ØKð
ˆ
ð 'ò 	‰LˆE�5Ø�N‰N S°qÀ#ÐR[ˆNÔ\ØISˆB�G‰G˜ A°¨w°b¸¸Ð-@ˆGÓAÔFØ3=ˆB�G‰G˜ AˆGÓ&Ô0Ø�1‰H‰Cð		ð ˆØ
�‰ ¸	À!¹ÈXÐbgˆÔhØZdˆ�‰�H Y¨q¡[Ð8QˆÓRÔWØ>Iˆ�‰�H Y¨q¡[ˆÓ1Ô;Ø�A‰ˆØ
�‰ ¸	À!¹ÈXÐbgˆÔhÜVZÐ`dÐklÐszÔV{ˆ�‰�H Y¨q¡[Ð8MˆÓNÔSØ>Jˆ�‰�H Y¨q¡[ˆÓ1Ô;Ø�A‰ˆÜÒ AÓBò 	#‰FˆB�Ø—‘˜H¨Y°q©[¸©^À2�ÓFˆAÜ˜t¨!°'Ô:ˆAŒFØ&ˆAŒKØ"ˆA�Hð		#ð
 	�A‰ˆÜ˜“(ò 	'ˆBØ—‘˜H¨Y°q©[¸©^À2�ÓFˆAØ"ˆAŒHØ&ˆA�Kð	'ô
 �#�x !‘|Ó$ qÑ(ˆØ
�‰ °1¸cÈeˆÔTØ[eˆ�‰�C Ð)RˆÓSÔXØ/;ˆ�‰�C ˆÓ"Ô,Øˆq‰ˆØˆä! '¨1Ó-ò 	&‰HˆE�1Ø—7‘7˜s¨5¸�7Ó:ˆDØ#ˆDŒIØ#ˆDŒIØ)ˆDŒNØ%ˆD�Kð	&ð 	ˆq‰ˆØˆ
ä! $›ò 	‰HˆE�1à˜‘	˜1˜\™?¨A¨l©OØ�.Ñ! 1 ^Ñ#4ØÐ#Ñ$ aÐ(9Ñ&:Ø;<¸_Ò;M��/Ñ"×+Ñ+¨JÔ7ÐSUØ9:¸=Ò9I��-Ñ ×)Ñ)¨*Ô5ÈrØ�(‘˜Y¨ðˆFô & f¨aÓ0ò 7‘��qØ—w‘w 3¨u¸A�wÓ>�Ø)�”Ø!+�”Ü  a¨gÔ6�•	ð	7ð
 �1‰H‰Cð	ð  ˜‘7ˆØˆq‰ˆØ˜!‘ˆØ˜v¨™zˆuˆØ
�‰ °1¸cÈeˆÔTØBLˆ�‰�C Ð)9ˆÓ:Ô?Ø
�‰ °5¸±7ÀCÐTYˆÔZØHRˆ�‰�C  a¡Ð/?ˆÓ@ÔEØ
�‰ °5¸±7ÀCÐTYˆÔZØGQˆ�‰�C  a¡¨ˆÓ?ÔDØˆq‰ˆØ;ò 	ˆEØ()¨5 z°E¸!±G¸UÐ3CÀeÈAÁgÈuÐEUÐ&Vò zÑ"�	˜7Ø—‘¨¸9ÈcÐ^e�ÔfØmy�—‘˜C¨	¸E¸7ÐBcÐ9d�ÓeÕjðzð �1‰H‰Cð		ò Eˆ
Ü! *¨aÓ0ò 	a‰HˆE�1Ø_`ˆB× Ñ  §¡¨[À Ó!G×!UÑ!UÑVÕ\ð	að %0ˆ�‰Ô!Ø"$×"5Ñ"5ˆ�‰ÔØ"ˆ�‰ÔØ #ˆ�‰ÔØ   ¨R°¨zÐ:ˆ�‰ÔØ”c˜$“iÑŠ
ðEb ôH ×
%Ñ
%¨U¸7ÈÔ
O€CØ‡G�GˆC�H‰HÔØ‡I�I„KØ Ñ&¨Ñ0€JÜ‡I�Iˆc�h‰h˜
Ô#áÜ˜FÓ#ˆð	Ø—	‘	œ,Ó'×.Ñ.¬|×/CÑ/CÀvÑ/MÓN×TÑTÓVˆAÙØ&�”Ø*¨:¨,°nÄSÈÃ]ÀOÐS`Ða�”	Ø—
‘
”à�I‰I�Kð øð �I‰I�Kús   Û0A3]5 Ý5^c                 óh  — ddl m}m}m}m}m}m}	 ddlm}
m	} ddl
m}  |
«       } |d|d   dd|t        j                  d	«      ¬
«      } |d|d   dd¬«      } |d|d   ddd¬«      } |d|d   ddt        j                  |d¬«      } |d|d   dd¬«      }d|z   dz   } ||t        t         «      dt"        z  dt"        z  dt"        z  dt"        z  ¬«      }g }d}|j$                  xs |j&                  }t)        | «      D �]b  \  }\  }}|dkD  r|j+                   |	«       «       d|› �d|› �d|› �d |› �d!g}d"} | |d#j-                  |«      |«       |||«      ggd$t"        z  dt"        z  g¬%«      }|j/                   |d&d'd(d)d*d+dt        j                  d	«      fg«      «       |j+                  |«       |j+                   |d,dt"        z  «      «       |j+                   |d-|«      «       |j+                   |d,d.t"        z  «      «       g d/¢}|D �cg c]  } |||«      ‘Œ } }| g}!t)        |d,«      D ]Ø  \  }"}#|!j+                   |t1        |"«      |«       ||#d0   |«       ||#d1   d2d3 |«       ||#d4   |«       ||#d5   d2d6 |«       ||#d7   |«       ||#d8   d2d6 |«       ||#d9   r|#d9   j3                  d:«      nd;|«       ||#d<   r|#d<   j3                  d:«      nd;|«       |t1        |#d=   «      |«       |d>|«       |d;|«      g«       ŒÚ d?t"        z  d@t"        z  dAt"        z  d@t"        z  dBt"        z  d@t"        z  dBt"        z  d@t"        z  d@t"        z  dCt"        z  d,t"        z  dAt"        z  g}$ ||!|$d,¬D«      }%|%j/                   |dEd*dFt        j                  d	«      fdGd*dFt        j                  fdHdIdJdKdLdMd*d+dNt        j                  dO«      fdPdQd+t        j                  t        j                  dR«      gfdSd'd(dTdUg«      «       |j+                  |%«       |j+                   |d,dNt"        z  «      «       dV}&g }'|'j+                   | |dW|«       |dX|«       |dY|«      gg|&t"        z  |&t"        z  |&t"        z  g¬%«      «       dZD ]U  }(|'j+                   | ||(› d[�|«       ||(› d[�|«       ||(› d[�|«      gg|&t"        z  |&t"        z  |&t"        z  g¬%«      «       ŒW |'D ]O  })|)j/                   |dSd'd(d\d]d^d^dt        j                  d	«      fd]d_d_dt        j                  d	«      fg«      «       ŒQ dd`l m}* |j+                   |*|'«      «       |t7        |«      z  }�Œe 	 |j9                  |«       |r�t=        |«      }+	 |+j?                  t@        «      jC                  t@        jD                  |k(  «      jG                  «       },|,r.da|,_$        db|› dct7        | «      › dd�|,_%        |+jM                  «        |+jO                  «        y2y2c c}w # t:        $ r Y Œ£w xY w# |+jO                  «        w xY w)eu.   Genera un PDF con una pÃ¡gina por dependencia.r   )r   r   r   r   r   r   r   )r!   Ú	FuidTitler  rÕ   r  ú#1F4E79©r  r  r  rÝ  r>  Ú
FuidNormalr  ç      @r×   r  Ú	FuidLabelr/  ©r  r  r  ÚfontNameÚ
FuidHeaderç      @rÅ   ©r  r  r  r>  rÝ  r#  Ú	FuidCellMr�  rþ  r3  rÈ   r   ú<b>ENTIDAD REMITENTE:</b> ú<b>ENTIDAD PRODUCTORA:</b> ú<b>UNIDAD ADMINISTRATIVA:</b> ú<b>OFICINA PRODUCTORA:</b> ú?<b>OBJETO:</b> Inventario documental - Transferencia documentalu·  <b>HOJA NÂ°</b> _____ <b>DE</b> _____<br/><b>REGISTRO DE ENTRADA</b><br/><table border="1" cellpadding="4" cellspacing="0" width="100%"><tr><td align="center"><font size="7"><b>AÃ‘O</b></font></td><td align="center"><font size="7"><b>MES</b></font></td><td align="center"><font size="7"><b>DÃ�A</b></font></td><td align="center"><font size="7"><b>NÂº T:</b></font></td></tr><tr><td height="20"></td><td></td><td></td><td></td></tr></table>ú<br/>é   r(  ©r9  r+  r2  ÚTOP©r;  r+  r2  r}   ©r<  r+  r2  r}   Ú	LINEBELOWr+  r2  r|   rÚ  çš™™™™™É?©rÅ  u
   CÃ“D. DEP.rÆ  u   CÃ“D. SERIErÇ  u   CÃ“D. SUBS.zSUBSERIE DOC.z
F. INICIALzF. FINALÚFOLIOSzSOP.rÉ  rœ  r�  Nrã  rž  rŸ  é   r   r¡  r™  rÛ  rI   rš  r›  rÜ  r9  çš™™™™™@çš™™™™™	@çffffff@ç333333ó?©r)  Ú
repeatRowsr*  r,  r-  ©r.  r+  r2  Ú	Helvetica©r0  r1  r2  r%  ©r3  r+  r,  r5  ©r3  r1  )r   r¥   r5  ©r3  )rÞ   r|   )rÓ   r¥   r5  r6  r2  ú#B0B8C1r7  r1  ú#F5F7FAr8  ©ÚLEFTPADDINGr+  r2  r}   ©ÚRIGHTPADDINGr+  r2  r}   rÓ   ú<b>ELABORADO POR:</b>ú<b>ENTREGADO POR:</b>ú<b>RECIBIDO POR:</b>rà  ú ______________________________©rG  r+  r+  r   Ú
LINEBEFOREr4  ©r}   r   ©ÚKeepTogetherr`  rÙ  r  r  )(Úreportlab.platypusr   r   r   r   r   r   Úreportlab.lib.stylesr   r    Úreportlab.lib.enumsr!   r   rT  r±   r   r   r   rð   rE   rj   rÀ  rg   rS  rí   ry  rR  ri   rV  r”  r>   rK   r)   rL   rW  rX  rS  r�  ru  r»   )-rµ  rP  r¥  r.   r   r   r   r   r   r   r   r    r!   rZ  r[  r]  Úlabel_styleÚheader_styleÚcell_style_multir^  r_  rO  r  r  ÚidxrH  rQ   Ú
left_blockÚright_blockÚ
header_tblÚsimplified_headersró  Ú
header_rowrc  rô  r„   Úcol_widths_pdfre  ÚthirdÚfooter_rowsrF  ÚfrrR  r—  rÿ   s-                                                r=   r´  r´  Ó  sÙ  € çe×eßHÝ-á Ó"€FÙ  °V¸G±_Ø+-¸!ÀyÜ,2¯O©O¸IÓ,FôH€Kñ " ,°v¸hÑ7GØ,/¸ô=€Lá  °V¸HÑ5EØ+.¸ÐEUôW€Ká! ,°v¸hÑ7GØ,/¸ÄfÇlÁlØ-6ÐAQôS€Lñ & k¸&ÀÑ:JØ03¸Qô@Ðð ˜fÑ$ vÑ-€HÙ
˜H¬y¼«}Ø(+¬B©¸CÄ¹FØ'*¬2¡v¸CÄ¹FôD€Cð €EØ€JØ�j‰jÒ%˜DŸI™I€Gä!*¨8Ó!4ó n ÑˆÑˆh˜Ø�Š7Ø�L‰L™›Ô%ð )¨¨	Ð2Ø)¨'¨Ð3Ø,¨X¨JÐ7Ø)¨(¨Ð4ØMð
ˆ
ðPð 	ñ Ù�w—|‘| JÓ/°Ó>Á	È+ÐWcÓ@dÐeð
à ¤™e R¬¡U˜^ô-ˆ
ð 	×Ñ™JØ/Ø/Ø2Ø˜& (¨C´·±ÀÓ1KÐLð	(
ó ô 	ð 	�‰�ZÔ Ø�‰‘V˜A˜s¤2™vÓ&Ô'Ø�‰‘YÐHÈ+ÓVÔWØ�‰‘V˜A˜s¤2™vÓ&Ô'ò
Ðð
 ;MÖM°Q‘i  <Õ0ÐMˆ
ÐMØ �\ˆ
Ü! $¨Ó*ò 	‰HˆE�1Ø×ÑÙœ#˜e›*Ð&6Ó7Ù˜!˜L™/Ð+;Ó<Ù˜!˜L™/¨#¨2Ð.Ð0@ÓAÙ˜!˜NÑ+Ð-=Ó>Ù˜!˜NÑ+¨C¨RÐ0Ð2BÓCÙ˜!Ð-Ñ.Ð0@ÓAÙ˜!Ð-Ñ.¨s°Ð3Ð5EÓFÙÀQÀÒEW˜!˜OÑ,×5Ñ5°jÔAÐ]_ÐaqÓrÙÀ1À]ÒCS˜!˜MÑ*×3Ñ3°JÔ?ÐY[Ð]mÓnÙœ#˜a ™kÓ*Ð,<Ó=Ù˜)Ð%5Ó6Ù˜"Ð.Ó/ðõ ð	ð  œb™& #¤b¡&¨#¬b©&°#´b±&¸#¼b¹&Øœb™& #¤b¡&¨#¬b©&°#´b±&¸#¼b¹&À!ÄBÁ$ÈÌBÉðPˆá�J¨.ÀQÔGˆØ�‰‘ZØ˜6 7¬F¯O©O¸IÓ,FÐGØ˜& '¬6¯<©<Ð8Ø7Ø/Ø0Ø0Ø0Ø�V˜X s¬F¯O©O¸IÓ,FÐGØ˜v x´&·,±,ÄÇÁÐPYÓ@ZÐ1[Ð\Ø2Ø/Ø2Ø0Ø1ð!
ó ô 	ð  	�‰�SÔØ�‰‘V˜A˜s¤2™vÓ&Ô'ð ˆØˆà×Ñ™5ÙÐ-¨|Ó<ÙÐ-¨|Ó<ÙÐ,¨lÓ;ð#
ð "ð œR‘x ¤r¡¨5´©8Ð4ô	6ô 	7ð <ò 	;ˆEØ×Ñ™uÙ˜U˜GÐ#BÐCÀ\ÓRÙ˜U˜GÐ#BÐCÀ\ÓRÙ˜U˜GÐ#BÐCÀ\ÓRð'ð &ð !¤™8 U¬2¡X¨u´R©xÐ8ô	 :õ ;ð	;ð ò 	ˆBØ�K‰K™
Ø6Ø3Ø6Ø2Ø˜v v¨s´F·O±OÀIÓ4NÐOØ˜v v¨s´F·O±OÀIÓ4NÐOð$ó õ ð	õ 	4Ø�‰‘\ +Ó.Ô/à”c˜$“iÑŠ
ð]n ð`Ø�	‰	�%Ôñ Ü˜FÓ#ˆð	Ø—	‘	œ,Ó'×.Ñ.¬|×/CÑ/CÀvÑ/MÓN×TÑTÓVˆAÙØ&�”Ø*¨:¨,°nÄSÈÃ]ÀOÐS`Ða�”	Ø—
‘
”à�I‰I�Kð ùòW NøôP ò Ùðûð �I‰I�Kús%   ÈXÕ'X ÖA3X Ø	XØXØX1c                 óÔ  — ddl m}m}m}m}m}	 ddlm}
m} ddl	m
}m}m}  |
«       } |d|d   dd|t        j                  d	«      ¬
«      } |d|d   ddd¬«      } |d|d   dd¬«      } |d|d   ddt        j                  |d¬«      } |d|d   dd¬«      }d|z   dz   } ||t!        t"        «      dt$        z  dt$        z  dt$        z  dt$        z  ¬«      }g }dt&        › �dt&        › �d|› �d |› �d!g}d"j)                  |«      }d#}d$}d%}|› d"|› d"|› �} |||«       |||«      gg} ||d&t$        z  dt$        z  g¬'«      }|j+                   |	d(d)d*d+d,d-dt        j                  d	«      fg«      «       |j-                  |«       |j-                   |d.dt$        z  «      «       |j-                   |d/|«      «       |j-                   |d.d0t$        z  «      «       g d1¢} | D �!cg c]  }! ||!|«      ‘Œ }"}!|"g}#d}$| D ]Ú  }%|$d.z  }$|#j-                   |t/        |$«      |«       ||%d2   |«       ||%d3   d d4 |«       ||%d5   |«       ||%d6   d d7 |«       ||%d8   |«       ||%d9   d d7 |«       ||%d:   r|%d:   j1                  d;«      nd<|«       ||%d=   r|%d=   j1                  d;«      nd<|«       |t/        |%d>   «      |«       |d?|«       |d<|«      g«       ŒÜ d@t$        z  dAt$        z  dBt$        z  dAt$        z  dCt$        z  dAt$        z  dCt$        z  dAt$        z  dAt$        z  dDt$        z  d.t$        z  dBt$        z  g}& ||#|&d.¬E«      }'|'j+                   |	dFd,dGt        j                  d	«      fdHd,dGt        j                  fdIdJdKdLdMdNd,d-dOt        j                  dP«      fdQdRd-t        j                  t        j                  dS«      gfdTd)d*dUdVg«      «       |j-                  |'«       |j-                   |d.dOt$        z  «      «       dW}(g })|)j-                   | |dX|«       |dY|«       |dZ|«      gg|(t$        z  |(t$        z  |(t$        z  g¬'«      «       d[D ]U  }*|)j-                   | ||*› d\�|«       ||*› d\�|«       ||*› d\�|«      gg|(t$        z  |(t$        z  |(t$        z  g¬'«      «       ŒW |)D ]O  }+|+j+                   |	dTd)d*d]d^d_d_dt        j                  d	«      fd^d`d`dt        j                  d	«      fg«      «       ŒQ ddal m}, |j-                   |,|)«      «       	 |j5                  |«       |r�t9        |«      }-	 |-j;                  t<        «      j?                  t<        j@                  |k(  «      jC                  «       }.|.r+db|._"        dctG        | «      › dd�|._$        |-jK                  «        |-jM                  «        y y c c}!w # t6        $ r Y Œ w xY w# |-jM                  «        w xY w)eNr   )r   r   r   r   r   r   )r!   r"   ÚTA_RIGHTr  r  rÕ   r  r  r  r!  r  r   r×   r/  r"  r  r  r$  r%  rÅ   r&  Ú	FuidCellSr�  rþ  r3  rÈ   r   r(  r)  r*  r+  r,  r-  u%   <b>HOJA NÂ°</b> _____ <b>DE</b> _____z<b>REGISTRO DE ENTRADA</b>un  <table border="1" cellpadding="4" cellspacing="0" width="100%"><tr><td align="center"><font size="7"><b>AÃ‘O</b></font></td><td align="center"><font size="7"><b>MES</b></font></td><td align="center"><font size="7"><b>DÃ�A</b></font></td><td align="center"><font size="7"><b>NÂº T:</b></font></td></tr><tr><td height="20"></td><td></td><td></td><td></td></tr></table>r.  r(  r/  r1  r2  r3  r+  r2  r|   rÚ  r4  r5  rœ  r�  rã  rž  rŸ  r7  r   r¡  r™  rÛ  rI   rš  r›  rÜ  r9  r8  r9  r:  r;  r<  r*  r,  r-  r>  r@  rA  rB  rC  r6  r2  rD  r7  r1  rE  r8  rF  rH  r  rJ  rK  rL  rà  rM  rN  rO  r4  rP  rQ  r`  rÙ  rç  )'rS  r   r   r   r   r   rT  r   r    rU  r!   r"   rd  r   rT  r±   r   r   r   r  rg   rS  rÀ  rí   ry  rR  rV  r”  r>   rK   r)   rL   rW  rX  rS  ri   r�  ru  r»   )/rQ   rP  r¥  rH  r.   r   r   r   r   r   r   r    r!   r"   rd  rZ  r[  rV  r]  rW  Úcell_style_pdfr^  r_  rO  rZ  Ú	left_textÚ	right_topÚ	right_midÚright_bottomÚ
right_textÚheader_table_datar\  r]  ró  r^  rc  Ú	row_countr„   r_  re  r`  ra  rF  rb  rR  r—  rÿ   s/                                                  r=   r±  r±  p  sž  € ßZÕZßHß@Ñ@á Ó"€FÙ  °V¸G±_Ø+-¸!ÀyÜ,2¯O©O¸IÓ,FôH€Kñ ! °V¸HÑ5EØ+.¸ÐEUôW€Ká! ,°v¸hÑ7GØ,/¸ô=€Lá! ,°v¸hÑ7GØ,/¸ÄfÇlÁlØ-6ÐAQôS€Lñ $ K¸¸xÑ8HØ.1¸1ô>€Nð ˜fÑ$ vÑ-€HÙ
˜H¬y¼«}Ø(+¬B©¸CÄ¹FØ'*¬2¡v¸CÄ¹FôD€Cð €Eð %¤W IÐ.Ø
%¤g YÐ/Ø
(¨¨
Ð3Ø
% h ZÐ0Ø
Ið€Jð —‘˜ZÓ(€Ià7€IØ,€Ið	ð ð �;˜e I ;¨e°L°>ÐB€Jñ �i Ó.Ù�j ,Ó/ð	
ðÐñ Ð(¸RÄ¹UÀBÄrÁE¸NÔK€JØ×Ñ™
Ø+Ø+Ø.Ø	�f˜h¨¬V¯_©_¸YÓ-GÐHð	$ó ô ð 
‡L�L�ÔØ	‡L�L‘˜˜3œr™6Ó"Ô#à	‡L�L‘ÐDÀkÓRÔSØ	‡L�L‘˜˜3œr™6Ó"Ô#òÐð
 7IÖI°‘)˜A˜|Õ,ÐI€JÐIà�€JØ€IØò ˆØ�Q‰ˆ	Ø×ÑÙ”c˜)“n nÓ5Ù�a˜‘o ~Ó6Ù�a˜‘o c rÐ*¨NÓ;Ù�a˜Ñ'¨Ó8Ù�a˜Ñ'¨¨Ð,¨nÓ=Ù�aÐ)Ñ*¨NÓ;Ù�aÐ)Ñ*¨3¨BÐ/°Ó@ÙÀÀ?ÒAS�a˜Ñ(×1Ñ1°*Ô=ÐY[Ð]kÓlÙ¸qÀÒ?O�a˜Ñ&×/Ñ/°
Ô;ÐUWÐYgÓhÙ”c˜!˜H™+Ó&¨Ó7Ù�i Ó0Ù�b˜.Ó)ð
õ 	ðð$ 	ŒB‰�”B‘˜œB™ ¤B¡¨¬B©ØŒB‰�”B‘˜œB™ ¤B¡ØŒB‰�”"‘�cœ"‘fð€Nñ �
 nÀÔ
C€CØ‡L�L‘Ø	�v˜w¬¯©¸	Ó(BÐCØ	�f˜g¤v§|¡|Ð4Ø3Ø+Ø,Ø,Ø,Ø	�˜ 3¬¯©¸	Ó(BÐCØ	˜6 8¬f¯l©l¼F¿O¹OÈIÓ<VÐ-WÐXØ.Ø+Ø.Ø,Ø-ðó ô ð  
‡L�L�ÔØ	‡L�L‘˜˜3œr™6Ó"Ô#ð €EØ€KØ×Ñ‘uÙÐ)¨<Ó8ÙÐ)¨<Ó8ÙÐ(¨,Ó7ðð ð œ‘8˜U¤2™X u¬R¡xÐ0ô	2ô 3ð
 8ò 7ˆØ×Ñ™5Ù˜˜Ð>Ð?ÀÓNÙ˜˜Ð>Ð?ÀÓNÙ˜˜Ð>Ð?ÀÓNð#
ð "ð œR‘x ¤r¡¨5´©8Ð4ô	6õ 	7ð7ð ò ˆØ
�‰‘JØ2Ø/Ø2Ø.Ø˜6 6¨3´·±À	Ó0JÐKØ˜6 6¨3´·±À	Ó0JÐKð 
ó õ 	ðõ 0Ø	‡L�L‘˜kÓ*Ô+ðØ�	‰	�%Ôñ Ü˜FÓ#ˆð	Ø—	‘	œ,Ó'×.Ñ.¬|×/CÑ/CÀvÑ/MÓN×TÑTÓVˆAÙØ&�”Ø*¬3¨t«9¨+°ZÐ@�”	Ø—
‘
”à�I‰I�Kð ùò] JøôV ò Ùðûð �I‰I�Kús%   Ç&WÔ W Ô?A0W ×	W×W×W')éx   )rI   rC  é   )r×   )rC  ro  )rI   Ú
Frecuenciar…  )~Úsysrr  ÚinsertrB   r¶   rq  rŸ  r¢  râ  Úapp.services.timezoner   rx  r—   r   Úfastapir   r   r   r	   Úfastapi.responsesr
   r9   r   Úopenpyxlr   Úopenpyxl.stylesr   r   r   r   r   Ú
matplotlibÚuseÚmatplotlib.pyplotÚpyplotrº   Úmatplotlib.tickerÚtickerÚmtickerÚreportlab.lib.pagesizesr   r   Úreportlab.lib.unitsr   Úreportlab.libr   rS  r   r   r   r   r   r   r   rT  r   r    rU  r!   r"   r:   r#   r$   r%   Úapp.models.alfresco_siter&   Úapp.models.alfresco_folderr'   Úapp.models.alfresco_filer(   Úapp.models.sync_progressr)   Ú
app.configr*   Úrouterrâ   rí   r>   rF   rS   rf   rv   r…   rŠ   rŽ   r•   r˜   rª   r¬   r¾   rû   r  r&  r/  r5  r>  rF  r	  rE  rŒ   r\  r}  r‰  Úintr¦  r“  rû  r  r  r  rR  rm  rq  ry  r{  r€  rŒ  rŽ  r“  r­  r‡  rˆ  r°  r³  r´  r±  r^   r?   r=   ú<module>r‰     s  ðÛ 
Ø ‡�‡��Ð1Ô 2ß ,× ,× ,Ý .Ý ß <Ó <Ý *Ý "Ý ß FÕ Fã Ø €
‡�ˆuÔ Ý Ý #ß 1Ý "Ý  ß h× hÑ hß Dß 2ç GÑ GÝ 1Ý 5Ý 1Ý 1Ý á	Ð,°NÐ3CÔ	D€ò T€ðJ˜#ó Jò9ò#ð¨D°©Ið ÀtÈCÁyó ð6¨Dó ð:&¨4ó &ò òòð$¨dó ò0óóó*ó*ó,ó,ó.ó.ð$ ØØØ3ØØ%Ø'ñÐ ð ØØØ1ØØ"Øñ€ð ‡�Ð$Ð.Qð  `p€ó  qÙ*/°ÐAlÔ*mñ  ~Eð  FLó  ~Mñ N Cð NÐszò Nó qðNð ‡�Ð&Ð0Sð  bU€ó  VÙ(-¨cÐ?jÔ(kñ  |Cð  DJó  |Kñ h #ð hÐqxò hó Vðhð  ‡�Ð!Ð+Wð  f_€ó  `Ù+2°6«?ñ \ ò \ó `ð\ð ‡�ÐÐ'Hð  Wg€ó  hÙ-2°3ÐDfÔ-gñ  |Að  BCð  Qô  |@ñ  PWð  X^ó  P_ñ * sð *Ðuxð *ð  FMò *ó hð*óB}ð@ ‡�Ð*Ð4að  pA€ó  BÙ,1°#ÐCnÔ,oñ  @Gð  HNó  @Oñ N cð NÐu|ò Nó BðNð ‡�Ð,Ð6cð  rp€ó  qÙ*/°ÐAlÔ*mñ  ~Eð  FLó  ~Mñ L Cð LÐszò Ló qðLð ‡�Ð#Ð-Xð  gl€ó  má˜Ð*UÔVÙ˜Xð  4eô  fÙ˜&“/ñ&*Øð&*àð&*ð 	ò&*ó mð&*óRHóV	ò	òòò(ð ‡�Ð Ð*Fð  Us€ó  tÙ+0°ÐBYÔ+ZÑjqÐrxÓjyñ R Sð RÐ`gò Ró tðRð: ‡�ˆGÐ3ð  Bh€ó  iá˜Ð*AÔBÙ˜tÐ1xÔyÙ˜Ð-MÔNÙ˜&“/ñ	P*ØðP*àðP*ð ðP*ð 	ò	P*ó iðP*ðf ‡�ˆNÐ$Bð  QV€ó  WÙ$)¨#Ð;KÔ$LÑ\cÐdjÓ\kñ N˜cð NÐRYò Nó WðNð ‡�ÐÐ&@ð  OJ€ó  Ká˜Ð)9Ô:Ù˜Ð-KÔLÙ˜&“/ñGØðGàðGð 	òGó KðGò4(òD
CòAò qòhPòfZóz`r?   