§
    î
ÂjÜ  ã                  ó~   — d dl mZ 	 d dlZd dlmZ ddlmZ ddlmZ  ej	        e
¦  «        Z G d„ dee¦  «        ZdS )	é    )ÚannotationsN)ÚAnyé   )ÚInvoiceGdtDetailEnricherMixin)ÚInvoiceGdtFetcherMixinc                  ó$   — e Zd ZdZ	 	 	 	 ddd„ZdS )ÚInvoiceGdtSyncMixinzUnified GDT sync mixin.NÚallÚtax_codeú
str | NoneÚ	from_dateÚto_dateÚ	sync_typeÚstrÚreturnúdict[str, Any]c                óø  — |                       ¦   «         5 }|                     ¦   «         5 }|r>|                     ¦   «         r*|                     d|                     ¦   «         f¦  «         n|                     d¦  «         |                     ¦   «         }ddd¦  «         n# 1 swxY w Y   ddd¦  «         n# 1 swxY w Y   |s%|r|                     ¦   «         r|nd}dd|› d�dd	d
œS g }	d}
d}|D �]$}|d         }|d         }|d         }|d         }t          |d         t          ¦  «        r|d         ni }|dk    rk|                      |d         |||||||¬¦  «        }|	                     |¦  «         |
| 	                    dd¦  «        z  }
|| 	                    dd¦  «        z  }Œ¹|dk    re|  
                    |d         |||¦  «        }|	                     |¦  «         |
| 	                    dd¦  «        z  }
|| 	                    dd¦  «        z  }�Œ&d„ |	D ¦   «         }d„ |	D ¦   «         }|rQ|
dk    rK|dk    rEd„ |D ¦   «         }d„ |D ¦   «         }d|v rd}n	d|v rd}nd}||rd                     |¦  «        nd|	d œS t          |¦  «        t          |	¦  «        k    r8t          |	¦  «        dk    r%d!„ |D ¦   «         }d"d                     |¦  «        |	d œS |r
|rd#|› d$|› �nd%}d&d'|› d(|
› d)|› d*�|
||||	d+œS ),u›   Thá»±c hiá»‡n Ä‘á»“ng bá»™ thá»±c táº¿ tá»«ng pháº§n theo khoáº£ng thá»�i gian tá»« Cá»•ng Tá»•ng Cá»¥c Thuáº¿ (hoadondientu.gdt.gov.vn) hoáº·c Email IMAP.aD  
                        SELECT id, service_type, tax_code, username, password_hash, extra_config, is_active
                        FROM erp_invoice_sync_configs
                        WHERE is_active = TRUE AND (tax_code = %s OR tax_code = 'DEFAULT')
                        ORDER BY updated_at DESC;
                    a  
                        SELECT id, service_type, tax_code, username, password_hash, extra_config, is_active
                        FROM erp_invoice_sync_configs
                        WHERE is_active = TRUE
                        ORDER BY updated_at DESC;
                    Nu   doanh nghiá»‡pÚnot_configuredu‡   ChÆ°a cáº¥u hÃ¬nh tÃ i khoáº£n káº¿t ná»‘i Cá»•ng HÄ�Ä�T Tá»•ng Cá»¥c Thuáº¿ (hoadondientu.gdt.gov.vn) hoáº·c HÃ²m thÆ° HÃ³a Ä‘Æ¡n cho ú.Úopen_config_modalzhttps://hoadondientu.gdt.gov.vn)ÚstatusÚmessageÚrequires_actionÚgdt_portal_urlr   Úservice_typer   ÚusernameÚpassword_hashÚextra_configÚ
