§
    ­ç™j~  ã                   óæ   — d Z ddlZddlmc 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mZ  ej        d¬¦  «        d	„ ¦   «         Z ej        d¬¦  «        d
„ ¦   «         Zd„ Zd„ Zd„ Zd„ Zd„ ZdS )uÉ   Automated Regression Tests for Treasury Settlement Dossier Engine (Máº«u 03.a/TT & Máº«u 03.c/TT Nghá»‹ Ä‘á»‹nh 254/2025/NÄ�-CP).
Strict Zero-Tolerance Synthetic Data & Regression Gate 100% COMPLIANT.
é    N)Ú
TestClient)Ú
create_app)ÚAuthService)ÚTreasurySettlementServiceÚvi_currency_to_wordsÚmodule)Úscopec                  ó<   — t          ¦   «         } t          | ¦  «        S )N)r   r   )Úapps    ú;C:\Projects\DSCons\tests\test_treasury_settlement_engine.pyÚ
app_clientr      s   € å
‰,Œ,€CÝ�c‰?Œ?Ðó    c                  ób   — t          ¦   «         } |                      ddddddœ¦  «        }dd|› �iS )	Nzadmin-idzdirector@dscons.vnÚ
superadminu   Nguyá»…n SÄ© SÆ¡nz$0753d827-90e1-4894-9c16-266ca572c5eb)ÚidÚemailÚroleÚ	full_nameÚ
company_idÚAuthorizationzBearer )r   Úcreate_jwt_token)ÚauthÚtokens     r   Úauth_headersr      sO   € å‰=Œ=€DØ×!Ò!ØØ%ØØ(Ø<ð#ð #ñ ô €Eð Ð. uÐ.Ð.Ð/Ð/r   c                  óÆ  — d} d}t          |¦  «        }| |v }|sÇt          j        d|fd| |f¦  «        t          j        | ¦  «        dt	          j        ¦   «         v st          j        t           ¦  «        rt          j        t           ¦  «        ndt          j        |¦  «        t          j        |¦  «        dœz  }dd|iz  }t          t          j        |¦  «        ¦  «        ‚d	x} x}x}}t          d
¦  «        }d} | |v }|s—t          j        d|fd| |f¦  «        t          j        | ¦  «        dt	          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        nddœz  }dd|iz  }t          t          j        |¦  «        ¦  «        ‚d	x} }d} | |v }|s—t          j        d|fd| |f¦  «        t          j        | ¦  «        dt	          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        nddœz  }dd|iz  }t          t          j        |¦  «        ¦  «        ‚d	x} }d} | |v }|s—t          j        d|fd| |f¦  «        t          j        | ¦  «        dt	          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        nddœz  }dd|iz  }t          t          j        |¦  «        ¦  «        ‚d	x} }d	S )u_   Kiá»ƒm thá»­ hÃ m chuyá»ƒn Ä‘á»•i sá»‘ tiá»�n thÃ nh chá»¯ Tiáº¿ng Viá»‡t chuáº©n hÃ nh chÃ­nh.u   KhÃ´ng Ä‘á»“ngr   ©Úin)z0%(py1)s in %(py7)s
{%(py7)s = %(py3)s(%(py5)s)
}r   )Úpy1Úpy3Úpy5Úpy7úassert %(py9)sÚpy9Ni|bu
   Má»™t tá»·)z%(py1)s in %(py3)sÚw1)r   r   zassert %(py5)sr    u%   sÃ¡u trÄƒm bá»‘n mÆ°Æ¡i bá»‘n triá»‡uu(   ba trÄƒm ba mÆ°Æ¡i nghÃ¬n Ä‘á»“ng cháºµn)	r   Ú
