§
    s�’j¬  ã                  óÔ  — d dl m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 ddlmZmZmZ  ej        d	¦  «        Z ed
dg e eg d¢¦  «        ¦  «        g¬¦  «        ZeZ e¦   «         Ze                     dd¬¦  «         e eg d¢¦  «        ¦  «        fd;d„¦   «         Ze                     dd¬¦  «         e eg d¢¦  «        ¦  «        fd<d„¦   «         Ze                     dd¬¦  «         e eg d¢¦  «        ¦  «        fd=d„¦   «         Ze                     dd¬¦  «        d e	dd¬ ¦  «         e	dd!¬ ¦  «         e	dd"¬ ¦  «         e	dd#¬ ¦  «         e eg d¢¦  «        ¦  «        fd>d*„¦   «         Ze                     d+d,¬¦  «         e eg d¢¦  «        ¦  «        fd?d/„¦   «         Ze                     d0d1¬¦  «         e eg d¢¦  «        ¦  «        fd<d2„¦   «         Ze                     d3d4¬¦  «         e	d5d6¬ ¦  «         e eg d¢¦  «        ¦  «        fd@d7„¦   «         Ze                     d8d9¬¦  «         e eg d¢¦  «        ¦  «        fd?d:„¦   «         Z dS )Aé    )ÚannotationsN)ÚAny)Ú	APIRouterÚDependsÚHTTPExceptionÚQuery)Úrequire_role)ÚInvoiceProcessingServiceé   )ÚSyncConfigRequestÚSyncGdtRequestÚTestConnectionRequestzdscons.api.invoicesz/v1/erp/invoiceszE-Invoices & Tax Management)Ú
superadminÚdirectorÚ
accountant)ÚprefixÚtagsÚdependenciesz/sync/test-connectionuK   Kiá»ƒm tra káº¿t ná»‘i thá»­ nghiá»‡m tá»›i Cá»•ng Thuáº¿ hoáº·c Email IMAP)ÚsummaryÚreqr   Úcurrent_userúdict[str, Any]Úreturnc              ƒ  óz   K  — t                                | j        | j        | j        | j        | j        ¬¦  «        }|S )uY   Kiá»ƒm tra trá»±c tiáº¿p thÃ´ng tin Ä‘Äƒng nháº­p vá»›i server Cá»•ng Thuáº¿ hoáº·c IMAP.)Úservice_typeÚtax_codeÚusernameÚpasswordÚextra_config)Úinvoice_serviceÚtest_connectionr   r   r   r   r   )r   r   Úress      úCC:\Projects\DSCons\app\api\routers\invoice_modules\invoices_sync.pyÚtest_sync_connectionr$      sD   è è € õ ×
)Ò
)ØÔ%Ø”Ø”Ø”ØÔ%ð *ñ ô €Cð €Jó    z/sync/configsuB   Láº¥y cáº¥u hÃ¬nh káº¿t ná»‘i Cá»•ng Thuáº¿ & HÃ²m thÆ° HÃ³a Ä‘Æ¡nc              ƒ  óB   K  — t                                ¦   «         }d|dœS )u/   Danh sÃ¡ch cáº¥u hÃ¬nh káº¿t ná»‘i thá»±c táº¿.Úsuccess)ÚstatusÚconfigs)r    Úget_sync_configs)r   r)   s     r#   Úget_sync_configurationsr+   0   s'   è è € õ ×.Ò.Ñ0Ô0€GØ¨GÐ4Ð4Ð4r%   uI   LÆ°u cáº¥u hÃ¬nh tÃ i khoáº£n káº¿t ná»‘i Cá»•ng Thuáº¿ hoáº·c Email IMAPr   c           	   ƒ  óà   K  — |                      d¦  «        p|                      d¦  «        pd}t                               | j        | j        | j        | j        | j        | j        |¬¦  «        }|S )uP   LÆ°u trá»¯ thÃ´ng tin Ä‘Äƒng nháº­p thá»±c táº¿ cá»§a káº¿ toÃ¡n/doanh nghiá»‡p.Ú	full_nameÚemailÚ
SuperAdmin)r   r   r   r   r   Ú	is_activeÚ	user_name)	Úgetr    Úsave_sync_configr   r   r   r   r   r0   )r   r   r1   r"   s       r#   Úsave_sync_configurationr4   =   s|   è è € ð 	×Ò˜Ñ%Ô%ÐR¨×)9Ò)9¸'Ñ)BÔ)BÐRÀlð õ ×
*Ò
*ØÔ%Ø”Ø”Ø”ØÔ%Ø”-Øð +ñ ô €Cð €Jr%   z	/sync-gdtua   KÃ­ch hoáº¡t tiáº¿n trÃ¬nh Ä‘á»“ng bá»™ tá»«ng pháº§n tá»« Cá»•ng Tá»•ng Cá»¥c Thuáº¿ & HÃ²m ThÆ°u   MÃ£ sá»‘ thuáº¿ doanh nghiá»‡p)Údescriptionu   Tá»« ngÃ y (YYYY-MM-DD)u   Ä�áº¿n ngÃ y (YYYY-MM-DD)u   Loáº¡i HÄ�: all, purchase, soldúSyncGdtRequest | Noner   ú
str | NoneÚ	from_dateÚto_dateÚ	sync_typec              ƒ  óê   K  — | r| j         r| j         ndp|}| r| j        r| j        ndp|}| r| j        r| j        ndp|}| r| j        r| j        ndp|pd}	t                               ||||	¬¦  «        }
|
S )ut   Tiáº¿n trÃ¬nh Ä‘á»“ng bá»™ thá»±c táº¿ tá»«ng pháº§n (há»— trá»£ phÃ¢n loáº¡i vÃ  khoáº£ng thá»�i gian tÃ¹y chá»�n).NÚall)r   r8   r9   r:   )r   r8   r9   r:   r    Úrun_gdt_tax_sync)r   r   r8   r9   r:   r   Úeffective_tax_codeÚeffective_from_dateÚeffective_to_dateÚeffective_sync_typer"   s              r#   Úsync_gdt_tax_invoicesrB   V   s¹   è è € ð +.ÐH°#´,ÐH˜#œ,˜,ÀDÐUÈXÐàÐ8 ¤Ð8ˆŒˆ°Dðà	ð ð ),ÐE°´ÐE˜œ˜ÀÐQÈ'ÐàÐ	9 #¤-Ð	9ˆŒˆ°TÐP¸iÐPÈ5ð õ ×
*Ò
*Ø#Ø%Ø!Ø%ð	 +ñ ô €Cð €Jr%   z/{invoice_id}/sync-gdt-detailuI   Ä�á»“ng bá»™ danh má»¥c máº·t hÃ ng gá»‘c tá»« Cá»•ng Tá»•ng Cá»¥c Thuáº¿Ú
invoice_idÚstrc              ƒ  ó>   K  — t                                | ¦  «        }|S )uu   Gá»�i trá»±c tiáº¿p API Detail cá»§a Cá»•ng HÄ�Ä�T Tá»•ng Cá»¥c Thuáº¿ Ä‘á»ƒ náº¡p danh má»¥c hÃ ng hÃ³a thá»±c táº¿.)r    Úsync_gdt_invoice_detail)rC   r   r"   s      r#   Úsync_invoice_gdt_detailrG   w   s    è è € õ ×
1Ò
1°*Ñ
=Ô
=€CØ€Jr%   z/sync/scheduler-statusuJ   Kiá»ƒm tra tráº¡ng thÃ¡i Láº­p lá»‹ch Ä�á»“ng bá»™ HÃ³a Ä‘Æ¡n Tá»± Ä‘á»™ngc              ƒ  óX   K  — ddl m}  |¦   «         }|                     ¦   «         }d|dœS )uw   Tráº£ vá»� tráº¡ng thÃ¡i hoáº¡t Ä‘á»™ng cá»§a Scheduler, 6 khung giá»� cá»‘ Ä‘á»‹nh vÃ  láº§n Ä‘á»“ng bá»™ káº¿ tiáº¿p.r   ©Úget_invoice_auto_sync_servicer'   )r(   Ú	scheduler)Ú3app.services.invoice_processing.auto_sync_schedulerrJ   Ú
get_status)r   rJ   ÚserviceÚstatus_infos       r#   Úget_invoice_scheduler_statusrP   †   sS   è è € ðð ð ð ð ð ð ,Ð+Ñ-Ô-€GØ×$Ò$Ñ&Ô&€KØ¨kÐ:Ð:Ð:r%   z/sync/trigger-scheduled-syncu]   KÃ­ch hoáº¡t ngay má»™t phiÃªn Ä�á»“ng bá»™ HÃ³a Ä‘Æ¡n Ä�á»‹nh ká»³ (Manual Test / Emergency)r<   u&   Loáº¡i hÃ³a Ä‘Æ¡n: all, purchase, soldc              ƒ  ól   K  — ddl m}  |¦   «         }|                     dd| ¬¦  «        ƒ d{V —†}d|dœS )	u�   KÃ­ch hoáº¡t tá»©c thÃ¬ má»™t phiÃªn Ä‘á»“ng bá»™ tá»± Ä‘á»™ng nhÆ° lá»‹ch Ä‘á»‹nh ká»³ (kÃ¨m cÆ¡ cháº¿ gá»­i email cáº£nh bÃ¡o náº¿u lá»—i).r   rI   zMANUAL-TRIGGERT)Útrigger_slotÚforcer:   Nr'   )r(   Úresult)rL   rJ   Úexecute_scheduled_sync)r:   r   rJ   rN   r"   s        r#   Útrigger_scheduled_sync_nowrV   ™   sƒ   è è € ðð ð ð ð ð ð ,Ð+Ñ-Ô-€GØ×.Ò.Ø%¨T¸Yð /ñ ô ð ð ð ð ð ð €Cð  ¨3Ð/Ð/Ð/r%   z/{invoice_id}/sync-equipmentub   Ä�á»“ng bá»™ bÃ³c tÃ¡ch hÃ³a Ä‘Æ¡n mÃ¡y mÃ³c sang danh má»¥c thiáº¿t bá»‹ sá»Ÿ há»¯u erp_equipmentc              ƒ  ó    K  — 	 t                                | ¦  «        }|S # t          $ r#}t          dt	          |¦  «        ¬¦  «        ‚d}~ww xY w)ur   Tá»± Ä‘á»™ng bÃ³c tÃ¡ch cÃ¡c mÃ¡y mÃ³c, xe táº£i, thiáº¿t bá»‹ tá»« hÃ³a Ä‘Æ¡n mua vÃ o vÃ o báº£ng erp_equipment.i�  )Ústatus_codeÚdetailN)r    Úsync_invoice_to_equipmentÚ	Exceptionr   rD   )rC   r   r"   Úes       r#   rZ   rZ   ¯   s[   è è € ð<Ý×7Ò7¸
ÑCÔCˆØˆ
øÝð <ð <ð <Ý¨µC¸±F´FÐ;Ñ;Ô;Ð;øøøøð<øøøs   „   
AªAÁA)r   r   r   r   r   r   )r   r   r   r   )r   r   r   r   r   r   )r   r6   r   r7   r8   r7   r9   r7   r:   r7   r   r   r   r   )rC   rD   r   r   r   r   )r:   rD   r   r   r   r   )!Ú
__future__r   ÚloggingÚtypingr   Úfastapir   r   r   r   Úapp.api.routers.authr	   Ú'app.services.invoice_processing_servicer
   Úmodelsr   r   r   Ú	getLoggerÚloggerÚrouterÚinvoice_routerr    Úpostr$   r2   r+   r4   rB   rG   rP   rV   rZ   © r%   r#   ú<module>rj      sÂ  ðØ "Ð "Ð "Ð "Ð "Ð "à €€€Ø Ð Ð Ð Ð Ð à <Ð <Ð <Ð <Ð <Ð <Ð <Ð <Ð <Ð <Ð <Ð <à -Ð -Ð -Ð -Ð -Ð -Ø LÐ LÐ LÐ LÐ LÐ Lðð ð ð ð ð ð ð ð ð ð 
