§
    2š˜jG  ã                  óÞ  — d dl mZ 	 d dlZd dlZd dlZd dlZd dlZd dl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  ej        ej        d	 ej        ej        ¦  «        g¬
¦  «          ej        d¦  «        Z G d„ d¦  «        Zedk    �rÕ e¦   «         Ze                     ¦   «          e                      ¦   «         Z! e"d¦  «          e"d¦  «          e"d¦  «          e"de!d         › d�¦  «          e"de!d         d›d�¦  «          e"de!d         d›d�¦  «          e"de!d         d›d�¦  «          e"d¦  «          e"d¦  «          e"de!d          d!         d"›d#e!d          d$         d%›d�¦  «          e"d&¦  «          e"de!d'         d!         d"›d#e!d'         d$         d%›d�¦  «          e"d(¦  «          e"de!d)         d!         d"›d#e!d)         d$         d%›d�¦  «          e"d*¦  «          e"de!d+         d!         d"›d#e!d+         d$         d%›d�¦  «          e"d,¦  «          e"de!d-         d!         d"›d#e!d-         d$         d%›d�¦  «          e"d¦  «         dS dS ).é    )ÚannotationsN)ÚDecimal)ÚAny)ÚErpDatabaseClient)Ú
to_decimal)ÚFourPillarsAccountingEngine)ÚInvoiceProcessingServicez'%(asctime)s [%(levelname)s] %(message)s)ÚlevelÚformatÚhandlersÚAutoProcessInvoicesc                  ó<   — e Zd Zd„ Zd„ Zdd„Zddd
„Zdd„Zdd„ZdS )ÚBatchInvoiceProcessorc                ó²   — t          ¦   «         | _        t          ¦   «         | _        d | _        d | _        d| _        i | _        |                      ¦   «          d S )NÚ )	r	   Úsvcr   ÚdbÚ	gdt_tokenÚgdt_cfgÚgdt_passwordÚ	gdt_extraÚ_init_gdt_config)Úselfs    ú=C:\Projects\DSCons\scripts\auto_process_all_input_invoices.pyÚ__init__zBatchInvoiceProcessor.__init__!   sQ   € Ý+Ñ-Ô-ˆŒÝ#Ñ%Ô%ˆŒØ%)ˆŒØ.2ˆŒØ!#ˆÔØ)+ˆŒØ×ÒÑÔÐÐÐó    c                ó6  — | j                              ¦   «         }t          d„ |D ¦   «         d ¦  «        | _        | j        st                               d¦  «         d S | j                             ¦   «         5 }|                     ¦   «         5 }| 	                    d| j        d         f¦  «         | 
                    ¦   «         }|d         | _        |                     d¦  «        pi | _        d d d ¦  «         n# 1 swxY w Y   d d d ¦  «         d S # 1 swxY w Y   d S )Nc              3  ó2   K  — | ]}|d          dk    ¯|V — ŒdS )Úservice_typeÚ
