§
    ]­hLJ  ã                   óÆ  — d dl Z d dl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mZ d dlmZ d dlmZ d dlmZ d d	lmZ d d
lmZ  ede¦  «        ZdZh d£ZdZ e j        ed¬¦  «         d„ Ze                     ddg¬¦  «        ed„ ¦   «         ¦   «         Ze                     ddg¬¦  «        ed„ ¦   «         ¦   «         Z e                     ddg¬¦  «        ed„ ¦   «         ¦   «         Z!e                     ddg¬¦  «        ed„ ¦   «         ¦   «         Z"e                     ddg¬¦  «        ed„ ¦   «         ¦   «         Z#e                     ddg¬¦  «        ed„ ¦   «         ¦   «         Z$e                     d dg¬¦  «        ed!„ ¦   «         ¦   «         Z%e                     dd"g¬¦  «        ed#„ ¦   «         ¦   «         Z&e                     d$dg¬¦  «        ed%„ ¦   «         ¦   «         Z'dS )&é    N)Údatetime)Ú	BlueprintÚrequestÚjsonifyÚsession)Úsecure_filename)ÚdbÚUser)ÚCompany)ÚInvoice)ÚExpenseType)Úrequire_auth)Ú
OCRServiceÚinvoicez(/home/ubuntu/invoice-606-backend/uploads>   ÚjpgÚpdfÚpngÚjpegi   T)Úexist_okc                 ót   — d| v o4|                       dd¦  «        d                              ¦   «         t          v S )u5   Verifica si el archivo tiene una extensiÃ³n permitidaú.é   )ÚrsplitÚlowerÚALLOWED_EXTENSIONS)Úfilenames    ú6/home/ubuntu/invoice-606-backend/src/routes/invoice.pyÚallowed_filer      s6   € à�(ˆ?ÐW˜xŸš¨s°AÑ6Ô6°qÔ9×?Ò?ÑAÔAÕEWÐWÐWó    z	/invoicesÚGET)Úmethodsc                  óR  — 	 t          j        d¦  «        } t          j        d¦  «        }t          j        d¦  «        }t          j                             ddt          ¬¦  «        }t          j                             ddt          ¬¦  «        }t          j                             d	d
¦  «        }t          j                             dd
¦  «        }t          j                             dd
¦  «        }t
          j        }| dk    rn3| dk    r|                     |¬¦  «        }n|                     |¬¦  «        }|r|                     |¬¦  «        }|r|                     |¬¦  «        }|r’|                     t
          j	         
                    |¦  «        t
          j         
                    |¦  «        z  t
          j         
                    |¦  «        z  t
          j         
                    |¦  «        z  ¦  «        }|                     t
          j                             ¦   «         ¦  «        }|                     ||d¬¦  «        }	t%          d„ |	j        D ¦   «         |	j        |	j        ||dœ¦  «        dfS # t,          $ r-}
t%          ddt/          |
¦  «        › �i¦  «        dfcY d}
~
S d}
~
ww xY w)u3   Obtener lista de facturas segÃºn el rol del usuarioÚ	user_roleÚ
company_idÚuser_idÚpager   )ÚtypeÚper_pageé
   ÚstatusÚ Úexpense_typeÚsearchÚsuper_adminÚ