gdt_portalÚid)Ú	config_idr   r   ÚpasswordÚextrar   r   r   Únew_importedÚ
duplicatesÚ
email_imapc                ó@   — g | ]}|                      d ¦  «        dv¯|‘ŒS )r   )ÚsuccessÚcooldown_active©Úget©Ú.0Úrs     úRC:\Projects\DSCons\app\modules\invoices\application\invoice_processing\gdt_sync.pyú
<listcomp>z8InvoiceGdtSyncMixin.run_gdt_tax_sync.<locals>.<listcomp>Z   s4   € ð 
ð 
ð 
Ø q§u¢u¨X¡¤Ð>\Ð'\Ð'\ˆAÐ'\Ð'\Ð'\ó    c                óD   — g | ]}|                      d ¦  «        dk    ¯|‘ŒS )r   r)   r*   r,   s     r/   r0   z8InvoiceGdtSyncMixin.run_gdt_tax_sync.<locals>.<listcomp>]   s4   € ð 
ð 
ð 
Ø q§u¢u¨X¡¤Ð:KÒ'KÐ'KˆAÐ'KÐ'KÐ'Kr1   c           	     ó’   — g | ]D}d |                      dd¦  «                             ¦   «         › d|                      dd¦  «        › �‘ŒES ©Ú[ÚserviceÚServicez] r   Ú ©r+   Úupper©r-   Úress     r/   r0   z8InvoiceGdtSyncMixin.run_gdt_tax_sync.<locals>.<listcomp>b   sb   € ð ð ð àð V�C—G’G˜I yÑ1Ô1×7Ò7Ñ9Ô9ÐUÐU¸S¿WºWÀYÐPRÑ=SÔ=SÐUÐUðð ð r1   c                ó8   — h | ]}|                      d ¦  «        ’ŒS )r   r*   r,   s     r/   ú	<setcomp>z7InvoiceGdtSyncMixin.run_gdt_tax_sync.<locals>.<setcomp>i   s"   € ÐJÐJÐJ°1˜qŸušu X™œÐJÐJÐJr1   Ú
auth_errorÚai_errorÚerrorú
uV   KhÃ´ng thá»ƒ Ä‘á»“ng bá»™ do lá»—i xÃ¡c thá»±c tÃ i khoáº£n hoáº·c káº¿t ná»‘i máº¡ng.)r   r   Ú
connectorsc           	     ó’   — g | ]D}d |                      dd¦  «                             ¦   «         › d|                      dd¦  «        › �‘ŒES r4   r9   r;   s     r/   r0   z8InvoiceGdtSyncMixin.run_gdt_tax_sync.<locals>.<listcomp>y   sb   € ð !ð !ð !àð V�C—G’G˜I yÑ1Ô1×7Ò7Ñ9Ô9ÐUÐU¸S¿WºWÀYÐPRÑ=SÔ=SÐUÐUð!ð !ð !r1   r)   u   tá»« u    Ä‘áº¿n u   ká»³ hiá»‡n táº¡ir(   u   Tiáº¿n trÃ¬nh Ä‘á»“ng bá»™ u    hoÃ n táº¥t: u    hÃ³a Ä‘Æ¡n má»›i Ä‘Ã£ náº¡p, u    hÃ³a Ä‘Æ¡n Ä‘Ã£ tá»“n táº¡i.)r   r   Ú	total_newÚtotal_duplicatesr   r   rC   )Úget_connectionÚcursorÚstripÚexecuteÚfetchallÚ
isinstanceÚdictÚ_execute_real_gdt_connectionÚappendr+   Ú_execute_real_email_imap_syncÚjoinÚlen)Úselfr   r   r   r   ÚconnÚcurÚconfigsÚ
target_mstÚsync_resultsrE   Ú	total_dupÚcfgr   Úcfg_tax_coder   r"   r#   r<   Úfailed_connectorsÚcooldown_connectorsÚerror_messagesÚfailed_statusesÚaggregate_statusÚcooldown_messagesÚdate_summarys                             r/   Úrun_gdt_tax_syncz$InvoiceGdtSyncMixin.run_gdt_tax_sync   só  € ð × Ò Ñ"Ô"ð 	) dØ—’‘”ð ) #Øð  §¢Ñ 0Ô 0ð Ø—K’Kðð "ŸšÑ)Ô)Ð+ñô ð ð ð —K’Kð !ñ ô ð ð Ÿ,š,™.œ.�ð%)ð )ð )ñ )ô )ð )ð )ð )ð )ð )ð )øøøð )ð )ð )ð )ð	)ð 	)ð 	)ñ 	)ô 	)ð 	)ð 	)ð 	)ð 	)ð 	)ð 	)øøøð 	)ð 	)ð 	)ð 	)ð* ð 	Ø&.ÐZ°8·>²>Ñ3CÔ3CÐZ˜˜ÐJZˆJà*ð sð  fpð  sð  sð  sØ#6Ø"Cð	ð ð ð ˆØˆ	Øˆ	àð 	6ñ 	6ˆCØ˜~Ô.ˆLØ˜zœ?ˆLØ˜:”ˆHØ˜?Ô+ˆHÝ+5°c¸.Ô6IÍ4Ñ+PÔ+PÐX�C˜Ô'Ð'ÐVXˆEà˜|Ò+Ð+Ø×7Ò7Ø! $œiØ)Ø%Ø%ØØ'Ø#Ø'ð 8ñ 	ô 	�ð ×#Ò# CÑ(Ô(Ð(Ø˜SŸWšW ^°QÑ7Ô7Ñ7�	Ø˜SŸWšW \°1Ñ5Ô5Ñ5�	�	à Ò-Ð-Ø×8Ò8Ø˜”I˜x¨°5ñô �ð ×#Ò# CÑ(Ô(Ð(Ø˜SŸWšW ^°QÑ7Ô7Ñ7�	Ø˜SŸWšW \°1Ñ5Ô5Ñ5�	ùð
ð 
Ø#ð
ñ 
ô 
Ðð
ð 
Ø#ð
ñ 
ô 
Ðð ð 	 ¨a¢ °IÀ²N°Nðð à,ðñ ô ˆNð KÐJÐ8IÐJÑJÔJˆOØ˜Ð.Ð.Ø#/Ð Ð Ø˜Ð.Ð.Ø#-Ð Ð à#*Ð à*à!ðn˜4Ÿ9š9 ^Ñ4Ô4Ð4àmØ*ðð ð õ Ð"Ñ#Ô#¥s¨<Ñ'8Ô'8Ò8Ð8½SÀÑ=NÔ=NÐQRÒ=RÐ=Rð!ð !à.ð!ñ !ô !Ðð
 ,ØŸ9š9Ð%6Ñ7Ô7Ø*ðð ð ð 5>ÐbÀ'ÐbÐ0�IÐ0Ð0 wÐ0Ð0Ð0ÐObð 	ð  ð c°\ð  cð  cÐQZð  cð  cð  {Dð  cð  cð  cØ"Ø )Ø"ØØ&ð
ð 
ð 	
s5   •B7ªA*B ÂB7Â B$	Â$B7Â'B$	Â(B7Â7B;Â>B;)NNNr
   )
r   r   r   r   r   r   r   r   r   r   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__rc   © r1   r/   r	   r	      sH   € € € € € Ø!Ð!ð  $Ø $Ø"Øð|
ð |
ð |
ð |
ð |
ð |
ð |
r1   r	   )Ú
__future__r   ÚloggingÚtypingr   Úgdt_detail_enricherr   Úgdt_fetcherr   Ú	getLoggerrd   Úloggerr	   rh   r1   r/   ú<module>rp      s¯   ðØ "Ð "Ð "Ð "Ð "Ð "à &ð €€€Ø Ð Ð Ð Ð Ð à >Ð >Ð >Ð >Ð >Ð >Ø /Ð /Ð /Ð /Ð /Ð /à	ˆÔ	˜8Ñ	$Ô	$€ð
ð 
ð 
ð 
ð 
Ð0Ð2Oñ 
ô 
ð 
ð 
ð 
r1   