@pytest_arÚ_call_reprcompareÚ	_safereprÚ@py_builtinsÚlocalsÚ_should_repr_global_nameÚAssertionErrorÚ_format_explanation)	Ú@py_assert0Ú@py_assert4Ú@py_assert6Ú@py_assert2Ú@py_format8Ú@py_format10r$   Ú@py_format4Ú@py_format6s	            r   Ú!test_vietnamese_currency_to_wordsr5   #   sf  € àÐ6°AÐ6Õ3°AÑ6Ô6Ð6ÐÐ6Ð6Ð6Ð6Ð6Õ6Ô6Ð6Ð6Ð6Ð6ÐÐ6Ð6Ñ6Ô6Õ6Ô6ÐÑ6Ô6Ð6Õ6Ô6Ñ6Ô6Ð6Ð6Õ6Ô6Õ3Ñ6Ô6Ð6Õ6Ô6Õ3Ñ6Ô6Ð6Ð6Õ6Ô6°AÑ6Ô6Õ6Ô6Ð6Ñ6Ô6Ð6Ð6Ñ6Ð6Ð6Ð6Ð6Ð6Ñ6Ð6Õ6Õ6Ô6Ð6Ñ6Ô6Ñ6Ô6Ð6Ð6Ð6Ð6Ð6Ð6Ð6Ð6Ð6Ý	˜jÑ	)Ô	)€BØÐˆ<˜2ÐÐÐÐÕÔÐÐÐÐˆ<˜2ÐÑÔÕÔˆ<ÑÔÐÕÔÑÔÐÐÕÔ˜2ÑÔÐÕÔ˜2ÑÔÐÐÐÐÑÐÐÐÐÐÑÐÕÕÔÐÑÔÑÔÐÐÐÐÐØ2Ð8Ð2°bÐ8Ð8Ð8Ð8Õ8Ô8Ð8Ð8Ð8Ð8Ð2°bÐ8Ñ8Ô8Õ8Ô8Ð2Ñ8Ô8Ð8Õ8Ô8Ñ8Ô8Ð8Ð8Õ8Ô8°bÑ8Ô8Ð8Õ8Ô8°bÑ8Ô8Ð8Ð8Ð8Ð8Ñ8Ð8Ð8Ð8Ð8Ð8Ñ8Ð8Õ8Õ8Ô8Ð8Ñ8Ô8Ñ8Ô8Ð8Ð8Ð8Ð8Ð8Ø5Ð;Ð5¸Ð;Ð;Ð;Ð;Õ;Ô;Ð;Ð;Ð;Ð;Ð5¸Ð;Ñ;Ô;Õ;Ô;Ð5Ñ;Ô;Ð;Õ;Ô;Ñ;Ô;Ð;Ð;Õ;Ô;¸Ñ;Ô;Ð;Õ;Ô;¸Ñ;Ô;Ð;Ð;Ð;Ð;Ñ;Ð;Ð;Ð;Ð;Ð;Ñ;Ð;Õ;Õ;Ô;Ð;Ñ;Ô;Ñ;Ô;Ð;Ð;Ð;Ð;Ð;Ð;Ð;r   c                  óÖ  — t          ¦   «         } |                      ddd¬¦  «        }|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         }||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         }||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         }||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}||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}||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}||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         }||v }|slt          j        d|fd||f¦  «        t          j        |¦  «        t          j        |¦  «        d	œz  }d
d|iz  }t          t          j        |¦  «        ¦  «        ‚dx}x}}|d          }t          |¦  «        }d!}||k    }	|	sÇt          j        d|	fd"||f¦  «        d#t          j	        ¦   «         v st          j
        t          ¦  «        rt          j        t          ¦  «        nd#t          j        |¦  «        t          j        |¦  «        t          j        |¦  «        d$œz  }