accountant)r$   )Úcreated_by_user_id)r*   )r,   F)r&   r(   Ú	error_outc                 ó6   — g | ]}|                      ¦   «         ‘ŒS © ©Úto_dict)Ú.0r   s     r   ú
<listcomp>z get_invoices.<locals>.<listcomp>Q   s"   € ÐIÐIÐI¨w˜ŸšÑ*Ô*ÐIÐIÐIr   )ÚinvoicesÚtotalÚpagesÚcurrent_pager(   éÈ   ÚerrorúError interno del servidor: éô  N)r   Úgetr   ÚargsÚintr   ÚqueryÚ	filter_byÚfilterÚsupplier_nameÚcontainsÚsupplier_rncÚncfÚinvoice_numberÚorder_byÚ
created_atÚdescÚpaginater   Úitemsr9   r:   Ú	ExceptionÚstr)r#   Úuser_company_idr%   r&   r(   r*   r,   r-   rC   r8   Úes              r   Úget_invoicesrT      s¢  € ð:PÝ”K Ñ,Ô,ˆ	Ý!œ+ lÑ3Ô3ˆÝ”+˜iÑ(Ô(ˆåŒ|×Ò ¨µÐÑ4Ô4ˆÝ”<×#Ò# J°½Ð#Ñ=Ô=ˆÝ”×!Ò! (¨BÑ/Ô/ˆÝ”|×'Ò'¨¸Ñ;Ô;ˆÝ”×!Ò! (¨BÑ/Ô/ˆå”ˆð ˜Ò%ð 	@àØ˜,Ò&ð 	@à—O’O¨�OÑ?Ô?ˆEˆEð —O’O°w�OÑ?Ô?ˆEð ð 	3Ø—O’O¨6�OÑ2Ô2ˆEàð 	?Ø—O’O°�OÑ>Ô>ˆEàð 	Ø—L’LÝÔ&×/Ò/°Ñ7Ô7ÝÔ%×.Ò.¨vÑ6Ô6ñ8å”×%Ò% fÑ-Ô-ñ/õ Ô'×0Ò0°Ñ8Ô8ñ:ñô ˆEð —’�wÔ1×6Ò6Ñ8Ô8Ñ9Ô9ˆð —>’>ØØØð "ñ 
ô 
ˆõ ØIÐI¸(¼.ÐIÑIÔIØ”^Ø”^Ø Ø ð
ð 
ñ ô ð ðð 	øõ ð Pð Pð PÝ˜Ð!HÅÀAÁÄÐ!HÐ!HÐIÑJÔJÈCÐOÐOÐOÐOÐOÐOÐOøøøøðPøøøs   ‚I,I/ É/
J&É9"J!ÊJ&Ê!J&ÚPOSTc                  ó.	  — 	 t          j        d¦  «        } t          j        d¦  «        }|st          ddi¦  «        dfS t          j        ¦   «         }g d¢}|D ]0}|                     |¦  «        st          dd|› d�i¦  «        dfc S Œ1t
          j                             |                     d	¦  «        ¦  «        }|st          dd
