§
    ¹À¶jÙ
  ã            
      óÄ   — d Z ddlmZ ddl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 dd
lmZ ddlmZ ddlmZ  ej        d¦  «        Z G d„ deeeeee	¦  «        ZdS )zÐConcrete GDT Portal Adapter implementing GdtGatewayPort.

Encapsulates GDT Portal authentication, captcha resolution, batch invoice fetching,
and line-item detail scraping into a single port-compliant class.
é    )ÚannotationsN)ÚAny)ÚBasePostgresClient)ÚGdtGatewayPorté   )ÚInvoiceGdtAuthMixin)ÚInvoiceGdtCaptchaMixin)ÚInvoiceGdtDetailEnrichMixin)ÚInvoiceGdtDetailSyncMixin)ÚInvoiceGdtFetcherMixinzdscons.invoices.gdt_adapterc                  óF   — e Zd ZdZ	 ddd„Zdd„Z	 	 	 dd d„Zd!d„Zd"d„ZdS )#ÚGdtPortalAdapterzTSecondary Outbound Infrastructure Adapter for General Department of Taxation Portal.NÚtax_codeÚstrÚusernameÚpasswordÚextra_configúdict[str, Any] | NoneÚreturnúdict[str, Any]c                ó8   — |                       ||||pi ¬¦  «        S )z<Authenticate with GDT portal, solving captcha automatically.)r   r   r   r   )Ú_authenticate_gdt_portal)Úselfr   r   r   r   s        úRC:\Projects\DSCons\app\modules\invoices\infrastructure\adapters\gdt\gdt_adapter.pyÚauthenticate_portalz$GdtPortalAdapter.authenticate_portal    s2   € ð ×,Ò,ØØØØ%Ð+¨ð	 -ñ 
ô 
ð 	
ó    útuple[str, str]c                ó*   — |                       ¦   «         S )zCFetch and solve GDT captcha returning (captcha_key, captcha_value).)Ú_solve_gdt_captcha)r   s    r   Úsolve_captchazGdtPortalAdapter.solve_captcha/   s   € à×&Ò&Ñ(Ô(Ð(r   ÚallÚ ÚtokenÚ	from_dateÚto_dateÚ	sync_typeú
str | NoneÚcookie_headerú%tuple[int, int, list[dict[str, Any]]]c                ó8   — |                       ||||||¬¦  «        S )z$Fetch invoice batch from GDT portal.)r#   r$   r%   r&   r   r(   )Ú_fetch_and_persist_gdt_invoices)r   r#   r$   r%   r&   r   r(   s          r   Úfetch_invoiceszGdtPortalAdapter.fetch_invoices3   s3   € ð ×3Ò3ØØØØØØ'ð 4ñ 
ô 
ð 	
r   Ú
invoice_idÚinv_datac                ó0   — |                       ||¬¦  «        S )z7Fetch and persist line items from GDT portal on-demand.)r-   r.   )Ú$_enrich_gdt_invoice_detail_on_demand)r   r-   r.   s      r   Úenrich_invoice_detailz&GdtPortalAdapter.enrich_invoice_detailF   s'   € ð ×8Ò8Ø!Øð 9ñ 
ô 
ð 	
r   c                ó.   — |                       |¬¦  «        S )z2Direct single invoice detail sync from GDT portal.)r-   )Úsync_gdt_invoice_detail)r   r-   s     r   Úsync_invoice_detailz$GdtPortalAdapter.sync_invoice_detailQ   s   € ð
 ×+Ò+°zÐ+ÑBÔBÐBr   )N)
r   r   r   r   r   r   r   r   r   r   )r   r   )r!   Nr"   )r#   r   r$   r   r%   r   r&   r   r   r'   r(   r   r   r)   )r-   r   r.   r   r   r   )r-   r   r   r   )	Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   r    r,   r1   r4   © r   r   r   r      s¡   € € € € € ð _Ð^ð /3ð
ð 
ð 
ð 
ð 
ð)ð )ð )ð )ð Ø#Øð
ð 
ð 
ð 
ð 
ð&	
ð 	
ð 	
ð 	
ðCð Cð Cð Cð Cð Cr   r   )r8   Ú
__future__r   ÚloggingÚtypingr   Úapp.core.postgres.baser   Ú2app.modules.invoices.domain.ports.gdt_gateway_portr   Úgdt_authr   Úgdt_captchar	   Úgdt_detail_enrichr
   Úgdt_detail_syncr   Úgdt_fetcherr   Ú	getLoggerÚloggerr   r9   r   r   ú<module>rF      s'  ððð ð
 #Ð "Ð "Ð "Ð "Ð "à €€€Ø Ð Ð Ð Ð Ð à 5Ð 5Ð 5Ð 5Ð 5Ð 5Ø MÐ MÐ MÐ MÐ MÐ MØ )Ð )Ð )Ð )Ð )Ð )Ø /Ð /Ð /Ð /Ð /Ð /Ø :Ð :Ð :Ð :Ð :Ð :Ø 6Ð 6Ð 6Ð 6Ð 6Ð 6Ø /Ð /Ð /Ð /Ð /Ð /à	ˆÔ	Ð8Ñ	9Ô	9€ð@Cð @Cð @Cð @Cð @CØØØØØØñ@Cô @Cð @Cð @Cð @Cr   