d%d&|
iz  }t          t          j        |¦  «        ¦  «        ‚dx}x}x}	}dS )'uY   Kiá»ƒm thá»­ tÃ­nh toÃ¡n Máº«u 03.a/TT (theo HÄ�) chuáº©n Nghá»‹ Ä‘á»‹nh 254/2025/NÄ�-CP.úDA-2608281122é   Ú03a©Ústage_numberÚ	form_typeÚheaderÚproject_code©ú==©z%(py1)s == %(py4)s©r   Úpy4úassert %(py6)sÚpy6Nõ   Máº«u sá»‘ 03.a/TTÚ	form_coder   ©z%(py1)s in %(py4)sõ   254/2025/NÄ�-CPÚ
decree_refu&   CÃ”NG TY TNHH XÃ‚Y Dá»°NG Ä�á»ŠNH SÆ NÚcontractor_nameÚcontractor_tax_codeÚ
0202111150Úfinancial_summaryÚcontract_valueg   Ÿ€ØAÚcurr_completed_valueg   Ÿ€ÈAÚnet_paymentg   ÐšÃAu$   SÃ¡u trÄƒm nÄƒm mÆ°Æ¡i báº£y triá»‡uÚnet_payment_in_wordsÚitemsé   )z0%(py4)s
{%(py4)s = %(py0)s(%(py2)s)
} == %(py7)sÚlen)Úpy0Úpy2rC   r!   r"   r#   )r   Úget_treasury_datar%   r&   r'   r+   r,   rU   r(   r)   r*   )ÚserviceÚdatar-   Ú@py_assert3r0   Ú@py_format5Ú@py_format7Ú@py_assert1r/   Ú@py_assert5r1   r2   s               r   Ú(test_treasury_service_dai_thang_form_03ar`   ,   se  € å'Ñ)Ô)€GØ×$Ò$ _À1ÐPUÐ$ÑVÔV€Dð �Œ>˜.Ô)Ð<¨_Ð<Ð)¨_Ò<Ð<Ð<Ð<Õ<Ô<Ð<Ð<Ð<Ð<Ð)¨_Ð<Ñ<Ô<Õ<Ô<Ð)Ñ<Ô<Õ<Ô<¨_Ñ<Ô<Ð<Ð<Ñ<Ð<Ð<Ð<Ð<Ð<Ñ<Ð<Õ<Õ<Ô<Ð<Ñ<Ô<Ñ<Ô<Ð<Ð<Ð<Ð<Ð<Ð<Ð<ØÐ> 4¨¤>°+Ô#>Ð>ÐÐ#>Ð>Ð>Ð>Ð>Õ>Ô>Ð>Ð>Ð>Ð>ÐÐ#>Ð>Ñ>Ô>Õ>Ô>ÐÑ>Ô>Õ>Ô>Ð#>Ñ>Ô>Ð>Ð>Ñ>Ð>Ð>Ð>Ð>Ð>Ñ>Ð>Õ>Õ>Ô>Ð>Ñ>Ô>Ñ>Ô>Ð>Ð>Ð>Ð>Ð>Ð>Ð>ØÐ<  X¤¨|Ô <Ð<ÐÐ <Ð<Ð<Ð<Ð<Õ<Ô<Ð<Ð<Ð<Ð<ÐÐ <Ð<Ñ<Ô<Õ<Ô<ÐÑ<Ô<Õ<Ô<Ð <Ñ<Ô<Ð<Ð<Ñ<Ð<Ð<Ð<Ð<Ð<Ñ<Ð<Õ<Õ<Ô<Ð<Ñ<Ô<Ñ<Ô<Ð<Ð<Ð<Ð<Ð<Ð<Ð<Ø3ÐX°t¸H´~ÐFWÔ7XÐXÐ3Ð7XÐXÐXÐXÐXÕXÔXÐXÐXÐXÐXÐ3Ð7XÐXÑXÔXÕXÔXÐ3ÑXÔXÕXÔXÐ7XÑXÔXÐXÐXÑXÐXÐXÐXÐXÐXÑXÐXÕXÕXÔXÐXÑXÔXÑXÔXÐXÐXÐXÐXÐXÐXÐXØ�Œ>Ð/Ô0Ð@°LÐ@Ð0°LÒ@Ð@Ð@Ð@Õ@Ô@Ð@Ð@Ð@Ð@Ð0°LÐ@Ñ@Ô@Õ@Ô@Ð0Ñ@Ô@Õ@Ô@°LÑ@Ô@Ð@Ð@Ñ@Ð@Ð@Ð@Ð@Ð@Ñ@Ð@Õ@Õ@Ô@Ð@Ñ@Ô@Ñ@Ô@Ð@Ð@Ð@Ð@Ð@Ð@Ð@ð Ð#Ô$Ð%5Ô6ÐF¸,ÐFÐ6¸,ÒFÐFÐFÐFÕFÔFÐFÐFÐFÐFÐ6¸,ÐFÑFÔFÕFÔFÐ6ÑFÔFÕFÔF¸,ÑFÔFÐFÐFÑFÐFÐFÐFÐFÐFÑFÐFÕFÕFÔFÐFÑFÔFÑFÔFÐFÐFÐFÐFÐFÐFÐFØÐ#Ô$Ð%;Ô<ÐKÀÐKÐ<ÀÒKÐKÐKÐKÕKÔKÐKÐKÐKÐKÐ<ÀÐKÑKÔKÕKÔKÐ<ÑKÔKÕKÔKÀÑKÔKÐKÐKÑKÐKÐKÐKÐKÐKÑKÐKÕKÕKÔKÐKÑKÔKÑKÔKÐKÐKÐKÐKÐKÐKÐKØÐ#Ô$ ]Ô3ÐB°{ÐBÐ3°{ÒBÐBÐBÐBÕBÔBÐBÐBÐBÐBÐ3°{ÐBÑBÔBÕBÔBÐ3ÑBÔBÕBÔB°{ÑBÔBÐBÐBÑBÐBÐBÐBÐBÐBÑBÐBÕBÕBÔBÐBÑBÔBÑBÔBÐBÐBÐBÐBÐBÐBÐBØ1Ðf°TÐ:MÔ5NÐOeÔ5fÐfÐ1Ð5fÐfÐfÐfÐfÕfÔfÐfÐfÐfÐfÐ1Ð5fÐfÑfÔfÕfÔfÐ1ÑfÔfÕfÔfÐ5fÑfÔfÐfÐfÑfÐfÐfÐfÐfÐfÑfÐfÕfÕfÔfÐfÑfÔfÑfÔfÐfÐfÐfÐfÐfÐfÐfð �GŒ}Ð#�3ˆ}ÑÔÐ# Ð#Ð Ò#Ð#Ð#Ð#Õ#Ô#Ð#Ð#Ð#Ð#Ð Ð#Ñ#Ô#Ð#Õ#Ô#Ñ#Ô#Ð#Ð#Õ#Ô#�3Ñ#Ô#Ð#Õ#Ô#�3Ñ#Ô#Ð#Ð#Õ#Ô#ˆ}Ñ#Ô#Õ#Ô#ÐÑ#Ô#Õ#Ô# Ñ#Ô#Ð#Ð#Ñ#Ð#Ð#Ð#Ð#Ð#Ñ#Ð#Õ#Õ#Ô#Ð#Ñ#Ô#Ñ#Ô#Ð#Ð#Ð#Ð#Ð#Ð#Ð#Ð#Ð#Ð#Ð#r   c                  ó¶  — t          ¦   «         } |                      ddd¬¦  «        }|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         }||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         }||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         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S )uf   Kiá»ƒm thá»­ tÃ­nh toÃ¡n Máº«u 03.c/TT (phÃ¡t sinh ngoÃ i HÄ�) chuáº©n Nghá»‹ Ä‘á»‹nh 254/2025/NÄ�-CP.r7   r8   Ú03cr:   r=   r<   r?   rA   rB   rD   rE   Nõ   Máº«u sá»‘ 03.c/TTrG   r   rH   rI   rJ   rN   rP   r   ©ú>)z%(py1)s > %(py4)su   PhÃ¡t sinh ngoÃ i HÄ�rS   Ú	task_name)r   rX   r%   r&   r'   r+   r,   )rY   rZ   r-   r[   r0   r\   r]   s          r   Ú(test_treasury_service_dai_thang_form_03crg   B   s   € å'Ñ)Ô)€GØ×$Ò$ _À1ÐPUÐ$ÑVÔV€Dà�Œ>˜+Ô&Ð/¨%Ð/Ð&¨%Ò/Ð/Ð/Ð/Õ/Ô/Ð/Ð/Ð/Ð/Ð&¨%Ð/Ñ/Ô/Õ/Ô/Ð&Ñ/Ô/Õ/Ô/¨%Ñ/Ô/Ð/Ð/Ñ/Ð/Ð/Ð/Ð/Ð/Ñ/Ð/Õ/Õ/Ô/Ð/Ñ/Ô/Ñ/Ô/Ð/Ð/Ð/Ð/Ð/Ð/Ð/ØÐ> 4¨¤>°+Ô#>Ð>ÐÐ#>Ð>Ð>Ð>Ð>Õ>Ô>Ð>Ð>Ð>Ð>ÐÐ#>Ð>Ñ>Ô>Õ>Ô>ÐÑ>Ô>Õ>Ô>Ð#>Ñ>Ô>Ð>Ð>Ñ>Ð>Ð>Ð>Ð>Ð>Ñ>Ð>Õ>Õ>Ô>Ð>Ñ>Ô>Ñ>Ô>Ð>Ð>Ð>Ð>Ð>Ð>Ð>ØÐ<  X¤¨|Ô <Ð<ÐÐ <Ð<Ð<Ð<Ð<Õ<Ô<Ð<Ð<Ð<Ð<ÐÐ <Ð<Ñ<Ô<Õ<Ô<ÐÑ<Ô<Õ<Ô<Ð <Ñ<Ô<Ð<Ð<Ñ<Ð<Ð<Ð<Ð<Ð<Ñ<Ð<Õ<Õ<Ô<Ð<Ñ<Ô<Ñ<Ô<Ð<Ð<Ð<Ð<Ð<Ð<Ð<ØÐ#Ô$Ð%;Ô<Ð@¸qÐ@Ð<¸qÒ@Ð@Ð@Ð@Õ@Ô@Ð@Ð@Ð@Ð@Ð<¸qÐ@Ñ@Ô@Õ@Ô@Ð<Ñ@Ô@Õ@Ô@¸qÑ@Ô@Ð@Ð@Ñ@Ð@Ð@Ð@Ð@Ð@Ñ@Ð@Õ@Õ@Ô@Ð@Ñ@Ô@Ñ@Ô@Ð@Ð@Ð@Ð@Ð@Ð@Ð@Ø"ÐC d¨7¤m°AÔ&6°{Ô&CÐCÐ"Ð&CÐCÐCÐCÐCÕCÔCÐCÐCÐCÐCÐ"Ð&CÐCÑCÔCÕCÔCÐ"ÑCÔCÕCÔCÐ&CÑCÔCÐCÐCÑCÐCÐCÐCÐCÐCÑCÐCÕCÕCÔCÐCÑCÔCÑCÔCÐCÐCÐCÐCÐCÐCÐCÐCÐCr   c                  óN	  — t          ¦   «         } |                      ddd¬¦  «        }t          |t          ¦  «        }|�sd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dt	          j        ¦   «         v st          j        t          ¦  «        rt          j        t          ¦  «        ndt          j        |¦  «        d	œz  }t          t          j
        |¦  «        ¦  «        ‚d
}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¬¦  «        }	t          |	t          ¦  «        }|�sd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dt	          j        ¦   «         v st          j        t          ¦  «        rt          j        t          ¦  «        ndt          j        |¦  «        d	œz  }t          t          j
        |¦  «        ¦  «        ‚d
}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 )u9   Kiá»ƒm thá»­ xuáº¥t file Excel Máº«u 03.a vÃ  Máº«u 03.c.r7   r8   r9   r:   z5assert %(py4)s
{%(py4)s = %(py0)s(%(py1)s, %(py2)s)
}Ú
isinstanceÚ	excel_03aÚbytes)rV   r   rW   rC   Néˆ  rd   )z/%(py3)s
{%(py3)s = %(py0)s(%(py1)s)
} > %(py6)srU   )rV   r   r   rE   zassert %(py8)sÚpy8rb   Ú	excel_03c)r   Úexport_treasury_excelri   rk   r(   r)   r%   r*   r'   r+   r,   rU   r&   )
rY   rj   r[   r\   r0   r_   r.   r]   Ú@py_format9rn   s
             r   Ú*test_treasury_excel_generation_03a_and_03crq   N   s…  € å'Ñ)Ô)€GØ×-Ò-¨oÈAÐY^Ð-Ñ_Ô_€IÝ�i¥Ñ'Ô'Ð'Ð'Ñ'Ð'Ð'Õ'Ô'Ñ'Ô'Ð'Ð'Õ'Ô'�:Ñ'Ô'Ð'Õ'Ô'�:Ñ'Ô'Ð'Ð'Ð'Õ'Ô'Ñ'Ô'Ð'Ð'Õ'Ô'�iÑ'Ô'Ð'Õ'Ô'�iÑ'Ô'Ð'Ð'Ð'Õ'Ô'Ñ'Ô'Ð'Ð'Õ'Ô'¥Ñ'Ô'Ð'Õ'Ô'¥Ñ'Ô'Ð'Ð'Õ'Ô'Ð'Ñ'Ô'Ð'Ð'Ñ'Ð'Õ'Õ'Ô'Ð'Ñ'Ô'Ñ'Ô'Ð'Ð'Ð'Ýˆy‰>Œ>Ð ˜DÐ ˆ>˜DÒ Ð Ð Ð Õ Ô Ð Ð Ð Ð ˆ>˜DÐ Ñ Ô Ð Õ Ô Ñ Ô Ð Ð Õ Ô �3Ñ Ô Ð Õ Ô �3Ñ Ô Ð Ð Ð Õ Ô Ñ Ô Ð Ð Õ Ô ˆyÑ Ô Ð Õ Ô ˆyÑ Ô Ð Ð Õ Ô ˆ>Ñ Ô Õ Ô ˜DÑ Ô Ð Ð Ñ Ð Ð Ð Ð Ð Ñ Ð Õ Õ Ô Ð Ñ Ô Ñ Ô Ð Ð Ð Ð Ð Ð Ð à×-Ò-¨oÈAÐY^Ð-Ñ_Ô_€IÝ�i¥Ñ'Ô'Ð'Ð'Ñ'Ð'Ð'Õ'Ô'Ñ'Ô'Ð'Ð'Õ'Ô'�:Ñ'Ô'Ð'Õ'Ô'�:Ñ'Ô'Ð'Ð'Ð'Õ'Ô'Ñ'Ô'Ð'Ð'Õ'Ô'�iÑ'Ô'Ð'Õ'Ô'�iÑ'Ô'Ð'Ð'Ð'Õ'Ô'Ñ'Ô'Ð'Ð'Õ'Ô'¥Ñ'Ô'Ð'Õ'Ô'¥Ñ'Ô'Ð'Ð'Õ'Ô'Ð'Ñ'Ô'Ð'Ð'Ñ'Ð'Õ'Õ'Ô'Ð'Ñ'Ô'Ñ'Ô'Ð'Ð'Ð'Ýˆy‰>Œ>Ð ˜DÐ ˆ>˜DÒ Ð Ð Ð Õ Ô Ð Ð Ð Ð ˆ>˜DÐ Ñ Ô Ð Õ Ô Ñ Ô Ð Ð Õ Ô �3Ñ Ô Ð Õ Ô �3Ñ Ô Ð Ð Ð Õ Ô Ñ Ô Ð Ð Õ Ô ˆyÑ Ô Ð Õ Ô ˆyÑ Ô Ð Ð Õ Ô ˆ>Ñ Ô Õ Ô ˜DÑ Ô Ð Ð Ñ Ð Ð Ð Ð Ð Ñ Ð Õ Õ Ô Ð Ñ Ô Ñ Ô Ð Ð Ð Ð Ð Ð Ð Ð Ð r   c           
      óœ  — |                       d|¬¦  «        }|j        }d}||k    }|sªt          j        d|fd||f¦  «        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}|j
        }||v }	|	sªt          j        d|	fd||f¦  «        t          j        |¦  «        dt	          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        ndt          j        |¦  «        dœz  }dd	|iz  }t          t          j	        |¦  «        ¦  «        ‚d