i¦  «        dfS dt          j        ¦   «          	                    d¦  «        › dt          t          j        ¦   «         ¦  «        dd…                              ¦   «         › �}t          d.i d|“d|                     d¦  «        “d|                     d¦  «        “d|                     d¦  «        “d|                     d¦  «        “d|                     dd¦  «        “dt          j        |                     d¦  «        d¦  «                             ¦   «         “d|                     d¦  «        r:t          j        |                     d¦  «        d¦  «                             ¦   «         nd“dt#          |                     d¦  «        ¦  «        “dt#          |                     dd¦  «        ¦  «        “dt#          |                     dd¦  «        ¦  «        “dt#          |                     dd¦  «        ¦  «        “dt#          |                     dd¦  «        ¦  «        “d t#          |                     d d¦  «        ¦  «        “d!t#          |                     d!d¦  «        ¦  «        “d"t#          |                     d"d¦  «        ¦  «        “d#t#          |                     d#d¦  «        ¦  «        “d	|                     d	¦  «        “d$|j        “d%d&“d|“d'| “Ž}t&          j                              |¦  «         t&          j                              ¦   «          t          d(|                     ¦   «         d)œ¦  «        d*fS # t.          $ r-}t          dd+t          |¦  «        › �i¦  «        dfcY d}~S d}~wt0          $ rK}t&          j                              ¦   «          t          dd,t          |¦  «        › �i¦  «        d-fcY d}~S d}~ww xY w)/zCrear nueva factura manualmenter%   r$   r=   ú)Usuario debe estar asociado a una empresaé�  )rF   rH   rI   Úinvoice_dateÚinvoiced_amountr,   zCampo z es requeridor,   õ   Tipo de gasto invÃ¡lidoúINV-ú%Y%m%dú-Né   rJ   rI   Úncf_modifiedrF   rH   Úsupplier_id_typeÚRNCrY   ú%Y-%m-%dÚpayment_daterZ   Úitbis_invoicedr   Úitbis_retainedÚitbis_perceivedÚincome_retentionÚisr_perceivedÚselective_consumption_taxÚother_taxesÚ	legal_tipÚexpense_descriptionr*   Úpendingr0   zFactura creada exitosamente©Úmessager   éÉ   zError en formato de datos: r>   r?   r3   )r   r@   r   r   Úget_jsonr   rC   r   ÚnowÚstrftimerQ   ÚuuidÚuuid4Úupperr   ÚstrptimeÚdateÚfloatÚnamer	   ÚaddÚcommitr5   Ú
ValueErrorrP   Úrollback)	r%   rR   ÚdataÚrequired_fieldsÚfieldr,   rJ   Únew_invoicerS   s	            r   Úcreate_invoicer„   [   s  € ð=PÝ”+˜iÑ(Ô(ˆÝ!œ+ lÑ3Ô3ˆàð 	XÝ˜GÐ%PÐQÑRÔRÐTWÐWÐWåÔÑ!Ô!ˆð vÐuÐuˆØ$ð 	Nð 	NˆEØ—8’8˜E‘?”?ð NÝ Ð)F°%Ð)FÐ)FÐ)FÐGÑHÔHÈ#ÐMÐMÐMÐMðNõ #Ô(×,Ò,¨T¯XªX°nÑ-EÔ-EÑFÔFˆØð 	FÝ˜GÐ%>Ð?Ñ@Ô@À#ÐEÐEð d¥¤¡¤× 7Ò 7¸Ñ AÔ AÐcÐcÅCÍÌ
ÉÌÑDUÔDUÐVXÐWXÐVXÔDY×D_ÒD_ÑDaÔDaÐcÐcˆõ ð 
ð 
ð 
Ø)˜>ð
à—’˜‘”�ð
ð Ÿš .Ñ1Ô1Ð1ð
ð Ÿ(š( ?Ñ3Ô3Ð3ð	
ð
 Ÿš .Ñ1Ô1Ð1ð
ð "ŸXšXÐ&8¸%Ñ@Ô@Ð@ð
õ "Ô*¨4¯8ª8°NÑ+CÔ+CÀZÑPÔP×UÒUÑWÔWÐWð
ð \`×[cÒ[cÐdrÑ[sÔ[sÐ}�Ô*¨4¯8ª8°NÑ+CÔ+CÀZÑPÔP×UÒUÑWÔWÐWÐy}øð
õ " $§(¢(Ð+<Ñ"=Ô"=Ñ>Ô>Ð>ð
õ ! §¢Ð*:¸AÑ!>Ô!>Ñ?Ô?Ð?ð
õ ! §¢Ð*:¸AÑ!>Ô!>Ñ?Ô?Ð?ð
õ " $§(¢(Ð+<¸aÑ"@Ô"@ÑAÔAÐAð
õ # 4§8¢8Ð,>ÀÑ#BÔ#BÑCÔCÐCð
õ   §¢¨¸!Ñ <Ô <Ñ=Ô=Ð=ð
õ ',¨D¯HªHÐ5PÐRSÑ,TÔ,TÑ&UÔ&UÐ&Uð
õ  ˜dŸhšh }°aÑ8Ô8Ñ9Ô9Ð9ð!
õ" ˜DŸHšH [°!Ñ4Ô4Ñ5Ô5Ð5ð#
ð$ Ÿš .Ñ1Ô1Ð1ð%
ð& !-Ô 1Ð 1ð'
ð( �9ð)
ð* '�ð+
ð,  '˜wð-
ˆõ2 	Œ
�Š�{Ñ#Ô#Ð#Ý
Œ
×ÒÑÔÐåØ4Ø"×*Ò*Ñ,Ô,ð
ð 
ñ ô ð ðð 	øõ
 ð Oð Oð OÝ˜Ð!G½sÀ1¹v¼vÐ!GÐ!GÐHÑIÔIÈ3ÐNÐNÐNÐNÐNÐNÐNøøøøÝð Pð Pð PÝ
Œ
×ÒÑÔÐÝ˜Ð!HÅÀAÁÄÐ!HÐ!HÐIÑJÔJÈCÐOÐOÐOÐOÐOÐOÐOøøøøðPøøøsD   ‚<P
 ¿AP
 ÂAP
 ÃL9P
 Ð

RÐ"P<Ð6RÐ<RÑ	A RÒ	RÒRz/invoices/uploadc            
      ó	  — 	 t          j        d¦  «        } t          j        d¦  «        }|st          ddi¦  «        dfS dt          j        vrt          ddi¦  «        dfS t          j        d         }|j        dk    rt          dd	i¦  «        dfS t          |j        ¦  «        st          dd
i¦  «        dfS |                     dt          j	        ¦  «         | 
                    ¦   «         }|                     d¦  «         |t          k    rt          ddi¦  «        dfS t          |j        ¦  «        }t          j        ¦   «         › d|› �}t          j                             t"          |¦  «        }|                     |¦  «         t'          ¦   «         }|                     |¦  «        \  }}	|st          ddi¦  «        dfS dt+          j        ¦   «                              d¦  «        › dt1          t          j        ¦   «         ¦  «        dd…                              ¦   «         › �}
t5          d/i d|
“d|                     dd¦  «        “d|                     dd¦  «        “d|                     dd¦  «        “dd“d|                     d¦  «        r:t+          j        |                     d¦  «        d¦  «                             ¦   «         n$t+          j        ¦   «                              ¦   «         “d|                     dd¦  «        “d|                     dd¦  «        “d|                     dd ¦  «        “d!d"“d#d$“d%|	“d&|“d't+          j        ¦   «         “d|“d(| “Ž}t<          j                             |j         ¦  «        }|r|j!        |_"        tF          j          $                    |¦  «         tF          j          %                    ¦   «          t          d)| &                    ¦   «         ||	d*œ¦  «        d+fS # tN          $ rŽ}tF          j          (                    ¦   «          d,tS          ¦   «         v r3t          j         *                    |¦  «        rt          j+        |¦  «         t          dd-t1          |¦  «        › �i¦  «        d.fcY d}~S d}~ww xY w)0z.Subir imagen de factura para procesamiento OCRr%   r$   r=   rW   rX   Úfileu   No se encontrÃ³ archivor+   u   No se seleccionÃ³ archivoz6Tipo de archivo no permitido. Use PNG, JPG, JPEG o PDFr   u    Archivo muy grande. MÃ¡ximo 16MBÚ_z)No se pudieron extraer datos de la imagenr\   r]   r^   Nr_   rJ   rI   rF   rH   ra   rb   rY   rc   rZ   re   r,   Úexpense_type_suggestionÚ06r*   rn   Úocr_processedTÚocr_confidenceÚ
image_pathÚprocessed_atr0   zFactura procesada exitosamente)rp   r   Úextracted_dataÚ
confidencerq   Ú	file_pathr>   r?   r3   ),r   r@   r   r   Úfilesr   r   ÚseekÚosÚSEEK_ENDÚtellÚMAX_FILE_SIZEr   ru   rv   ÚpathÚjoinÚUPLOAD_FOLDERÚsaver   Úprocess_invoice_imager   rs   rt   rQ   rw   r   rx   ry   Úutcnowr   rC   r,   r{   rm   r	   r|   r}   r5   rP   r   ÚlocalsÚexistsÚremove)r%   rR   r†   Ú	file_sizer   Úunique_filenamer�   Úocr_servicerŽ   r�   rJ   rƒ   r,   rS   s                 r   Úupload_invoicer£   ž   s!  € ðUPÝ”+˜iÑ(Ô(ˆÝ!œ+ lÑ3Ô3ˆàð 	XÝ˜GÐ%PÐQÑRÔRÐTWÐWÐWð �œÐ&ð 	FÝ˜GÐ%>Ð?Ñ@Ô@À#ÐEÐEåŒ}˜VÔ$ˆàŒ=˜BÒð 	HÝ˜GÐ%@ÐAÑBÔBÀCÐGÐGå˜DœMÑ*Ô*ð 	eÝ˜GÐ%]Ð^Ñ_Ô_ÐadÐdÐdð 	�	Š	�!•R”[Ñ!Ô!Ð!Ø—I’I‘K”Kˆ	Ø�	Š	�!‰Œˆà•}Ò$ð 	OÝ˜GÐ%GÐHÑIÔIÈ3ÐNÐNõ # 4¤=Ñ1Ô1ˆÝ!œZ™\œ\Ð6Ð6¨HÐ6Ð6ˆÝ”G—L’L¥°Ñ@Ô@ˆ	ð 	�	Š	�)ÑÔÐõ !‘l”lˆØ%0×%FÒ%FÀyÑ%QÔ%QÑ"ˆ˜
àð 	XÝ˜GÐ%PÐQÑRÔRÐTWÐWÐWð d¥¤¡¤× 7Ò 7¸Ñ AÔ AÐcÐcÅCÍÌ
ÉÌÑDUÔDUÐVXÐWXÐVXÔDY×D_ÒD_ÑDaÔDaÐcÐcˆõ ð 
ð 
ð 
Ø)˜>ð
à×"Ò" 5¨"Ñ-Ô-Ð-ð
ð )×,Ò,¨_¸bÑAÔAÐAð
ð (×+Ò+¨N¸BÑ?Ô?Ð?ð	
ð
 #˜Uð
ð ft×ewÒewð  yGñ  fHô  fHð  c�Ô*¨>×+=Ò+=¸nÑ+MÔ+MÈzÑZÔZ×_Ò_ÑaÔaÐaõ  NVô  NZñ  N\ô  N\÷  Naò  Nañ  Ncô  Ncøð
ð +×.Ò.Ð/@À!ÑDÔDÐDð
ð *×-Ò-Ð.>ÀÑBÔBÐBð
ð (×+Ò+Ð,EÀtÑLÔLÐLð
ð �9ð
ð ˜$ð
ð &˜:ð
ð !�yð
õ "œÑ*Ô*Ð*ð
ð '�ð
ð   '˜wð!
ˆõ( #Ô(×,Ò,¨[Ô-EÑFÔFˆØð 	@Ø.:Ô.?ˆKÔ+å
Œ
�Š�{Ñ#Ô#Ð#Ý
Œ
×ÒÑÔÐåØ7Ø"×*Ò*Ñ,Ô,Ø,Ø$ð	
ð 
ñ ô ð
 ðð 	øõ ð Pð Pð PÝ
Œ
×ÒÑÔÐà�&™(œ(Ð"ð 	!¥r¤w§~¢~°iÑ'@Ô'@ð 	!ÝŒI�iÑ Ô Ð Ý˜Ð!HÅÀAÁÄÐ!HÐ!HÐIÑJÔJÈCÐOÐOÐOÐOÐOÐOÐOøøøøðPøøøsD   ‚<O/ ¿ O/ Á /O/ Â&O/ Â7A&O/ ÄB O/ Æ?H/O/ Ï/
RÏ9BRÑ<RÒRz/invoices/<int:invoice_id>c                 ó6  — 	 t          j        d¦  «        }t          j        d¦  «        }t          j        d¦  «        }t          j                             | ¦  «        }|st	          ddi¦  «        dfS |dk    rnC|dk    r|j        |k    rt	          dd	i¦  «        d
fS n|j        |k    rt	          dd	i¦  «        d
fS t	          d|                     ¦   «         i¦  «        dfS # t          $ r-}t	          ddt          |¦  «        › �i¦  «        dfcY d}~S d}~ww xY w)u/   Obtener informaciÃ³n de una factura especÃ­ficar#   r$   r%   r=   úFactura no encontradaé”  r.   r/   zNo autorizadoé“  r   r<   r>   r?   N)
r   r@   r   rC   r   r$   r0   r5   rP   rQ   ©Ú
invoice_idr#   rR   r%   r   rS   s         r   Úget_invoicerª   ù   sb  € ðPÝ”K Ñ,Ô,ˆ	Ý!œ+ lÑ3Ô3ˆÝ”+˜iÑ(Ô(ˆå”-×#Ò# JÑ/Ô/ˆØð 	DÝ˜GÐ%<Ð=Ñ>Ô>ÀÐCÐCð ˜Ò%ð 
	@àØ˜,Ò&ð 	@àÔ! _Ò4ð @Ý ¨Ð9Ñ:Ô:¸CÐ?Ð?ð@ð Ô)¨WÒ4ð @Ý ¨Ð9Ñ:Ô:¸CÐ?Ð?å˜	 7§?¢?Ñ#4Ô#4Ð5Ñ6Ô6¸Ð;Ð;øåð Pð Pð PÝ˜Ð!HÅÀAÁÄÐ!HÐ!HÐIÑJÔJÈCÐOÐOÐOÐOÐOÐOÐOøøøøðPøøøs0   ‚A/C! Á2*C! ÂC! Â<$C! Ã!
DÃ+"DÄDÄDÚPUTc                 óö  — 	 t          j        d¦  «        }t          j        d¦  «        }t          j        d¦  «        }t          j                             | ¦  «        }|st	          ddi¦  «        dfS d}|dk    rd	}n2|d
k    r|j        |k    rd	}n|dk    r|j        |k    r|j        dk    rd	}|st	          ddi¦  «        dfS t          j	        ¦   «         }g d¢}|D �] }||v rù||         }	|dv rS|	rQ	 t          j        |	d¦  «                             ¦   «         }	n±# t          $ r t	          dd|› �i¦  «        dfcY c S w xY w|dv r;|	�9	 t          |	¦  «        }	nr# t          $ r t	          dd|› �i¦  «        dfcY c S w xY w|dk    rD|	rBt          j                             |	¦  «        }
|
st	          ddi¦  «        dfc S |
j        |_        t%          |||	¦  «         �Œt&          j                              ¦   «          t	          d|                     ¦   «         dœ¦  «        dfS # t,          $ rK}t&          j                              ¦   «          t	          ddt1          |¦  «        › �i¦  «        dfcY d}~S d}~ww xY w)u&   Actualizar informaciÃ³n de una facturar#   r$   r%   r=   r¥   r¦   Fr.   Tr/   Úemployeern   z&No autorizado para editar esta facturar§   )rI   r`   rF   rH   ra   rY   rd   rZ   re   rf   rg   rh   ri   rj   rk   rl   r,   )rY   rd   rc   u    Formato de fecha invÃ¡lido para rX   )	rZ   re   rf   rg   rh   ri   rj   rk   rl   Nu   Valor numÃ©rico invÃ¡lido para r,   r[   z Factura actualizada exitosamentero   r<   r>   r?   )r   r@   r   rC   r   r$   r0   r*   r   rr   r   rx   ry   r~   rz   r   r{   rm   Úsetattrr	   r}   r5   rP   r   rQ   )r©   r#   rR   r%   r   Úcan_editr€   Úupdatable_fieldsr‚   Úvaluer,   rS   s               r   Úupdate_invoicer²     s  € ðDPÝ”K Ñ,Ô,ˆ	Ý!œ+ lÑ3Ô3ˆÝ”+˜iÑ(Ô(ˆå”-×#Ò# JÑ/Ô/ˆØð 	DÝ˜GÐ%<Ð=Ñ>Ô>ÀÐCÐCð ˆØ˜Ò%ð 	ØˆHˆHØ˜,Ò&ð 	¨7Ô+=ÀÒ+Pð 	ØˆHˆHØ˜*Ò$ð 	¨Ô)CÀwÒ)Nð 	ÐSZÔSaÐenÒSnð 	ØˆHàð 	UÝ˜GÐ%MÐNÑOÔOÐQTÐTÐTåÔÑ!Ô!ˆð
ð 
ð 
Ðð &ð 	/ñ 	/ˆEØ˜ˆ}ð /Ø˜Uœ�ð Ð<Ð<ð DÀð DðcÝ (Ô 1°%¸Ñ DÔ D× IÒ IÑ KÔ K˜˜øÝ%ð cð cð cÝ&¨Ð1[ÐTYÐ1[Ð1[Ð'\Ñ]Ô]Ð_bÐbÐbÐbÐbÐbÐbðcøøøð ð :ð :ð Dà>CðDðbÝ % e¡¤˜˜øÝ%ð bð bð bÝ&¨Ð1ZÐSXÐ1ZÐ1ZÐ'[Ñ\Ô\Ð^aÐaÐaÐaÐaÐaÐaðbøøøð ˜nÒ,ð D°ð Då#.Ô#4×#8Ò#8¸Ñ#?Ô#?�LØ'ð RÝ&¨Ð1JÐ'KÑLÔLÈcÐQÐQÐQÐQØ2>Ô2C�GÔ/å˜ ¨Ñ.Ô.Ð.ùå
Œ
×ÒÑÔÐåØ9Ø—’Ñ(Ô(ð
ð 
ñ ô ð ðð 	øõ
 ð Pð Pð PÝ
Œ
×ÒÑÔÐÝ˜Ð!HÅÀAÁÄÐ!HÐ!HÐIÑJÔJÈCÐOÐOÐOÐOÐOÐOÐOøøøøðPøøøs|   ‚A/H# Á2AH# Ã.H# Ã3'DÄH# Ä E Ä;H# Ä?E Å 	H# Å
EÅH# Å E?Å:H# Å>E?Å?A H# Ç A"H# È#
I8È-A I3É-I8É3I8z"/invoices/<int:invoice_id>/approvec                 ó  — 	 t          j        d¦  «        }t          j        d¦  «        }t          j        d¦  «        }|dvrt          ddi¦  «        dfS t          j                             | ¦  «        }|st          ddi¦  «        d	fS |d
k    r|j        |k    rt          ddi¦  «        dfS |j        dk    rt          ddi¦  «        dfS d|_        ||_        t          j	        ¦   «         |_
        t          j                              ¦   «          t          d|                     ¦   «         dœ¦  «        dfS # t          $ rK}t          j                              ¦   «          t          ddt!          |¦  «        › �i¦  «        dfcY d}~S d}~ww xY w)z3Aprobar una factura (solo accountant y super_admin)r#   r$   r%   ©r/   r.   r=   z#No autorizado para aprobar facturasr§   r¥   r¦   r/   z'No autorizado para aprobar esta facturaÚapprovedu   Factura ya estÃ¡ aprobadarX   zFactura aprobada exitosamentero   r<   r>   r?   N©r   r@   r   r   rC   r$   r*   Úapproved_by_user_idr   rœ   Úapproved_atr	   r}   r5   rP   r   rQ   r¨   s         r   Úapprove_invoicer¹   b  sÏ  € ð PÝ”K Ñ,Ô,ˆ	Ý!œ+ lÑ3Ô3ˆÝ”+˜iÑ(Ô(ˆàÐ9Ð9ð 	RÝ˜GÐ%JÐKÑLÔLÈcÐQÐQå”-×#Ò# JÑ/Ô/ˆØð 	DÝ˜GÐ%<Ð=Ñ>Ô>ÀÐCÐCð ˜Ò$ð 	V¨Ô);¸Ò)Nð 	VÝ˜GÐ%NÐOÑPÔPÐRUÐUÐUàŒ>˜ZÒ'ð 	HÝ˜GÐ%@ÐAÑBÔBÀCÐGÐGà#ˆŒØ&-ˆÔ#Ý&œoÑ/Ô/ˆÔå
Œ
×ÒÑÔÐåØ6Ø—’Ñ(Ô(ð
ð 
ñ ô ð ðð 	øõ
 ð Pð Pð PÝ
Œ
×ÒÑÔÐÝ˜Ð!HÅÀAÁÄÐ!HÐ!HÐIÑJÔJÈCÐOÐOÐOÐOÐOÐOÐOøøøøðPøøøó8   ‚AD5 Á3D5 Â	#D5 Â-D5 ÃA)D5 Ä5
F
Ä?A FÅ?F
ÆF
z!/invoices/<int:invoice_id>/rejectc                 ó  — 	 t          j        d¦  «        }t          j        d¦  «        }t          j        d¦  «        }|dvrt          ddi¦  «        dfS t          j                             | ¦  «        }|st          ddi¦  «        d	fS |d
k    r|j        |k    rt          ddi¦  «        dfS |j        dk    rt          ddi¦  «        dfS d|_        ||_        t          j	        ¦   «         |_
        t          j                              ¦   «          t          d|                     ¦   «         dœ¦  «        dfS # t          $ rK}t          j                              ¦   «          t          ddt!          |¦  «        › �i¦  «        dfcY d}~S d}~ww xY w)z4Rechazar una factura (solo accountant y super_admin)r#   r$   r%   r´   r=   z$No autorizado para rechazar facturasr§   r¥   r¦   r/   z(No autorizado para rechazar esta facturaÚrejectedu   Factura ya estÃ¡ rechazadarX   zFactura rechazada exitosamentero   r<   r>   r?   Nr¶   r¨   s         r   Úreject_invoicer½   ˆ  sÏ  € ð PÝ”K Ñ,Ô,ˆ	Ý!œ+ lÑ3Ô3ˆÝ”+˜iÑ(Ô(ˆàÐ9Ð9ð 	SÝ˜GÐ%KÐLÑMÔMÈsÐRÐRå”-×#Ò# JÑ/Ô/ˆØð 	DÝ˜GÐ%<Ð=Ñ>Ô>ÀÐCÐCð ˜Ò$ð 	W¨Ô);¸Ò)Nð 	WÝ˜GÐ%OÐPÑQÔQÐSVÐVÐVàŒ>˜ZÒ'ð 	IÝ˜GÐ%AÐBÑCÔCÀSÐHÐHà#ˆŒØ&-ˆÔ#Ý&œoÑ/Ô/ˆÔå
Œ
×ÒÑÔÐåØ7Ø—’Ñ(Ô(ð
ð 
ñ ô ð ðð 	øõ
 ð Pð Pð PÝ
Œ
×ÒÑÔÐÝ˜Ð!HÅÀAÁÄÐ!HÐ!HÐIÑJÔJÈCÐOÐOÐOÐOÐOÐOÐOøøøøðPøøørº   ÚDELETEc                 ó„  — 	 t          j        d¦  «        }t          j        d¦  «        }t          j        d¦  «        }t          j                             | ¦  «        }|st	          ddi¦  «        dfS d}|dk    rd	}n2|d
k    r|j        |k    rd	}n|dk    r|j        |k    r|j        dk    rd	}|st	          ddi¦  «        dfS |j        rOt          j
                             |j        ¦  «        r+	 t          j        |j        ¦  «         n# t          $ r Y nw xY wt          j                              |¦  «         t          j                              ¦   «          t	          ddi¦  «        dfS # t          $ rK}t          j                              ¦   «          t	          ddt%          |¦  «        › �i¦  «        dfcY d}~S d}~ww xY w)zEliminar una facturar#   r$   r%   r=   r¥   r¦   Fr.   Tr/   r­   rn   z(No autorizado para eliminar esta facturar§   rp   zFactura eliminada exitosamenter<   r>   r?   N)r   r@   r   rC   r   r$   r0   r*   rŒ   r“   r—   rž   rŸ   rP   r	   Údeleter}   r   rQ   )r©   r#   rR   r%   r   Ú
