§
    FÛ“jK	  ã                   ó,  — d dl Zd dlmc m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Zej                             edd¦  «        Zej                             ed	d
¦  «        Zej                             edd¦  «        Zd„ Zd„ Zd„ Zd„ ZdS )é    N)ÚACBExcelParser)ÚVPBankExcelParser)ÚTCBPdfParser)ÚReconciliationEnginez#C:\Projects\DSCons\Finance\UNC-2026zACB-2026ú 13456888888_SAOKE_TK_202602.xlsxzVPBank 2026úAccountStmt_20260508183117.xlszTechcombank-2026ú!xxxxxxxxxx8888_202601_MONTHLY.pdfc                  ód  — t           j                             t          ¦  «        st	          j        dt          › d�¦  «         t          ¦   «         } t          t          d¦  «        5 }|                      |d¦  «        }d d d ¦  «         n# 1 swxY w Y   t          |¦  «        }d}||k    }|sòt          j        d|fd||f¦  «        dt          j        ¦   «         v st          j        t          ¦  «        rt          j        t          ¦  «        ndd	t          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        nd	t          j        |¦  «        t          j        |¦  «        d
œz  }dd|iz  }t!          t          j        |¦  «        ¦  «        ‚d x}x}}d}|d         }	||	v }|slt          j        d|fd||	f¦  «        t          j        |¦  «        t          j        |	¦  «        dœz  }
dd|
iz  }t!          t          j        |¦  «        ¦  «        ‚d x}x}}	|d         d         }d}	||	k    }|slt          j        d|fd||	f¦  «        t          j        |¦  «        t          j        |	¦  «        dœz  }
dd|
iz  }t!          t          j        |¦  «        ¦  «        ‚d x}x}}	d S )NúSample file ú
 not foundÚrbr   r   ©ú>©z/%(py3)s
{%(py3)s = %(py0)s(%(py1)s)
} > %(py6)sÚlenÚtransactions©Úpy0Úpy1Úpy3Úpy6úassert %(py8)sÚpy8Útransaction_date©Úin©z%(py1)s in %(py4)s©r   Úpy4úassert %(py6)sr   Údebit_amount_vnd©ú>=©z%(py1)s >= %(py4)s)ÚosÚpathÚexistsÚACB_FILEÚpytestÚskipr   ÚopenÚparser   Ú
@pytest_arÚ_call_reprcompareÚ@py_builtinsÚlocalsÚ_should_repr_global_nameÚ	_safereprÚAssertionErrorÚ_format_explanation©ÚparserÚfr   Ú@py_assert2Ú@py_assert5Ú@py_assert4Ú@py_format7Ú@py_format9Ú@py_assert0Ú@py_assert3Ú@py_format5s              úBC:\Projects\DSCons\tests\modules\financial\test_banking_parsers.pyÚtest_acb_parserrA      sC  € ÝŒ7�>Š>�(Ñ#Ô#ð 9ÝŒÐ7¥8Ð7Ð7Ð7Ñ8Ô8Ð8åÑÔ€FÝ	�h˜Ñ	Ô	ð K Ø—|’| AÐ'IÑJÔJˆðKð Kð Kñ Kô Kð Kð Kð Kð Kð Kð Køøøð Kð Kð Kð Kõ ˆ|ÑÔÐ ˜qÐ Ð˜qÒ Ð Ð Ð Õ Ô Ð Ð Ð Ð Ð˜qÐ Ñ Ô Ð Õ Ô Ñ Ô Ð Ð Õ Ô �3Ñ Ô Ð Õ Ô �3Ñ Ô Ð Ð Ð Õ Ô Ñ Ô Ð Ð Õ Ô ˆ|Ñ Ô Ð Õ Ô ˆ|Ñ Ô Ð Ð Õ Ô ÐÑ Ô Õ Ô ˜qÑ Ô Ð Ð Ñ Ð Ð Ð Ð Ð Ñ Ð Õ Õ Ô Ð Ñ Ô Ñ Ô Ð Ð Ð Ð Ð Ð Ð ØÐ0 ¨a¤Ð0Ð Ð0Ð0Ð0Ð0Õ0Ô0Ð0Ð0Ð0Ð0Ð Ð0Ñ0Ô0Õ0Ô0ÐÑ0Ô0Õ0Ô0 Ñ0Ô0Ð0Ð0Ñ0Ð0Ð0Ð0Ð0Ð0Ñ0Ð0Õ0Õ0Ô0Ð0Ñ0Ô0Ñ0Ô0Ð0Ð0Ð0Ð0Ð0Ð0Ð0Ø˜Œ?Ð-Ô.Ð3°!Ð3Ð.°!Ò3Ð3Ð3Ð3Õ3Ô3Ð3Ð3Ð3Ð3Ð.°!Ð3Ñ3Ô3Õ3Ô3Ð.Ñ3Ô3Õ3Ô3°!Ñ3Ô3Ð3Ð3Ñ3Ð3Ð3Ð3Ð3Ð3Ñ3Ð3Õ3Õ3Ô3Ð3Ñ3Ô3Ñ3Ô3Ð3Ð3Ð3Ð3Ð3Ð3Ð3Ð3Ð3ó   Á%BÂBÂBc                  ó`  — t           j                             t          ¦  «        st	          j        dt          › d�¦  «         t          ¦   «         } t          t          d¦  «        5 }|                      |d¦  «        }d d d ¦  «         n# 1 swxY w Y   t          |¦  «        }d}||k    }|sòt          j        d|fd||f¦  «        dt          j        ¦   «         v st          j        t          ¦  «        rt          j        t          ¦  «        ndd	t          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        nd	t          j        |¦  «        t          j        |¦  «        d
œz  }dd|iz  }t!          t          j        |¦  «        ¦  «        ‚d x}x}}|d         d         }d}	||	k    }|slt          j        d|fd||	f¦  «        t          j        |¦  «        t          j        |	¦  «        dœz  }
dd|
iz  }t!          t          j        |¦  «        ¦  «        ‚d x}x}}	d S )Nr   r   r   r   r   r   r   r   r   r   r   r   Úcredit_amount_vndr"   r$   r   r    r   )r%   r&   r'   ÚVPB_FILEr)   r*   r   r+   r,   r   r-   r.   r/   r0   r1   r2   r3   r4   r5   s              r@   Útest_vpbank_parserrF      s›  € ÝŒ7�>Š>�(Ñ#Ô#ð 9ÝŒÐ7¥8Ð7Ð7Ð7Ñ8Ô8Ð8åÑ Ô €FÝ	�h˜Ñ	Ô	ð I Ø—|’| AÐ'GÑHÔHˆðIð Ið Iñ Iô Ið Ið Ið Ið Ið Ið Iøøøð Ið Ið Ið Iõ ˆ|ÑÔÐ ˜qÐ Ð˜qÒ Ð Ð Ð Õ Ô Ð Ð Ð Ð Ð˜qÐ Ñ Ô Ð Õ Ô Ñ Ô Ð Ð Õ Ô �3Ñ Ô Ð Õ Ô �3Ñ Ô Ð Ð Ð Õ Ô Ñ Ô Ð Ð Õ Ô ˆ|Ñ Ô Ð Õ Ô ˆ|Ñ Ô Ð Ð Õ Ô ÐÑ Ô Õ Ô ˜qÑ Ô Ð Ð Ñ Ð Ð Ð Ð Ð Ñ Ð Õ Õ Ô Ð Ñ Ô Ñ Ô Ð Ð Ð Ð Ð Ð Ð Ø˜Œ?Ð.Ô/Ð4°1Ð4Ð/°1Ò4Ð4Ð4Ð4Õ4Ô4Ð4Ð4Ð4Ð4Ð/°1Ð4Ñ4Ô4Õ4Ô4Ð/Ñ4Ô4Õ4Ô4°1Ñ4Ô4Ð4Ð4Ñ4Ð4Ð4Ð4Ð4Ð4Ñ4Ð4Õ4Õ4Ô4Ð4Ñ4Ô4Ñ4Ô4Ð4Ð4Ð4Ð4Ð4Ð4Ð4Ð4Ð4rB   c                  óP  — t           j                             t          ¦  «        st	          j        dt          › d�¦  «         t          d¬¦  «        } t          t          d¦  «        5 }|                      |d¦  «        }d d d ¦  «         n# 1 swxY w Y   t          |¦  «        }d}||k    }|sòt          j        d|fd	||f¦  «        d
t          j        ¦   «         v st          j        t          ¦  «        rt          j        t          ¦  «        nd
dt          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        ndt          j        |¦  «        t          j        |¦  «        dœz  }dd|iz  }t!          t          j        |¦  «        ¦  «        ‚d x}x}}d S )Nr   r   Ú39912136)Úpasswordr   r	   r   r   r   r   r   r   r   r   )r%   r&   r'   ÚTCB_FILEr)   r*   r   r+   r,   r   r-   r.   r/   r0   r1   r2   r3   r4   )r6   r7   r   r8   r9   r:   r;   r<   s           r@   Útest_tcb_pdf_parserrK   &   sò  € ÝŒ7�>Š>�(Ñ#Ô#ð 9ÝŒÐ7¥8Ð7Ð7Ð7Ñ8Ô8Ð8å :Ð.Ñ.Ô.€FÝ	�h˜Ñ	Ô	ð L Ø—|’| AÐ'JÑKÔKˆðLð Lð Lñ Lô Lð Lð Lð Lð Lð Lð Løøøð Lð Lð Lð Lõ ˆ|ÑÔÐ ˜qÐ Ð˜qÒ Ð Ð Ð Õ Ô Ð Ð Ð Ð Ð˜qÐ Ñ Ô Ð Õ Ô Ñ Ô Ð Ð Õ Ô �3Ñ Ô Ð Õ Ô �3Ñ Ô Ð Ð Ð Õ Ô Ñ Ô Ð Ð Õ Ô ˆ|Ñ Ô Ð Õ Ô ˆ|Ñ Ô Ð Ð Õ Ô ÐÑ Ô Õ Ô ˜qÑ Ô Ð Ð Ñ Ð Ð Ð Ð Ð Ñ Ð Õ Õ Ô Ð Ñ Ô Ñ Ô Ð Ð Ð Ð Ð Ð Ð Ð Ð s   Á'B
Â
BÂBc                  ó2  — t          d ¬¦  «        } dddœdddœg}t          j        |                      |¦  «        ¦  «        }d}|d         d	         }||v }|slt	          j        d
|fd||f¦  «        t	          j        |¦  «        t	          j        |¦  «        dœz  }dd|iz  }t          t	          j        |¦  «        ¦  «        ‚d x}x}}|d         d         }d}||k    }|slt	          j        d|fd||f¦  «        t	          j        |¦  «        t	          j        |¦  «        dœz  }dd|iz  }t          t	          j        |¦  «        ¦  «        ‚d x}x}}d}|d         d         }|j	        } |¦   «         }	||	v }|s’t	          j        d
|fd||	f¦  «        t	          j        |¦  «        t	          j        |¦  «        t	          j        |¦  «        t	          j        |	¦  «        dœz  }
dd|
iz  }t          t	          j        |¦  «        ¦  «        ‚d x}x}x}x}}	d S )N)Ú	db_clientzThanh toan HD000123 cong ty Xi ¡ )ÚdescriptionrD   zCONG TY A chuyen tieni † Ú000123r   Úsuggested_invoice_numberr   r   r   r    r   Úconfidence_scoreg      à?r"   r$   ÚAé   Úsuggested_partner_name)zD%(py1)s in %(py8)s
{%(py8)s = %(py6)s
{%(py6)s = %(py4)s.upper
}()
})r   r   r   r   zassert %(py10)sÚpy10)
r   ÚasyncioÚrunÚsuggest_matchesr-   r.   r2   r3   r4   Úupper)ÚengineÚmock_txsÚ	suggestedr=   r>   r8   r?   r;   r9   Ú@py_assert7r<   Ú@py_format11s               r@   Útest_reconciliation_enginer_   0   s   € Ý!¨DÐ1Ñ1Ô1€Fà7ÈfÐUÐUØ/ÀfÐMÐMð€Hõ
 ”˜F×2Ò2°8Ñ<Ô<Ñ=Ô=€IàÐ?�y ”|Ð$>Ô?Ð?ˆ8Ð?Ð?Ð?Ð?Ð?Õ?Ô?Ð?Ð?Ð?Ð?ˆ8Ð?Ð?Ñ?Ô?Õ?Ô?ˆ8Ñ?Ô?Õ?Ô?Ð?Ñ?Ô?Ð?Ð?Ñ?Ð?Ð?Ð?Ð?Ð?Ñ?Ð?Õ?Õ?Ô?Ð?Ñ?Ô?Ñ?Ô?Ð?Ð?Ð?Ð?Ð?Ð?Ð?Ø�QŒ<Ð*Ô+Ð2¨sÐ2Ð+¨sÒ2Ð2Ð2Ð2Õ2Ô2Ð2Ð2Ð2Ð2Ð+¨sÐ2Ñ2Ô2Õ2Ô2Ð+Ñ2Ô2Õ2Ô2¨sÑ2Ô2Ð2Ð2Ñ2Ð2Ð2Ð2Ð2Ð2Ñ2Ð2Õ2Õ2Ô2Ð2Ñ2Ô2Ñ2Ô2Ð2Ð2Ð2Ð2Ð2Ð2Ð2ØÐ@�)˜A”,Ð7Ô8Ð@Ð8Ô>Ð@Ð>Ð>Ñ@Ô@Ð@ˆ3Ð@Ð@Ð@Ð@Ð@Õ@Ô@Ð@Ð@Ð@Ð@ˆ3Ð@Ð@Ñ@Ô@Õ@Ô@ˆ3Ñ@Ô@Õ@Ô@Ð8Ñ@Ô@Õ@Ô@Ð>Ñ@Ô@Õ@Ô@Ð@Ñ@Ô@Ð@Ð@Ñ@Ð@Ð@Ð@Ð@Ð@Ñ@Ð@Õ@Õ@Ô@Ð@Ñ@Ô@Ñ@Ô@Ð@Ð@Ð@Ð@Ð@Ð@Ð@Ð@Ð@Ð@Ð@Ð@Ð@ó    )Úbuiltinsr/   Ú_pytest.assertion.rewriteÚ	assertionÚrewriter-   r)   r%   rV   Ú8app.modules.banking.application.parsers.acb_excel_parserr   Ú;app.modules.banking.application.parsers.vpbank_excel_parserr   Ú6app.modules.banking.application.parsers.tcb_pdf_parserr   Ú5app.modules.banking.application.reconciliation_enginer   Ú
SAMPLE_DIRr&   Újoinr(   rE   rJ   rA   rF   rK   r_   © r`   r@   ú<module>rl      s  ðØ  € € € € € € € € € € € € €€€€Ø 	€	€	€	Ø €€€Ø SÐ SÐ SÐ SÐ SÐ SØ YÐ YÐ YÐ YÐ YÐ YØ OÐ OÐ OÐ OÐ OÐ OØ VÐ VÐ VÐ VÐ VÐ Vð 4€
ØŒ7�<Š<˜
 JÐ0RÑSÔS€ØŒ7�<Š<˜
 MÐ3SÑTÔT€ØŒ7�<Š<˜
Ð$6Ð8[Ñ\Ô\€ð
4ð 
4ð 
4ð	5ð 	5ð 	5ð!ð !ð !ðAð Að Að Að Ar`   