gdt_portalN© )Ú.0Úcs     r   ú	<genexpr>z9BatchInvoiceProcessor._init_gdt_config.<locals>.<genexpr>,   s1   è è € ÐUÐU 1°1°^Ô3DÈÒ3TÐ3T˜QÐ3TÐ3TÐ3TÐ3TÐUÐUr   uI   KhÃ´ng tÃ¬m tháº¥y cáº¥u hÃ¬nh GDT portal trong erp_invoice_sync_configs.zNSELECT password_hash, extra_config FROM erp_invoice_sync_configs WHERE id = %sÚidÚpassword_hashÚextra_config)r   Úget_sync_configsÚnextr   ÚloggerÚwarningr   Úget_connectionÚcursorÚexecuteÚfetchoner   Úgetr   )r   ÚconfigsÚconnÚcurÚrows        r   r   z&BatchInvoiceProcessor._init_gdt_config*   s‡  € Ø”(×+Ò+Ñ-Ô-ˆÝÐUÐU¨ÐUÑUÔUÐW[Ñ\Ô\ˆŒØŒ|ð 	Ý�NŠNÐfÑgÔgÐgØˆFàŒW×#Ò#Ñ%Ô%ð 	?¨Ø—’‘”ð ? #Ø—’ØdØ”\ $Ô'Ð)ñô ð ð —l’l‘n”n�Ø$'¨Ô$8�Ô!Ø!$§¢¨Ñ!8Ô!8Ð!>¸B�”ð?ð ?ð ?ñ ?ô ?ð ?ð ?ð ?ð ?ð ?ð ?øøøð ?ð ?ð ?ð ?ð	?ð 	?ð 	?ñ 	?ô 	?ð 	?ð 	?ð 	?ð 	?ð 	?ð 	?ð 	?øøøð 	?ð 	?ð 	?ð 	?ð 	?ð 	?s7   Á5DÂ
A C6Ã*DÃ6C:	Ã:DÃ=C:	Ã>DÄDÄDÚreturnú
str | Nonec                óü  — | j         r| j         S | j        sd S t                               d¦  «         | j                             | j        d         | j        d         | j        | j        ¬¦  «        }|                     d¦  «        dk    rC|                     d¦  «        r.|d         | _         t                               d¦  «         | j         S t           	                    d	|                     d
¦  «        › �¦  «         d S )NuZ   Ä�ang xÃ¡c thá»±c vá»›i Cá»•ng Tá»•ng Cá»¥c Thuáº¿ Ä‘á»ƒ láº¥y Token phiÃªn lÃ m viá»‡c...Útax_codeÚusername)r'   ÚstatusÚsuccessÚtokenu5   XÃ¡c thá»±c GDT thÃ nh cÃ´ng! Token Ä‘Ã£ sáºµn sÃ ng.u   Lá»—i xÃ¡c thá»±c GDT: Úmessage)
r   r   r*   Úinfor   Ú_authenticate_gdt_portalr   r   r0   Úerror)r   Úauths     r   Úensure_tokenz"BatchInvoiceProcessor.ensure_token;   sí   € ØŒ>ð 	"Ø”>Ð!ØŒ|ð 	Ø�4å�ŠÐpÑqÔqÐqØŒx×0Ò0ØŒL˜Ô$ØŒL˜Ô$ØÔØœð	 1ñ 
ô 
ˆð �8Š8�HÑÔ Ò*Ð*¨t¯xªx¸Ñ/@Ô/@Ð*Ø! 'œ]ˆDŒNÝ�KŠKÐOÑPÔPÐPØ”>Ð!å�LŠLÐH°4·8²8¸IÑ3FÔ3FÐHÐHÑIÔIÐIØ�4r   NÚlimitú
int | NoneÚintc                óò  — | j                              ¦   «         5 }|                     ¦   «         5 }d}|r|d|› �z  }|                     |d¦  «         |                     ¦   «         }ddd¦  «         n# 1 swxY w Y   ddd¦  «         n# 1 swxY w Y   t          |¦  «        }t                               d|› �¦  «         |dk    rdS |                      ¦   «         }|st           	                    d¦  «         dS t          j        ¦   «         }d|_        t          j        |_        d	|› �d
ddœ}	d}
t          |d¦  «        D �]”\  }}t!          |d         ¦  «        }t!          |d         ¦  «        }t!          |d         ¦  «        }t!          |d         ¦  «        }t!          |                     dd¦  «        ¦  «        }|                     |¦  «        }|                     d¦  «        pd}d|› d|› d|› d|› �}t(          j                             ||	¬¦  «        }t/          d¦  «        D �]«}	 t(          j                             |d|¬¦  «        5 }t3          j        |                     ¦   «                              d¦  «        ¦  «        }ddd¦  «         n# 1 swxY w Y   |                     dg ¦  «        }|rR|                      |||¦  «         |
dz  }
|dz  dk    s||k    r't                               d |› d!|› d"|› d#|
› d$�	¦  «          nÊ# t(          j	        j        $ r€}|j        d%v rl|dk    rft                                d&¦  «         d| _!        |                      ¦   «         }|r/d	|› �|	d'<   t(          j                             ||	¬¦  «        }Y d}~�ŒlY d}~ n;d}~wtD          $ r+}|dk    rtG          j$        d(¦  «         Y d}~�ŒŸY d}~ nd}~ww xY w�Œ–t                               d)|
› d!|› d*�¦  «         |
S )+zIFetch line items from GDT for all input invoices currently missing items.aº  
                    SELECT i.id, i.invoice_number, i.invoice_series, i.seller_tax_code, i.seller_name, i.template_code, i.issue_date, i.total_amount_vnd
                    FROM erp_invoices i
                    LEFT JOIN erp_invoice_items it ON i.id = it.invoice_id
                    WHERE (i.buyer_tax_code = %s OR i.direction = %s)
                      AND it.id IS NULL
                    ORDER BY i.issue_date DESC
                z LIMIT ©Ú
