§
    ÔŸ’jÑ  ã                  ób   — d dl mZ 	 d dlZd dlmZ  ej        e¦  «        Z G d„ d¦  «        ZdS )é    )ÚannotationsN)ÚAnyc                  ó"   — e Zd ZdZ	 	 	 d
dd	„ZdS )ÚInvoiceAnalyticsSummaryMixinz#Mixin for get_invoice_summary_kpis.NÚ	from_dateú
str | NoneÚto_dateÚ
project_idÚreturnúdict[str, Any]c                óì  — |                       ¦   «         5 }|                     ¦   «         5 }dg}g }|r*|                     d¦  «         |                     |¦  «         |r*|                     d¦  «         |                     |¦  «         |r*|                     d¦  «         |                     |¦  «         d                     |¦  «        }|                     d|› d�|¦  «         |                     ¦   «         pddddd	œ}	|                     d
|› d�|¦  «         |                     ¦   «         pdddddœ}
|                     d|› d�|¦  «         |j        dk    r|                     ¦   «         d         nd}t          |	d         ¦  «        }t          |
d         ¦  «        }||z
  }t          |	d         ¦  «        t          |	d         ¦  «        |t          |	d         ¦  «        t          |
d         ¦  «        t          |
d         ¦  «        |t          |
d         ¦  «        ||dk    rdndt          |¦  «        dœcddd¦  «         cddd¦  «         S # 1 swxY w Y   	 ddd¦  «         dS # 1 swxY w Y   dS )u   Láº¥y tá»•ng há»£p chá»‰ sá»‘ tÃ i chÃ­nh vÃ  thuáº¿ VAT tá»« Sá»• HÃ³a Ä�Æ¡n (há»— trá»£ lá»�c theo thá»�i gian vÃ  dá»± Ã¡n).zstatus = 'valid'zissue_date >= %szissue_date <= %szmatched_project_id = %sz AND a‡  
                    SELECT
                        COUNT(*) AS count_input,
                        COALESCE(SUM(subtotal_amount_vnd), 0) AS subtotal_input,
                        COALESCE(SUM(vat_amount_vnd), 0) AS vat_input,
                        COALESCE(SUM(total_amount_vnd), 0) AS total_input
                    FROM erp_invoices
                    WHERE direction = 'input' AND z;
                r   )Úcount_inputÚsubtotal_inputÚ	vat_inputÚtotal_inputaŒ  
                    SELECT
                        COUNT(*) AS count_output,
                        COALESCE(SUM(subtotal_amount_vnd), 0) AS subtotal_output,
                        COALESCE(SUM(vat_amount_vnd), 0) AS vat_output,
                        COALESCE(SUM(total_amount_vnd), 0) AS total_output
                    FROM erp_invoices
                    WHERE direction = 'output' AND )Úcount_outputÚsubtotal_outputÚ
vat_outputÚtotal_outputz¦
                    SELECT COUNT(*) AS unreconciled_count
                    FROM erp_invoices
                    WHERE reconciliation_status = 'unreconciled' AND Úunreconciled_countr   r   r   r   r   r   r   r   u,   CÃ²n Ä‘Æ°á»£c kháº¥u trá»« chuyá»ƒn ká»³ sauu)   Sá»‘ thuáº¿ GTGT pháº£i ná»™p ngÃ¢n sÃ¡ch)Útotal_input_invoicesÚtotal_input_subtotal_vndÚtotal_input_vat_vndÚtotal_input_amount_vndÚtotal_output_invoicesÚtotal_output_subtotal_vndÚtotal_output_vat_vndÚtotal_output_amount_vndÚnet_vat_balance_vndÚvat_status_labelÚunreconciled_invoices_countN)	Úget_connectionÚcursorÚappendÚjoinÚexecuteÚfetchoneÚrowcountÚfloatÚint)Úselfr   r	   r
   ÚconnÚcurÚwhere_clausesÚparamsÚ
base_whereÚinpÚoutpÚunrecÚvat_deductibleÚvat_payableÚnet_vat_balances                  úGC:\Projects\DSCons\app\services\invoice_processing\analytics_summary.pyÚget_invoice_summary_kpisz5InvoiceAnalyticsSummaryMixin.get_invoice_summary_kpis   sÀ  € ð × Ò Ñ"Ô"ð R	 dØ—’‘”ð Q #Ø!3Ð 4�Ø$&�Øð -Ø!×(Ò(Ð);Ñ<Ô<Ð<Ø—M’M )Ñ,Ô,Ð,Øð +Ø!×(Ò(Ð);Ñ<Ô<Ð<Ø—M’M 'Ñ*Ô*Ð*Øð .Ø!×(Ò(Ð)BÑCÔCÐCØ—M’M *Ñ-Ô-Ð-à$Ÿ\š\¨-Ñ8Ô8�
à—’ðð 4>ðð ð ð ñô ð ð —l’l‘n”nð Ø#$Ø&'Ø!"Ø#$ð	)ð )�ð —’ðð 5?ðð ð ð ñô ð ð —|’|‘~”~ð Ø$%Ø'(Ø"#Ø$%ð	*ð *�ð —’ðð GQðð ð ð
 ñô ð ð ADÄÈqÒ@PÐ@P˜Ÿš™œÐ';Ô<Ð<ÐVW�å!& s¨;Ô'7Ñ!8Ô!8�Ý# D¨Ô$6Ñ7Ô7�Ø"0°;Ñ">�õ -0°°MÔ0BÑ,CÔ,CÝ05°cÐ:JÔ6KÑ0LÔ0LØ+9Ý.3°C¸Ô4FÑ.GÔ.GÝ-0°°nÔ1EÑ-FÔ-FÝ16°tÐ<MÔ7NÑ1OÔ1OØ,7Ý/4°T¸.Ô5IÑ/JÔ/JØ+:à&¨!Ò+Ð+ð )WÐ(VàDÝ36°u±:´:ðð ðGQð Qð Qð Qñ Qô Qð QðR	ð R	ð R	ð R	ñ R	ô R	ð R	ð R	ðQð Qð Qð Qøøøð Qð Qð Qð Qð QðR	ð R	ð R	ñ R	ô R	ð R	ð R	ð R	ð R	ð R	ð R	ð R	øøøð R	ð R	ð R	ð R	ð R	ð R	s5   •I)ªHIÈ7I)ÉI	ÉI)ÉI	ÉI)É)I-É0I-)NNN)r   r   r	   r   r
   r   r   r   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__r8   © ó    r7   r   r      sE   € € € € € Ø-Ð-ð !%Ø"Ø!%ð	Yð Yð Yð Yð Yð Yð Yr>   r   )	Ú
__future__r   ÚloggingÚtypingr   Ú	getLoggerr9   Úloggerr   r=   r>   r7   ú<module>rD      s…   ðØ "Ð "Ð "Ð "Ð "Ð "à (ð €€€Ø Ð Ð Ð Ð Ð à	ˆÔ	˜8Ñ	$Ô	$€ð\ð \ð \ð \ð \ñ \ô \ð \ð \ð \r>   