can_deleterS   s          r   Údelete_invoicerÂ   ®  s  € ð#PÝ”K Ñ,Ô,ˆ	Ý!œ+ lÑ3Ô3ˆÝ”+˜iÑ(Ô(ˆå”-×#Ò# JÑ/Ô/ˆØð 	DÝ˜GÐ%<Ð=Ñ>Ô>ÀÐCÐCð ˆ
Ø˜Ò%ð 	ØˆJˆJØ˜,Ò&ð 	¨7Ô+=ÀÒ+Pð 	ØˆJˆJØ˜*Ò$ð 	¨Ô)CÀwÒ)Nð 	ÐSZÔSaÐenÒSnð 	ØˆJàð 	WÝ˜GÐ%OÐPÑQÔQÐSVÐVÐVð Ôð 	¥"¤'§.¢.°Ô1CÑ"DÔ"Dð 	ðÝ”	˜'Ô,Ñ-Ô-Ð-Ð-øÝð ð ð Ø�ðøøøõ 	Œ
×Ò˜'Ñ"Ô"Ð"Ý
Œ
×ÒÑÔÐå˜	Ð#CÐDÑEÔEÀsÐJÐJøåð Pð Pð PÝ
Œ
×ÒÑÔÐÝ˜Ð!HÅÀAÁÄÐ!HÐ!HÐIÑJÔJÈCÐOÐOÐOÐOÐOÐOÐOøøøøðPøøøsQ   ‚A/E* Á2AE* Ã+E* Ã0D
 Ä	E* Ä