ˆÔ	Ð0Ñ	1Ô	1€Ø	ˆØØ
'Ð	(Ø�'˜,˜,Ð'OÐ'OÐ'OÑPÔPÑQÔQÐRð
ñ 
ô 
€ð
 €Ø*Ð*Ñ,Ô,€ð ×ÒØØYð ñ ô ð $+ 7ØˆÐ=Ð=Ð=Ñ>Ô>ñ$ô $ðð ð ð ñ	ô ðð" ×ÒØÐað ñ ô ð $+ 7ØˆÐ=Ð=Ð=Ñ>Ô>ñ$ô $ð5ð 5ð 5ð 5ñô ð5ð ×ÒØÐhð ñ ô ð
 $+ 7ØˆÐ=Ð=Ð=Ñ>Ô>ñ$ô $ðð ð ð ñô ðð, ×ÒØØoð ñ ô ð
 "&Ø ˜5 Ð3SÐTÑTÔTØ!˜E $Ð4MÐNÑNÔNØ˜% Ð2MÐNÑNÔNØ!˜E $Ð4UÐVÑVÔVØ#* 7ØˆÐ=Ð=Ð=Ñ>Ô>ñ$ô $ðð ð ð ñ	ô ðð: ×ÒØ#ØWð ñ ô ð $+ 7ØˆÐ=Ð=Ð=Ñ>Ô>ñ$ô $ðð ð ð ñ	ô ðð ×ÒØØXð ñ ô ð
 $+ 7ØˆÐ=Ð=Ð=Ñ>Ô>ñ$ô $ð;ð ;ð ;ð ;ñ	ô ð;ð ×ÒØ"Økð ñ ô ð
 �U˜5Ð.VÐWÑWÔWØ#* 7ØˆÐ=Ð=Ð=Ñ>Ô>ñ$ô $ð0ð 0ð 0ð 0ñ	ô ð0ð$ ×ÒØ"Øpð ñ ô ð $+ 7ØˆÐ=Ð=Ð=Ñ>Ô>ñ$ô $ð<ð <ð <ð <ñ	ô ð<ð <ð <r%   