0202111150ÚinputNuU   Tá»•ng sá»‘ hÃ³a Ä‘Æ¡n Ä‘áº§u vÃ o cáº§n lÃ m giÃ u chi tiáº¿t dÃ²ng hÃ ng tá»« GDT: r   u>   KhÃ´ng cÃ³ token GDT, bá»� qua bÆ°á»›c lÃ m giÃ u dá»¯ liá»‡u.FzBearer z9Mozilla/5.0 (Windows NT 10.0; Win64; x64) DSConsERP/2.4.0z!application/json, text/plain, */*)ÚAuthorizationz
User-AgentÚAccepté   r%   Úinvoice_numberÚinvoice_seriesÚseller_tax_codeÚtemplate_codeÚ1Ú0z@https://hoadondientu.gdt.gov.vn/api/query/invoices/detail?nbmst=z&khhdon=z&shdon=z
&khmshdon=)Úheadersé   é   )ÚtimeoutÚcontextzutf-8Úhdhhdvué   ú[ú/u   ] Ä�Ã£ lÃ m giÃ u u    HÄ� (ThÃ nh cÃ´ng: ú))i‘  i“  u7   Token GDT háº¿t háº¡n, Ä‘ang tá»± Ä‘á»™ng lÃ m má»›i...rJ   g      à?u4   HoÃ n thÃ nh lÃ m giÃ u chi tiáº¿t dÃ²ng hÃ ng GDT: u    hÃ³a Ä‘Æ¡n thÃ nh cÃ´ng.)%r   r,   r-   r.   ÚfetchallÚlenr*   r>   rB   r@   ÚsslÚcreate_default_contextÚcheck_hostnameÚ	CERT_NONEÚverify_modeÚ	enumerateÚstrr0   ÚremoveprefixÚlstripÚurllibÚrequestÚRequestÚrangeÚurlopenÚjsonÚloadsÚreadÚdecodeÚ_save_raw_items_to_dbÚ	HTTPErrorÚcoder+   r   Ú	ExceptionÚtimeÚsleep)r   rC   r2   r3   ÚsqlÚinvoicesÚtotal_to_enrichr<   ÚctxrS   Úsuccess_countÚidxÚinvÚinv_idÚinv_numÚseriesÚ
seller_taxÚtmplÚ	khh_cleanÚshdonÚurlÚreqÚattemptÚresÚraw_dÚ	raw_itemsÚheÚ	new_tokenÚes                                r   Úenrich_invoices_from_gdtz.BatchInvoiceProcessor.enrich_invoices_from_gdtP   s^  € àŒW×#Ò#Ñ%Ô%ð 	*¨Ø—’‘”ð * #ð�ð ð -ØÐ, UÐ,Ð,Ñ,�CØ—’˜CÐ!8Ñ9Ô9Ð9ØŸ<š<™>œ>�ð*ð *ð *ñ *ô *ð *ð *ð *ð *ð *ð *øøøð *ð *ð *ð *ð	*ð 	*ð 	*ñ 	*ô 	*ð 	*ð 	*ð 	*ð 	*ð 	*ð 	*øøøð 	*ð 	*ð 	*ð 	*õ ˜h™-œ-ˆÝ�ŠÐ}Ðl{Ð}Ð}Ñ~Ô~Ð~Ø˜aÒÐØ�1à×!Ò!Ñ#Ô#ˆØð 	Ý�LŠLÐYÑZÔZÐZØ�1åÔ(Ñ*Ô*ˆØ"ˆÔÝœ-ˆŒð / uÐ.Ð.ØUØ9ð
ð 
ˆð ˆÝ! (¨AÑ.Ô.ð &	ñ &	‰HˆC�Ý˜˜Tœ‘^”^ˆFÝ˜#Ð.Ô/Ñ0Ô0ˆGÝ˜Ð-Ô.Ñ/Ô/ˆFÝ˜SÐ!2Ô3Ñ4Ô4ˆJÝ�s—w’w˜°Ñ4Ô4Ñ5Ô5ˆDØ×+Ò+¨DÑ1Ô1ˆIØ—N’N 3Ñ'Ô'Ð.¨3ˆEð SÐU_ð  Sð  SÐirð  Sð  Sð  |Að  Sð  Sð  MQð  Sð  SˆCÝ”.×(Ò(¨°gÐ(Ñ>Ô>ˆCå  ™8œ8ð ñ �ðÝœ×/Ò/°¸RÈÐ/ÑMÔMð GÐQTÝ $¤
¨3¯8ª8©:¬:×+<Ò+<¸WÑ+EÔ+EÑ FÔ F˜ðGð Gð Gñ Gô Gð Gð Gð Gð Gð Gð Gøøøð Gð Gð Gð Gð !&§	¢	¨)°RÑ 8Ô 8�IØ ð @Ø×2Ò2°6¸9ÀeÑLÔLÐLØ%¨Ñ*˜Ø ™8 qš=˜=¨C°?Ò,BÐ,BÝ"ŸKšKÐ(~¨CÐ(~Ð(~°/Ð(~Ð(~ÐUXÐ(~Ð(~Ðn{Ð(~Ð(~Ð(~ÑÔÐØ�EøÝ”|Ô-ð 	ð 	ð 	Ø”w *Ð,Ð,°¸A²°ÝŸšÐ'`ÑaÔaÐaØ)-˜œØ$(×$5Ò$5Ñ$7Ô$7˜	Ø$ð %Ø7LÀÐ7LÐ7L˜G OÑ4Ý"(¤.×"8Ò"8¸ÀgÐ"8Ñ"NÔ"N˜CØ$˜H˜H˜H™HØ�E�E�E�E�EøøøøÝ ð ð ð Ø !’|�|Ýœ
 3™œ˜Ø ˜˜˜™Ø�E�E�E�E�Eøøøøð	øøøùõ 	�Šð  FÈ=ð  Fð  FÐ[jð  Fð  Fð  Fñ  	Gô  	Gð  	GØÐs~   šB	¯7A2Á&B	Á2A6	Á6B	Á9A6	Á:B	Â	BÂBÈ+"L
É:JÊL
ÊJÊL
ÊJÊA-L
Ì
OÌA/NÎOÎ&OÏOÚ
invoice_idre   rŠ   ú
list[dict]r‰   Údictc                óŒ  — | j                              ¦   «         5 }|                     ¦   «         5 }|                     dt	          j        |d¬¦  «        |f¦  «         |                     d|f¦  «         d}|D �]ˆ}t          |                     d¦  «        pd¦  «        }t          |                     d¦  «        pd	¦  «         	                    ¦   «         }	t          |                     d
¦  «        p|                     d¦  «        pd¦  «         	                    ¦   «         }
t          |                     d¦  «        pd¦  «         	                    ¦   «         }t          |                     d¦  «        t          d¦  «        ¬¦  «        }t          |                     d¦  «        t          d¦  «        ¬¦  «        }t          |                     d¦  «        t          d¦  «        ¬¦  «        }t          |                     d¦  «        pd¦  «                             dd¦  «         	                    ¦   «         }	 t          |t          d¦  «        ¬¦  «        }n# t          $ r t          d¦  «        }Y nw xY w|                     d¦  «        �"t          |                     d¦  «        ¦  «        n||z  t          d¦  «        z  }||z   }| j                             |	|
¦  «        }|                     ||||	|
||||||||f¦  «         �ŒŠ|                     ¦   «          d d d ¦  «         n# 1 swxY w Y   d d d ¦  «         d S # 1 swxY w Y   d S )NzÁ
                    UPDATE erp_invoices
                    SET xml_raw_content = %s,
                        updated_at = CURRENT_TIMESTAMP
                    WHERE id = %s;
                F)Úensure_asciiz4DELETE FROM erp_invoice_items WHERE invoice_id = %s;aÎ  
                    INSERT INTO erp_invoice_items (
                        invoice_id, item_order, item_name, item_code, unit, quantity,
                        unit_price_vnd, amount_before_vat_vnd, vat_rate_percent, vat_amount_vnd,
                        total_item_amount_vnd, cost_category
                    ) VALUES (
                        %s, %s, %s, %s, %s, %s,
                        %s, %s, %s, %s, %s, %s
                    );
                ÚsttrL   Útenu   HÃ ng hÃ³a / Dá»‹ch vá»¥Úmhhdvur%   r   Údvtinhu   GÃ³iÚsluongú0.0000)ÚdefaultÚdgiaÚthtienÚltsuatz8%ú%z8.0000Útthueéd   )r   r,   r-   r.   rm   ÚdumpsrE   r0   re   Ústripr   r   Úreplacert   r   Úcategorize_item_costÚcommit)r   r�   rŠ   r‰   r2   r3   Úinsert_item_sqlÚitmr”   Únamers   ÚunitÚqtyÚ
unit_priceÚamount_beforeÚvat_strÚvat_rateÚvat_amtÚtot_amtÚcost_cats                       r   rq   z+BatchInvoiceProcessor._save_raw_items_to_db¡   sÃ  € ØŒW×#Ò#Ñ%Ô%ð B	¨Ø—’‘”ð A #à—’ðõ ”Z °EÐ:Ñ:Ô:¸JÐGñô ð ð —’ÐRÐU_ÐTaÑbÔbÐbð	#�ð %ð 'ñ '�CÝ˜cŸgšg e™nœnÐ1°Ñ2Ô2�CÝ˜sŸwšw u™~œ~ÐKÐ1KÑLÔL×RÒRÑTÔT�DÝ˜sŸwšw xÑ0Ô0ÐG°C·G²G¸D±M´MÐGÀRÑHÔH×NÒNÑPÔP�DÝ˜sŸwšw xÑ0Ô0Ð:°FÑ;Ô;×AÒAÑCÔC�DÝ$ S§W¢W¨XÑ%6Ô%6ÅÈÑ@QÔ@QÐRÑRÔR�CÝ!+¨C¯GªG°F©O¬OÅWÈXÑEVÔEVÐ!WÑ!WÔ!W�JÝ$.¨s¯wªw°xÑ/@Ô/@Í'ÐRZÑJ[ÔJ[Ð$\Ñ$\Ô$\�Må! #§'¢'¨(Ñ"3Ô"3Ð";°tÑ<Ô<×DÒDÀSÈ"ÑMÔM×SÒSÑUÔU�Gð5Ý#-¨g½wÀxÑ?PÔ?PÐ#QÑ#QÔ#Q˜˜øÝ$ð 5ð 5ð 5Ý#*¨8Ñ#4Ô#4˜˜˜ð5øøøð
 Ÿ7š7 7Ñ+Ô+Ð7õ # 3§7¢7¨7Ñ#3Ô#3Ñ4Ô4Ð4à+¨hÑ6½À¹¼ÑEð ð
 ,¨gÑ5�GØ#œx×<Ò<¸TÀ4ÑHÔH�Hà—K’KØ'à&ØØ Ø Ø ØØ&Ø)Ø$Ø#Ø#Ø$ðñô ð ñ ð" —’‘”�ðCAð Að Añ Aô Að Að Að Að Að Að Aøøøð Að Að Að AðB	ð B	ð B	ñ B	ô B	ð B	ð B	ð B	ð B	ð B	ð B	ð B	øøøð B	ð B	ð B	ð B	ð B	ð B	sZ   šL9¯HL!È3IÉL!ÉI.	É+L!É-I.	É.B'L!ÌL9Ì!L%	Ì%L9Ì(L%	Ì)L9Ì9L=Í L=údict[str, Any]c                óD
  — t                                d¦  «         | j                             ¦   «         5 }|                     ¦   «         5 }|                     dd¦  «         |                     ¦   «         }|                     dd¦  «         |                     ¦   «         }ddd¦  «         n# 1 swxY w Y   ddd¦  «         n# 1 swxY w Y   i }|D ];}t          |d         ¦  «        }||vrg ||<   ||                              |¦  «         Œ<t          |¦  «        dt          d¦  «        d	œdt          d¦  «        d	œdt          d¦  «        d	œdt          d¦  «        d	œdt          d¦  «        d	œt          d¦  «        t          d¦  «        t          d¦  «        d
œ	}| j                             ¦   «         5 }|                     ¦   «         5 }|D �]õ}	t          |	d         ¦  «        }
|                     |
g ¦  «        }t          t          |	                     d¦  «        pd¦  «        ¦  «        }t          t          |	                     d¦  «        pd¦  «        ¦  «        }t          t          |	                     d¦  «        pd¦  «        ¦  «        }t          j        |	|¦  «        }|d         }|dk    r-|d         dxx         dz  cc<   |d         dxx         |z  cc<   nÅ|dk    r-|d         dxx         dz  cc<   |d         dxx         |z  cc<   n’|dk    r-|d         dxx         dz  cc<   |d         dxx         |z  cc<   n_|dk    r-|d         dxx         dz  cc<   |d         dxx         |z  cc<   n,|d         dxx         dz  cc<   |d         dxx         |z  cc<   |dxx         |z  cc<   |dxx         |z  cc<   |dxx         |z  cc<   |d         }|d         }|d         }|d         }|d         }d |› d!|› d"|› d#|› d$|› �
}|                     d%||
f¦  «         |	                     d&¦  «        }|                     d'|f¦  «         |                     ¦   «         }|s\|dk    rV|                     d(||	                     d)¦  «        d*d+|d,k    rd-nd.||	                     d/¦  «        d0|› d"|› d1|› �d2f	¦  «         �Œ÷|                     ¦   «          ddd¦  «         n# 1 swxY w Y   ddd¦  «         n# 1 swxY w Y   t                                d3¦  «         |S )4zMClassify and generate double-entry accounting entries for all input invoices.ut   Báº¯t Ä‘áº§u phÃ¢n loáº¡i 4 Trá»¥ Cá»™t vÃ  Ä‘á»‹nh khoáº£n káº¿ toÃ¡n kÃ©p cho toÃ n bá»™ hÃ³a Ä‘Æ¡n Ä‘áº§u vÃ o...zÌ
                    SELECT i.*
                    FROM erp_invoices i
                    WHERE i.buyer_tax_code = %s OR i.direction = %s
                    ORDER BY i.issue_date DESC;
                rG   a  
                    SELECT it.*
                    FROM erp_invoice_items it
                    JOIN erp_invoices i ON it.invoice_id = i.id
                    WHERE i.buyer_tax_code = %s OR i.direction = %s
                    ORDER BY it.invoice_id, it.item_order;
                Nr�   r   r™   )ÚcountÚamount)	Útotal_processedÚpillar_1Úpillar_2Úpillar_3Úpillar_4Úfinancial_adminÚtotal_pretaxÚ	total_vatÚtotal_amountr%   Útotal_amount_vndÚsubtotal_amount_vndÚvat_amount_vndÚpillar_coder·   r´   rL   rµ   r¸   r¹   rº   r»   r¼   r½   r¾   ÚpillarÚdebit_accountÚcredit_accountÚcost_category_summaryÚpayment_requirementrZ   u   ] [Ä�á»‹nh khoáº£n: Ná»£ TK u   , Ná»£ TK 1331 / CÃ³ TK z] [z] zË
                        UPDATE erp_invoices
                        SET notes = %s,
                            updated_at = CURRENT_TIMESTAMP
                        WHERE id = %s;
                    rM   zÄ
                        SELECT id FROM erp_financial_transactions
                        WHERE invoice_number = %s AND direction = 'outflow'
                        LIMIT 1;
                    a  
                            INSERT INTO erp_financial_transactions (
                                amount, transaction_date, direction,
                                transaction_type, payment_method, invoice_number,
                                beneficiary_or_payer, notes, accounting_status
                            ) VALUES (
                                %s, %s, %s,
                                %s, %s, %s,
                                %s, %s, %s
                            );
                        Ú
issue_dateÚoutflowÚINVOICE_PAYABLEi -1ÚUNCÚTIEN_MAT_UNCÚseller_nameu   BÃºt toÃ¡n Ná»£ TK z - ÚRECORDEDuY   Ä�Ã£ hoÃ n táº¥t phÃ¢n loáº¡i vÃ  Ä‘á»‹nh khoáº£n káº¿ toÃ¡n 100% hÃ³a Ä‘Æ¡n Ä‘áº§u vÃ o!)r*   r>   r   r,   r-   r.   r]   re   Úappendr^   r   r0   r   Úclassify_invoice_and_accountr/   r¥   )r   r2   r3   rx   Ú	all_itemsÚitems_by_invÚitÚiidÚstatsr}   r~   ÚitemsÚtotÚpretaxÚvatÚclassificationÚp_codeÚpillar_titleÚdebitÚcreditÚsummaryÚpay_reqÚstructured_noter   Ú	exists_txs                            r   Ú'classify_and_account_all_input_invoicesz=BatchInvoiceProcessor.classify_and_account_all_input_invoicesæ   sd  € å�Šð  Kñ  	Lô  	Lð  	LàŒW×#Ò#Ñ%Ô%ð 	+¨Ø—’‘”ð + #à—’ð ð
 -ñ.ô .ð .ð Ÿ<š<™>œ>�ð —’ð ð -ñ.ô .ð .ð  ŸLšL™NœN�	ð%+ð +ð +ñ +ô +ð +ð +ð +ð +ð +ð +øøøð +ð +ð +ð +ð	+ð 	+ð 	+ñ 	+ô 	+ð 	+ð 	+ð 	+ð 	+ð 	+ð 	+øøøð 	+ð 	+ð 	+ð 	+ð, /1ˆØð 	)ð 	)ˆBÝ�b˜Ô&Ñ'Ô'ˆCØ˜,Ð&Ð&Ø$&�˜SÑ!Ø˜Ô×$Ò$ RÑ(Ô(Ð(Ð(õ  # 8™}œ}Ø"#­w°xÑ/@Ô/@ÐAÐAØ"#­w°xÑ/@Ô/@ÐAÐAØ"#­w°xÑ/@Ô/@ÐAÐAØ"#­w°xÑ/@Ô/@ÐAÐAØ)*µg¸hÑ6GÔ6GÐHÐHÝ# HÑ-Ô-Ý  Ñ*Ô*Ý# HÑ-Ô-ð

ð 

ˆð ŒW×#Ò#Ñ%Ô%ð ]	¨Ø—’‘”ð \ #Ø#ð Yñ Y�CÝ   T¤™^œ^�FØ(×,Ò,¨V°RÑ8Ô8�EÝ!¥# c§g¢gÐ.@Ñ&AÔ&AÐ&FÀQÑ"GÔ"GÑHÔH�CÝ$¥S¨¯ªÐ1FÑ)GÔ)GÐ)LÈ1Ñ%MÔ%MÑNÔN�FÝ!¥# c§g¢gÐ.>Ñ&?Ô&?Ð&DÀ1Ñ"EÔ"EÑFÔF�Cå%@Ô%]Ð^aÐchÑ%iÔ%i�Nà+¨MÔ:�FØ Ò+Ð+Ø˜jÔ)¨'Ð2Ð2Ô2°aÑ7Ð2Ð2Ñ2Ø˜jÔ)¨(Ð3Ð3Ô3°sÑ:Ð3Ð3Ñ3Ð3Ø :Ò-Ð-Ø˜jÔ)¨'Ð2Ð2Ô2°aÑ7Ð2Ð2Ñ2Ø˜jÔ)¨(Ð3Ð3Ô3°sÑ:Ð3Ð3Ñ3Ð3Ø :Ò-Ð-Ø˜jÔ)¨'Ð2Ð2Ô2°aÑ7Ð2Ð2Ñ2Ø˜jÔ)¨(Ð3Ð3Ô3°sÑ:Ð3Ð3Ñ3Ð3Ø :Ò-Ð-Ø˜jÔ)¨'Ð2Ð2Ô2°aÑ7Ð2Ð2Ñ2Ø˜jÔ)¨(Ð3Ð3Ô3°sÑ:Ð3Ð3Ñ3Ð3àÐ/Ô0°Ð9Ð9Ô9¸QÑ>Ð9Ð9Ñ9ØÐ/Ô0°Ð:Ð:Ô:¸cÑAÐ:Ð:Ñ:à˜.Ð)Ð)Ô)¨VÑ3Ð)Ð)Ñ)Ø˜+Ð&Ð&Ô&¨#Ñ-Ð&Ð&Ñ&Ø˜.Ð)Ð)Ô)¨SÑ0Ð)Ð)Ñ)ð $2°(Ô#;�LØ*¨?Ô;�EØ+Ð,<Ô=�FØ,Ð-DÔE�GØ,Ð-BÔC�Gð1˜Lð 1ð 1Àeð 1ð 1Ðekð 1ð 1Ø#ð1ð 1Ø'.ð1ð 1ð $ð —K’Kðð )¨&Ð1ñô ð ð "ŸgšgÐ&6Ñ7Ô7�GØ—K’Kðð
 !˜
ñô ð ð !$§¢¡¤�Ià$ð ¨¨qª¨ØŸšð
ð !$Ø #§¢¨Ñ 5Ô 5Ø )Ø 1Ø),°
Ò):Ð):  ÀØ 'Ø #§¢¨Ñ 6Ô 6Ø n°eÐ nÐ nÐU[Ð nÐ nÐ`lÐ nÐ nØ *ð
ñô ð ùð2 —’‘”�ðy\ð \ð \ñ \ô \ð \ð \ð \ð \ð \ð \øøøð \ð \ð \ð \ð]	ð ]	ð ]	ñ ]	ô ]	ð ]	ð ]	ð ]	ð ]	ð ]	ð ]	øøøð ]	ð ]	ð ]	ð ]	õ~ 	�ŠÐoÑpÔpÐpØˆsm   ´CÁ	AB*ÂCÂ*B.	Â.CÂ1B.	Â2CÃCÃCÆ5S;Ç
LS$ÓS;Ó$S(	Ó(S;Ó+S(	Ó,S;Ó;S?ÔS?)r5   r6   )N)rC   rD   r5   rE   )r�   re   rŠ   r�   r‰   r‘   )r5   r²   )	Ú__name__Ú
__module__Ú__qualname__r   r   rB   rŽ   rq   rã   r!   r   r   r   r       s˜   € € € € € ð ð  ð  ð?ð ?ð ?ð"ð ð ð ð*Oð Oð Oð Oð OðbCð Cð Cð CðJMð Mð Mð Mð Mð Mr   r   Ú__main__zQ
================================================================================uR   BÃ�O CÃ�O Tá»”NG Há»¢P Káº¾T QUáº¢ Háº CH TOÃ�N 4 TRá»¤ Cá»˜T Ä�áº¦U VÃ€O (DSCons)zP================================================================================u2   Tá»•ng sá»‘ hÃ³a Ä‘Æ¡n Ä‘áº§u vÃ o Ä‘Ã£ xá»­ lÃ½: r¶   u    hÃ³a Ä‘Æ¡nu,   Tá»•ng tiá»�n hÃ ng trÆ°á»›c thuáº¿:        r¼   z,.0fu    VNÄ�u*   Tá»•ng thuáº¿ GTGT Ä‘áº§u vÃ o (TK 1331): r½   u(   Tá»•ng giÃ¡ trá»‹ thanh toÃ¡n (TK 331): r¾   zP--------------------------------------------------------------------------------uH   1. Trá»¥ Cá»™t 1 (Thi cÃ´ng XÃ¢y láº¯p & Thá»§y lá»£i - TK 621/622/627):u      -> Sá»‘ lÆ°á»£ng: r·   r´   z>4u    HÄ� | Tá»•ng giÃ¡ trá»‹: rµ   z>18,.0fuF   2. Trá»¥ Cá»™t 2 (Váº­n táº£i Xe Ben & Logistics CÆ¡ Giá»›i - TK 154):r¸   uJ   3. Trá»¥ Cá»™t 3 (Cho thuÃª Ca mÃ¡y & Báº£o dÆ°á»¡ng CÆ¡ giá»›i - TK 623):r¹   uJ   4. Trá»¥ Cá»™t 4 (Mua bÃ¡n Váº­t tÆ° ThÆ°Æ¡ng máº¡i & San láº¥p - TK 156):rº   uA   5. Quáº£n lÃ½ Doanh nghiá»‡p & Chi phÃ­ NgÃ¢n hÃ ng (TK 642/635):r»   )#Ú
__future__r   rm   Úloggingr_   Úsysru   Úurllib.errorrh   Úurllib.requestÚdecimalr   Útypingr   Úapp.core.postgres.erp_clientr   Ú:app.modules.invoices.application.invoice_processing.commonr   ÚRapp.modules.invoices.application.invoice_processing.four_pillars_accounting_enginer   Ú;app.modules.invoices.application.invoice_processing_servicer	   ÚbasicConfigÚINFOÚStreamHandlerÚstdoutÚ	getLoggerr*   r   rä   Ú	processorrŽ   rã   ÚresultsÚprintr!   r   r   ú<module>rû      sÓ  ðØ "Ð "Ð "Ð "Ð "Ð "ð mà €€€Ø €€€Ø 
€
€
€
Ø 
€
€
€
Ø €€€Ø Ð Ð Ð Ø Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð à :Ð :Ð :Ð :Ð :Ð :Ø QÐ QÐ QÐ QÐ QÐ Qðð ð ð ð ð ðð ð ð ð ð ð €Ô Ø
Œ,Ø4Ø#ˆgÔ# C¤JÑ/Ô/Ð0ðñ ô ð ð
 
ˆÔ	Ð0Ñ	1Ô	1€ðSð Sð Sð Sð Sñ Sô Sð Sðl
 ˆzÒÑØ%Ð%Ñ'Ô'€Ið ×&Ò&Ñ(Ô(Ð(ð ×?Ò?ÑAÔA€Gà	€Eˆ/ÑÔÐØ	€EÐ
^Ñ_Ô_Ð_Ø	€Eˆ(�O„O€OØ	€EÐ
f¸wÐGXÔ?YÐ
fÐ
fÐ
fÑgÔgÐgØ	€EÐ
\¸ÀÔ9PÐ
\Ð
\Ð
\Ð
\Ñ]Ô]Ð]Ø	€EÐ
W°w¸{Ô7KÐ
WÐ
WÐ
WÐ
WÑXÔXÐXØ	€EÐ
X°W¸^Ô5LÐ
XÐ
XÐ
XÐ
XÑYÔYÐYØ	€Eˆ(�O„O€OØ	€EÐ
UÑVÔVÐVØ	€Eð  J '¨*Ô"5°gÔ">ð  Jð  Jð  JÐ]dÐeoÔ]pÐqyÔ]zð  Jð  Jð  Jð  Jñ  Kô  Kð  KØ	€EÐ
SÑTÔTÐTØ	€Eð  J '¨*Ô"5°gÔ">ð  Jð  Jð  JÐ]dÐeoÔ]pÐqyÔ]zð  Jð  Jð  Jð  Jñ  Kô  Kð  KØ	€EÐ
WÑXÔXÐXØ	€Eð  J '¨*Ô"5°gÔ">ð  Jð  Jð  JÐ]dÐeoÔ]pÐqyÔ]zð  Jð  Jð  Jð  Jñ  Kô  Kð  KØ	€EÐ
WÑXÔXÐXØ	€Eð  J '¨*Ô"5°gÔ">ð  Jð  Jð  JÐ]dÐeoÔ]pÐqyÔ]zð  Jð  Jð  Jð  Jñ  Kô  Kð  KØ	€EÐ
NÑOÔOÐOØ	€Eð  X 'Ð*;Ô"<¸WÔ"Eð  Xð  Xð  XÐdkÐl}Ôd~ð  @Hô  eIð  Xð  Xð  Xð  Xñ  Yô  Yð  YØ	€Eˆ(�O„O€O€O€Oð7 Ðr   