DÄE* ÄDÄAE* Å*
F?Å4A F:Æ4F?Æ:F?z/expense-typesc                  ó  — 	 t           j                             d¬¦  «                             ¦   «         } t	          dd„ | D ¦   «         i¦  «        dfS # t
          $ r-}t	          ddt          |¦  «        › �i¦  «        dfcY d	}~S d	}~ww xY w)
z Obtener lista de tipos de gastosT)Ú	is_activeÚexpense_typesc                 ó6   — g | ]}|                      ¦   «         ‘ŒS r3   r4   )r6   r,   s     r   r7   z%get_expense_types.<locals>.<listcomp>Þ  s$   € ÐWÐWÐW¸˜l×2Ò2Ñ4Ô4ÐWÐWÐWr   r<   r=   r>   r?   N)r   rC   rD   Úallr   rP   rQ   )rÅ   rS   s     r   Úget_expense_typesrÈ   ×  s»   € ðPÝ#Ô)×3Ò3¸dÐ3ÑCÔC×GÒGÑIÔIˆÝØÐWÐWÈÐWÑWÔWð
ñ ô àðð 	øõ ð Pð Pð PÝ˜Ð!HÅÀAÁÄÐ!HÐ!HÐIÑJÔJÈCÐOÐOÐOÐOÐOÐOÐOøøøøðPøøøs   ‚AA Á
BÁ"BÁ=BÂB)(r“   ru   r   Úflaskr   r   r   r   Úwerkzeug.utilsr   Úsrc.models.userr	   r
   Úsrc.models.companyr   Úsrc.models.invoicer   Úsrc.models.expense_typer   Úsrc.routes.authr   Úsrc.services.ocr_servicer   Ú__name__Ú