x}x}	}d}|j
        }||v }	|	sªt          j        d|	fd||f¦  «        t          j        |¦  «        dt	          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        ndt          j        |¦  «        dœz  }dd	|iz  }t          t          j	        |¦  «        ¦  «        ‚d
x}x}	}d}|j
        }||v }	|	sªt          j        d|	fd||f¦  «        t          j        |¦  «        dt	          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        ndt          j        |¦  «        dœz  }dd	|iz  }t          t          j	        |¦  «        ¦  «        ‚d
x}x}	}|                       d|¬¦  «        }
|
j        }d}||k    }|sªt          j        d|fd||f¦  «        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}|
j
        }||v }	|	sªt          j        d|	fd||f¦  «        t          j        |¦  «        dt	          j        ¦   «         v st          j        |
¦  «        rt          j        |
¦  «        ndt          j        |¦  «        dœz  }dd	|iz  }t          t          j	        |¦  «        ¦  «        ‚d
x}x}	}d}|
j
        }||v }	|	sªt          j        d|	fd||f¦  «        t          j        |¦  «        dt	          j        ¦   «         v st          j        |
¦  «        rt          j        |
¦  «        ndt          j        |¦  «        dœz  }dd	|iz  }t          t          j	        |¦  «        ¦  «        ‚d
x}x}	}|                       d|¬¦  «        }|j        }d}||k    }|sªt          j        d|fd||f¦  «        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}|j        }|j         }d}d} |||¦  «        }||v }	|	söt          j        d|	fd||f¦  «        t          j        |¦  «        dt	          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        ndt          j        |¦  «        t          j        |¦  «        t          j        |¦  «        t          j        |¦  «        t          j        |¦  «        dœz  }dd|iz  }t          t          j	        |¦  «        ¦  «        ‚d
x}x}	x}x}x}x}}|j        }	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        |¦  «        t          j        |¦  «        d!œz  }d"d#|iz  }t          t          j	        |¦  «        ¦  «        ‚d
x}	x}x}}|                       d$|¬¦  «        }|j        }d}||k    }|sªt          j        d|fd||f¦  «        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&|¬¦  «        }|j        }d'}||k    }|sªt          j        d|fd||f¦  «        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 ))uq   Kiá»ƒm thá»­ cÃ¡c API routes xem trÆ°á»›c vÃ  xuáº¥t Excel Máº«u 03.a / 03.c theo Nghá»‹ Ä‘á»‹nh 254/2025/NÄ�-CP.z]/v1/erp/dossier/treasury/preview-html?project_code=DA-2608281122&stage_number=1&form_type=03a)ÚheaderséÈ   r?   )z3%(py2)s
{%(py2)s = %(py0)s.status_code
} == %(py5)sÚresp_03a)rV   rW   r    zassert %(py7)sr!   NrF   r   )z,%(py1)s in %(py5)s
{%(py5)s = %(py3)s.text
})r   r   r    rI   u   Ä�á»ŠNH SÆ Nz]/v1/erp/dossier/treasury/preview-html?project_code=DA-2608281122&stage_number=1&form_type=03cÚresp_03crc   z]/v1/erp/dossier/treasury/export-excel?project_code=DA-2608281122&stage_number=1&form_type=03cÚ
resp_excelÚspreadsheetmlzcontent-typeÚ )zr%(py1)s in %(py13)s
{%(py13)s = %(py7)s
{%(py7)s = %(py5)s
{%(py5)s = %(py3)s.headers
}.get
}(%(py9)s, %(py11)s)
})r   r   r    r!   r#   Úpy11Úpy13zassert %(py15)sÚpy15rl   rd   )zL%(py5)s
{%(py5)s = %(py0)s(%(py3)s
{%(py3)s = %(py1)s.content
})
} > %(py8)srU   )rV   r   r   r    rm   zassert %(py10)sÚpy10zS/v1/erp/dossier/treasury-02a/preview-html?project_code=DA-2608281122&stage_number=1Úresp_compatzQ/v1/erp/dossier/treasury/preview-html?project_code=DA-NON-EXISTENT&stage_number=1i”  Úresp_404)ÚgetÚstatus_coder%   r&   r(   r)   r*   r'   r+   r,   Útextrs   ÚcontentrU   )r   r   ru   r^   r.   r[   r4   r1   r-   r0   rv   rw   r/   Ú@py_assert8Ú@py_assert10Ú@py_assert12Ú@py_format14Ú@py_format16Ú@py_assert7rp   Ú@py_format11r~   r   s                          r   Ú$test_treasury_api_preview_and_exportr‹   Z   s  € ð �~Š~ØgØð ñ ô €Hð ÔÐ& 3Ð&Ð 3Ò&Ð&Ð&Ð&Õ&Ô&Ð&Ð&Ð&Ð&Ð 3Ð&Ñ&Ô&Ð&Õ&Ô&Ñ&Ô&Ð&Ð&Õ&Ô&ˆ8Ñ&Ô&Ð&Õ&Ô&ˆ8Ñ&Ô&Ð&Ð&Õ&Ô&ÐÑ&Ô&Õ&Ô& 3Ñ&Ô&Ð&Ð&Ñ&Ð&Ð&Ð&Ð&Ð&Ñ&Ð&Õ&Õ&Ô&Ð&Ñ&Ô&Ñ&Ô&Ð&Ð&Ð&Ð&Ð&Ð&Ð&ØÐ0 8¤=Ð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 8Ñ0Ô0Ð0Õ0Ô0 8Ñ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ØÐ- ¤Ð-Ð Ð-Ð-Ð-Ð-Õ-Ô-Ð-Ð-Ð-Ð-Ð Ð-Ñ-Ô-Õ-Ô-ÐÑ-Ô-Ð-Õ-Ô-Ñ-Ô-Ð-Ð-Õ-Ô- Ñ-Ô-Ð-Õ-Ô- Ñ-Ô-Ð-Ð-Õ-Ô- Ñ-Ô-Ð-Ð-Ñ-Ð-Ð-Ð-Ð-Ð-Ñ-Ð-Õ-Õ-Ô-Ð-Ñ-Ô-Ñ-Ô-Ð-Ð-Ð-Ð-Ð-Ð-Ð-ØÐ*˜Xœ]Ð*ˆ>˜]Ð*Ð*Ð*Ð*Õ*Ô*Ð*Ð*Ð*Ð*ˆ>˜]Ð*Ñ*Ô*Õ*Ô*ˆ>Ñ*Ô*Ð*Õ*Ô*Ñ*Ô*Ð*Ð*Õ*Ô*˜XÑ*Ô*Ð*Õ*Ô*˜XÑ*Ô*Ð*Ð*Õ*Ô*˜]Ñ*Ô*Ð*Ð*Ñ*Ð*Ð*Ð*Ð*Ð*Ñ*Ð*Õ*Õ*Ô*Ð*Ñ*Ô*Ñ*Ô*Ð*Ð*Ð*Ð*Ð*Ð*Ð*ð �~Š~ØgØð ñ ô €Hð ÔÐ& 3Ð&Ð 3Ò&Ð&Ð&Ð&Õ&Ô&Ð&Ð&Ð&Ð&Ð 3Ð&Ñ&Ô&Ð&Õ&Ô&Ñ&Ô&Ð&Ð&Õ&Ô&ˆ8Ñ&Ô&Ð&Õ&Ô&ˆ8Ñ&Ô&Ð&Ð&Õ&Ô&ÐÑ&Ô&Õ&Ô& 3Ñ&Ô&Ð&Ð&Ñ&Ð&Ð&Ð&Ð&Ð&Ñ&Ð&Õ&Õ&Ô&Ð&Ñ&Ô&Ñ&Ô&Ð&Ð&Ð&Ð&Ð&Ð&Ð&ØÐ0 8¤=Ð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 8Ñ0Ô0Ð0Õ0Ô0 8Ñ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ØÐ- ¤Ð-Ð Ð-Ð-Ð-Ð-Õ-Ô-Ð-Ð-Ð-Ð-Ð Ð-Ñ-Ô-Õ-Ô-ÐÑ-Ô-Ð-Õ-Ô-Ñ-Ô-Ð-Ð-Õ-Ô- Ñ-Ô-Ð-Õ-Ô- Ñ-Ô-Ð-Ð-Õ-Ô- Ñ-Ô-Ð-Ð-Ñ-Ð-Ð-Ð-Ð-Ð-Ñ-Ð-Õ-Õ-Ô-Ð-Ñ-Ô-Ñ-Ô-Ð-Ð-Ð-Ð-Ð-Ð-Ð-ð —’ØgØð  ñ ô €Jð Ô!Ð( SÐ(Ð! SÒ(Ð(Ð(Ð(Õ(Ô(Ð(Ð(Ð(Ð(Ð! SÐ(Ñ(Ô(Ð(Õ(Ô(Ñ(Ô(Ð(Ð(Õ(Ô(ˆ:Ñ(Ô(Ð(Õ(Ô(ˆ:Ñ(Ô(Ð(Ð(Õ(Ô(Ð!Ñ(Ô(Õ(Ô( SÑ(Ô(Ð(Ð(Ñ(Ð(Ð(Ð(Ð(Ð(Ñ(Ð(Õ(Õ(Ô(Ð(Ñ(Ô(Ñ(Ô(Ð(Ð(Ð(Ð(Ð(Ð(Ð(ØÐH˜jÔ0ÐHÐ0Ô4ÐH°^ÐHÀRÐHÐ4Ð4°^ÀRÑHÔHÐHˆ?ÐHÐHÐHÐHÐHÕHÔHÐHÐHÐHÐHˆ?ÐHÐHÑHÔHÕHÔHˆ?ÑHÔHÐHÕHÔHÑHÔHÐHÐHÕHÔH˜jÑHÔHÐHÕHÔH˜jÑHÔHÐHÐHÕHÔHÐ0ÑHÔHÕHÔHÐ4ÑHÔHÕHÔH°^ÑHÔHÕHÔHÀRÑHÔHÕHÔHÐHÑHÔHÐHÐHÑHÐHÐHÐHÐHÐHÑHÐHÕHÕHÔHÐHÑHÔHÑHÔHÐHÐHÐHÐHÐHÐHÐHÐHÐHÐHÐHÐHÐHÐHÐHØÔ!Ð)�3Ð!Ñ"Ô"Ð) TÐ)Ð" TÒ)Ð)Ð)Ñ)Õ)Ô)Ð)Ð)Ð)Ð)Ð" TÐ)Ñ)Ô)Ð)Õ)Ô)Ñ)Ô)Ð)Ð)Õ)Ô)�3Ñ)Ô)Ð)Õ)Ô)�3Ñ)Ô)Ð)Ð)Ð)Õ)Ô)Ñ)Ô)Ð)Ð)Õ)Ô)ˆzÑ)Ô)Ð)Õ)Ô)ˆzÑ)Ô)Ð)Ð)Õ)Ô)Ð!Ñ)Ô)Õ)Ô)Ð"Ñ)Ô)Õ)Ô) TÑ)Ô)Ð)Ð)Ñ)Ð)Ð)Ð)Ð)Ð)Ñ)Ð)Õ)Õ)Ô)Ð)Ñ)Ô)Ñ)Ô)Ð)Ð)Ð)Ð)Ð)Ð)Ð)Ð)Ð)ð —.’.Ø]Øð !ñ ô €Kð Ô"Ð) cÐ)Ð" cÒ)Ð)Ð)Ð)Õ)Ô)Ð)Ð)Ð)Ð)Ð" cÐ)Ñ)Ô)Ð)Õ)Ô)Ñ)Ô)Ð)Ð)Õ)Ô)ˆ;Ñ)Ô)Ð)Õ)Ô)ˆ;Ñ)Ô)Ð)Ð)Õ)Ô)Ð"Ñ)Ô)Õ)Ô) cÑ)Ô)Ð)Ð)Ñ)Ð)Ð)Ð)Ð)Ð)Ñ)Ð)Õ)Õ)Ô)Ð)Ñ)Ô)Ñ)Ô)Ð)Ð)Ð)Ð)Ð)Ð)Ð)ð �~Š~Ø[Øð ñ ô €Hð ÔÐ& 3Ð&Ð 3Ò&Ð&Ð&Ð&Õ&Ô&Ð&Ð&Ð&Ð&Ð 3Ð&Ñ&Ô&Ð&Õ&Ô&Ñ&Ô&Ð&Ð&Õ&Ô&ˆ8Ñ&Ô&Ð&Õ&Ô&ˆ8Ñ&Ô&Ð&Ð&Õ&Ô&ÐÑ&Ô&Õ&Ô& 3Ñ&Ô&Ð&Ð&Ñ&Ð&Ð&Ð&Ð&Ð&Ñ&Ð&Õ&Õ&Ô&Ð&Ñ&Ô&Ñ&Ô&Ð&Ð&Ð&Ð&Ð&Ð&Ð&Ð&Ð&r   )Ú__doc__Úbuiltinsr(   Ú_pytest.assertion.rewriteÚ	assertionÚrewriter%   ÚpytestÚfastapi.testclientr   Úapp.mainr   Ú)app.modules.auth.application.auth_servicer   Ú;app.modules.dossier.application.treasury_settlement_servicer   r   Úfixturer   r   r5   r`   rg   rq   r‹   © r   r   ú<module>r˜      s@  ððð ð € € € € € € € € € € € € €€€€Ø )Ð )Ð )Ð )Ð )Ð )à Ð Ð Ð Ð Ð Ø AÐ AÐ AÐ AÐ AÐ Aðð ð ð ð ð ð ð ð €„�hÐÑÔðð ñ  Ôðð
 €„�hÐÑÔð	0ð 	0ñ  Ôð	0ð<ð <ð <ð$ð $ð $ð,	Dð 	Dð 	Dð	!ð 	!ð 	!ð*'ð *'ð *'ð *'ð *'r   