o
    'i                     @   s  d dl Z d dlmZmZmZ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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 e
 ddd Z!e
j"dddgddd Z#e
$ddd Z%e
 ddd Z&dS )    N)render_templaterequestredirecturl_forflashcurrent_app	send_file   )bp   )save_staging	save_json)run_extraction)analyze)is_dev_revision_enabled)create_invoice_revision_pdf)DictAny)run_basic_tax_lookup)check_credentials)process_invoice_bytes/c                   C   s   t dS )Nzv1/upload.html)r    r   r   </var/www/html/flask_server/apps/wp_invoices/api/v1/routes.pyupload_form   s   r   z/formGETPOST)methodsc                  C   s   t jdkr	tdS t jdd } t jdd }t jdd}t| |s)dS t jd	}|s3d
S | }|j	p;d}|j
p@d}t||||d}|d }|d }	t|}
td t|
 |
rc|
|	d< ddlm} ddlm} t|t|||	d}t|ddS )Nr   zv1/upload_form_with_auth.htmluser passenginemini)zUnauthorized: invalid USER/PASSi  file)zNo file providedi  zinvoice.pdfzapplication/pdf)
file_bytesfilenamecontent_typer!   	extractedchecks$QQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQtax_lookup_basicr   )Path)MAIL_REVISIONS_DIRr'   
output_diroriginal_filenamer(   T)as_attachment)r   methodr   formgetstripr   filesreadr%   mimetyper   r   printpathlibr+   )apps.wp_invoices.integrations.mail_intaker,   r   strr   )r   pwdr!   r#   r$   r%   r7   resultr'   r(   r*   r+   r,   pdf_pathr   r   r   upload_form_with_auth   sF   



r?   z/processc               
   C   s  t d tjd} tjdd}| s"t d tdd ttdS |  }| j	p*d	}| j
p/d
}t d| d| d|  t|||}t d|d   t||||d}t d t|}t d t|d d| t|d d| t d tj|ddd}t rtjdtjtjd}	|d d }
t|}t | |r||
d< zt||	|t|
tr|
nd d W n ty } ztjd| td d! W Y d }~nd }~ww t d" td#||||||d |d$ d%S )&Nu!   📥 /invoices/v1/process: inicior#   r!   r"   u   ⚠️ No se recibió archivozSelecciona un archivoerrorzwpinv_v1.upload_forminvoicezapplication/octet-streamu   📄 Archivo recibido: z (z
), engine=u   📂 Guardado en staging: folder)datar%   r7   r!   u   📊 Extracción completadau   📈 Análisis completadorawanalysisu$   💾 Artefactos guardados en stagingF   )ensure_asciiindentINVOICE_REVISIONS_DIR	revisionstotalsvalidationsr*   r-   z'Error creating invoice revision PDF: %su2   No se pudo generar el PDF de revisión (ver logs).warningu)   📤 Renderizando template v1/result.htmlzv1/result.htmlid)	json_textr%   r7   r!   rE   staging_folder
staging_id) r8   r   r5   r3   r2   r   r   r   r6   r%   r7   r   r   r   r   jsondumpsr   r   configospathjoin	root_pathr   r   
isinstancedict	Exceptionlogger	exceptionr   )fr!   rC   r%   r7   metar=   rE   rO   revisions_dirr(   r*   er   r   r   processK   sl   



rb   z/healthc                   C   s   dddddfS )NTwp_invoicesv1)okappversion   r   r   r   r   r   health   s   ri   )'rU   flaskr   r   r   r   r   r   r   	blueprintr
   services.file_storer   r   services.extractorr   services.analyzerr   services.pdf_utilsr   rR   services.invoice_revision_pdfr   typingr   r   (apps.wp_invoices.integrations.tax_lookupr   shared.wp_invoices_authr   "apps.wp_invoices.services.pipeliner   r3   r   router?   postrb   ri   r   r   r   r   <module>   s*   $

5
G