invoice_bpr™   r   r–   Úmakedirsr   ÚrouterT   r„   r£   rª   r²   r¹   r½   rÂ   rÈ   r3   r   r   ú<module>rÕ      sx  ðØ 	€	€	€	Ø €€€Ø Ð Ð Ð Ð Ð Ø 6Ð 6Ð 6Ð 6Ð 6Ð 6Ð 6Ð 6Ð 6Ð 6Ð 6Ð 6Ø *Ð *Ð *Ð *Ð *Ð *Ø $Ð $Ð $Ð $Ð $Ð $Ð $Ð $Ø &Ð &Ð &Ð &Ð &Ð &Ø &Ð &Ð &Ð &Ð &Ð &Ø /Ð /Ð /Ð /Ð /Ð /Ø (Ð (Ð (Ð (Ð (Ð (Ø /Ð /Ð /Ð /Ð /Ð /àˆY�y (Ñ+Ô+€
ð ;€Ø2Ð2Ð2Ð Ø €ð €„ˆM DÐ )Ñ )Ô )Ð )ðXð Xð Xð ×Ò�+¨ wÐÑ/Ô/Øð<Pð <Pñ „ñ 0Ô/ð<Pð| ×Ò�+¨ xÐÑ0Ô0Øð?Pð ?Pñ „ñ 1Ô0ð?PðB ×ÒÐ$¨v¨hÐÑ7Ô7ØðWPð WPñ „ñ 8Ô7ðWPðr ×ÒÐ.¸¸ÐÑ@Ô@ØðPð Pñ „ñ AÔ@ðPð: ×ÒÐ.¸¸ÐÑ@Ô@ØðFPð FPñ „ñ AÔ@ðFPðP ×ÒÐ6ÀÀÐÑIÔIØð"Pð "Pñ „ñ JÔIð"PðH ×ÒÐ5À¸xÐÑHÔHØð"Pð "Pñ „ñ IÔHð"PðH ×ÒÐ.¸¸
ÐÑCÔCØð%Pð %Pñ „ñ DÔCð%PðN ×ÒÐ"¨U¨GÐÑ4Ô4Øð	Pð 	Pñ „ñ 5Ô4ð	Pð 	Pð 	Pr   