§
     ’jå%  ã                  óª   — d Z ddlmZ ddlZddlmc mZ ddl	m
Z
 ddlmZ ddlmZ ddlmZmZmZ ddlmZ dd	lmZ d
„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ ZdS )zjUnit and Integration tests for the 4 Core Business Pillars of Cong ty TNHH Xay Dung Dinh Son (0202111150).é    )ÚannotationsN)ÚDecimal)Ú
TestClient)Ú
create_app)ÚDispatchOrderCreateRequestÚIPC03aExportRequestÚShiftLogVerificationStatus)ÚAuthService)ÚFourPillarsServicec            	     óR  — t          ¦   «         } t          ddt          d¦  «        t          d¦  «        t          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}}|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}}|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}}|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}
}	|j        }d}t          |¦  «        }	||	k    }|�st          j        d|fd||	f¦  «        d
t          j        ¦   «         v st          j	        |¦  «        rt          j
        |¦  «        nd
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}}	|j        }d}t          |¦  «        }	||	k    }|�st          j        d|fd||	f¦  «        d
t          j        ¦   «         v st          j	        |¦  «        rt          j
        |¦  «        nd
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}}	|j        t          d¦  «        z                       t          d ¦  «        ¦  «        }|j        }||k    }|sÕt          j        d|fd!||f¦  «        d
t          j        ¦   «         v st          j	        |¦  «        rt          j
        |¦  «        nd
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}}|j        t          d&¦  «        z                       t          d ¦  «        ¦  «        }|j        }||k    }|sÕt          j        d|fd'||f¦  «        d
t          j        ¦   «         v st          j	        |¦  «        rt          j
        |¦  «        nd
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}}|j        |z
  |z
  }|j        }||k    }|sÕt          j        d|fd)||f¦  «        d
t          j        ¦   «         v st          j	        |¦  «        rt          j
        |¦  «        nd
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}}|t          d+¦  «        z                       t          d ¦  «        ¦  «        }|j        }||k    }|sÕt          j        d|fd,||f¦  «        d
t          j        ¦   «         v st          j	        |¦  «        rt          j
        |¦  «        nd
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}}|j        }||z   }
||
k    }|�st          j        d|fd.||
f¦  «        d
t          j        ¦   «         v st          j	        |¦  «        rt          j
        |¦  «        nd
t          j
        |¦  «        d*t          j        ¦   «         v st          j	        |¦  «        rt          j
        |¦  «        nd*d-t          j        ¦   «         v st          j	        |¦  «        rt          j
        |¦  «        nd-d/œz  }d0d1|iz  }t          t          j        |¦  «        ¦  «        ‚dx}x}}
dS )2um   Kiá»ƒm thá»­ tÃ­nh toÃ¡n xuáº¥t há»“ sÆ¡ IPC 03a chuáº©n NÄ� 206/2026/NÄ�-CP vá»›i Ä‘á»™ chÃ­nh xÃ¡c Decimal.úDA-KM-BENKEM-2025-2026é   z10.0000z5.0000z8.0000)Úproject_codeÚperiod_numberÚadvance_recovery_rate_pctÚretention_rate_pctÚvat_rate_pctÚ
0202111150©ú==)z9%(py2)s
{%(py2)s = %(py0)s.contractor_tax_id
} == %(py5)sÚipc©Úpy0Úpy2Úpy5úassert %(py7)sÚpy7Nu&   CÃ”NG TY TNHH XÃ‚Y Dá»°NG Ä�á»ŠNH SÆ N)z7%(py2)s
{%(py2)s = %(py0)s.contractor_name
} == %(py5)s)z5%(py2)s
{%(py2)s = %(py0)s.period_number
} == %(py5)sé   )zK%(py5)s
{%(py5)s = %(py0)s(%(py3)s
{%(py3)s = %(py1)s.items
})
} == %(py8)sÚlen)r   Úpy1Úpy3r   Úpy8úassert %(py10)sÚpy10z5000000000.0000©ú>)zY%(py2)s
{%(py2)s = %(py0)s.total_contract_value
} > %(py8)s
{%(py8)s = %(py4)s(%(py6)s)
}r   ©r   r   Úpy4Úpy6r"   ú0.0000)z^%(py2)s
{%(py2)s = %(py0)s.period_work_value_pre_tax
} > %(py8)s
{%(py8)s = %(py4)s(%(py6)s)
}z0.1000z0.0001)z?%(py2)s
{%(py2)s = %(py0)s.advance_recovery_amount
} == %(py4)sÚexpected_advance)r   r   r(   úassert %(py6)sr)   z0.0500)zA%(py2)s
{%(py2)s = %(py0)s.retention_deducted_amount
} == %(py4)sÚexpected_retention)z;%(py2)s
{%(py2)s = %(py0)s.net_payable_pre_tax
} == %(py4)sÚexpected_netz0.0800)z2%(py2)s
{%(py2)s = %(py0)s.vat_amount
} == %(py4)sÚexpected_vat)zN%(py2)s
{%(py2)s = %(py0)s.total_net_payable_with_vat
} == (%(py4)s + %(py5)s))r   r   r(   r   úassert %(py8)sr"   )r   r   r   Úgenerate_ipc_documentÚcontractor_tax_idÚ
@pytest_arÚ_call_reprcompareÚ@py_builtinsÚlocalsÚ_should_repr_global_nameÚ	_safereprÚAssertionErrorÚ_format_explanationÚcontractor_namer   Úitemsr   Útotal_contract_valueÚperiod_work_value_pre_taxÚquantizeÚadvance_recovery_amountÚretention_deducted_amountÚnet_payable_pre_taxÚ
vat_amountÚtotal_net_payable_with_vat)ÚserviceÚreqr   Ú@py_assert1Ú@py_assert4Ú@py_assert3Ú@py_format6Ú@py_format8Ú@py_assert2Ú@py_assert7Ú@py_assert6Ú@py_format9Ú@py_format11Ú@py_assert5r+   Ú@py_format5Ú@py_format7r-   r.   r/   s                       ú8C:\Projects\DSCons\tests\test_four_pillars_operations.pyÚ)test_pillar_1_ipc_03a_financial_precisionrU      sÃ  € å Ñ"Ô"€GÝ
Ø-ØÝ")¨)Ñ"4Ô"4Ý" 8Ñ,Ô,Ý˜XÑ&Ô&ðñ ô €Cð ×
'Ò
'¨Ñ
,Ô
,€CàÔ Ð0 LÐ0Ð  LÒ0Ð0Ð0Ð0Õ0Ô0Ð0Ð0Ð0Ð0Ð  LÐ0Ñ0Ô0Ð0Õ0Ô0Ñ0Ô0Ð0Ð0Õ0Ô0ˆ3Ñ0Ô0Ð0Õ0Ô0ˆ3Ñ0Ô0Ð0Ð0Õ0Ô0Ð Ñ0Ô0Õ0Ô0 LÑ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ØÔÐJÐ"JÐJÐÐ"JÒJÐJÐJÐJÕJÔJÐJÐJÐJÐJÐÐ"JÐJÑJÔJÐJÕJÔJÑJÔJÐJÐJÕJÔJˆ3ÑJÔJÐJÕJÔJˆ3ÑJÔJÐJÐJÕJÔJÐÑJÔJÕJÔJÐ"JÑJÔJÐJÐJÑJÐJÐJÐJÐJÐJÑJÐJÕJÕJÔJÐJÑJÔJÑJÔJÐJÐJÐJÐJÐJÐJÐJØÔÐ! Ð!Ð Ò!Ð!Ð!Ð!Õ!Ô!Ð!Ð!Ð!Ð!Ð Ð!Ñ!Ô!Ð!Õ!Ô!Ñ!Ô!Ð!Ð!Õ!Ô!ˆ3Ñ!Ô!Ð!Õ!Ô!ˆ3Ñ!Ô!Ð!Ð!Õ!Ô!ÐÑ!Ô!Õ!Ô! Ñ!Ô!Ð!Ð!Ñ!Ð!Ð!Ð!Ð!Ð!Ñ!Ð!Õ!Õ!Ô!Ð!Ñ!Ô!Ñ!Ô!Ð!Ð!Ð!Ð!Ð!Ð!Ð!ØŒyÐ�3ˆy‰>Œ>Ð˜QÐˆ>˜QÒÐÐÑÕÔÐÐÐÐˆ>˜QÐÑÔÐÕÔÑÔÐÐÕÔ�3ÑÔÐÕÔ�3ÑÔÐÐÐÕÔÑÔÐÐÕÔˆsÑÔÐÕÔˆsÑÔÐÐÕÔˆyÑÔÕÔˆ>ÑÔÕÔ˜QÑÔÐÐÑÐÐÐÐÐÑÐÕÕÔÐÑÔÑÔÐÐÐÐÐÐÐÐÐð Ô#Ð@Ð.?Ð@¥gÐ.?Ñ&@Ô&@Ð@Ð#Ð&@Ò@Ð@Ð@Ñ@Õ@Ô@Ð@Ð@Ð@Ð@Ð#Ð&@Ð@Ñ@Ô@Ð@Õ@Ô@Ñ@Ô@Ð@Ð@Õ@Ô@ˆ3Ñ@Ô@Ð@Õ@Ô@ˆ3Ñ@Ô@Ð@Ð@Õ@Ô@Ð#Ñ@Ô@Ð@Õ@Ô@Ñ@Ô@Ð@Ð@Õ@Ô@¥gÑ@Ô@Ð@Õ@Ô@¥gÑ@Ô@Ð@Ð@Õ@Ô@Ð.?Ñ@Ô@Õ@Ô@Ð&@Ñ@Ô@Ð@Ð@Ñ@Ð@Ð@Ð@Ð@Ð@Ñ@Ð@Õ@Õ@Ô@Ð@Ñ@Ô@Ñ@Ô@Ð@Ð@Ð@Ð@Ð@Ð@Ð@Ð@Ð@ØÔ(Ð<°8Ð<­7°8Ñ+<Ô+<Ð<Ð(Ð+<Ò<Ð<Ð<Ñ<Õ<Ô<Ð<Ð<Ð<Ð<Ð(Ð+<Ð<Ñ<Ô<Ð<Õ<Ô<Ñ<Ô<Ð<Ð<Õ<Ô<ˆ3Ñ<Ô<Ð<Õ<Ô<ˆ3Ñ<Ô<Ð<Ð<Õ<Ô<Ð(Ñ<Ô<Ð<Õ<Ô<Ñ<Ô<Ð<Ð<Õ<Ô<­7Ñ<Ô<Ð<Õ<Ô<­7Ñ<Ô<Ð<Ð<Õ<Ô<°8Ñ<Ô<Õ<Ô<Ð+<Ñ<Ô<Ð<Ð<Ñ<Ð<Ð<Ð<Ð<Ð<Ñ<Ð<Õ<Õ<Ô<Ð<Ñ<Ô<Ñ<Ô<Ð<Ð<Ð<Ð<Ð<Ð<Ð<Ð<Ð<ð Ô5½ÀÑ8IÔ8IÑI×SÒSÝ�ÑÔñô Ðð Ô&Ð:Ð&Ð*:Ò:Ð:Ð:Ð:Õ:Ô:Ð:Ð:Ð:Ð:Ð&Ð*:Ð:Ñ:Ô:Ð:Õ:Ô:Ñ:Ô:Ð:Ð:Õ:Ô:ˆ3Ñ:Ô:Ð:Õ:Ô:ˆ3Ñ:Ô:Ð:Ð:Õ:Ô:Ð&Ñ:Ô:Ð:Õ:Ô:Ñ:Ô:Ð:Ð:Õ:Ô:Ð*:Ñ:Ô:Ð:Õ:Ô:Ð*:Ñ:Ô:Ð:Ð:Ð:Ð:Ñ:Ð:Ð:Ð:Ð:Ð:Ñ:Ð:Õ:Õ:Ô:Ð:Ñ:Ô:Ñ:Ô:Ð:Ð:Ð:Ð:Ð:àÔ7½'À(Ñ:KÔ:KÑK×UÒUÝ�ÑÔñô Ðð Ô(Ð>Ð(Ð,>Ò>Ð>Ð>Ð>Õ>Ô>Ð>Ð>Ð>Ð>Ð(Ð,>Ð>Ñ>Ô>Ð>Õ>Ô>Ñ>Ô>Ð>Ð>Õ>Ô>ˆ3Ñ>Ô>Ð>Õ>Ô>ˆ3Ñ>Ô>Ð>Ð>Õ>Ô>Ð(Ñ>Ô>Ð>Õ>Ô>Ñ>Ô>Ð>Ð>Õ>Ô>Ð,>Ñ>Ô>Ð>Õ>Ô>Ð,>Ñ>Ô>Ð>Ð>Ð>Ð>Ñ>Ð>Ð>Ð>Ð>Ð>Ñ>Ð>Õ>Õ>Ô>Ð>Ñ>Ô>Ñ>Ô>Ð>Ð>Ð>Ð>Ð>ð Ô0Ð3CÑCÐFXÑX€LØÔ"Ð2Ð" lÒ2Ð2Ð2Ð2Õ2Ô2Ð2Ð2Ð2Ð2Ð" lÐ2Ñ2Ô2Ð2Õ2Ô2Ñ2Ô2Ð2Ð2Õ2Ô2ˆ3Ñ2Ô2Ð2Õ2Ô2ˆ3Ñ2Ô2Ð2Ð2Õ2Ô2Ð"Ñ2Ô2Ð2Õ2Ô2Ñ2Ô2Ð2Ð2Õ2Ô2 lÑ2Ô2Ð2Õ2Ô2 lÑ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à ¥7¨8Ñ#4Ô#4Ñ4×>Ò>½wÀxÑ?PÔ?PÑQÔQ€LØŒ>Ð)ˆ>˜\Ò)Ð)Ð)Ð)Õ)Ô)Ð)Ð)Ð)Ð)ˆ>˜\Ð)Ñ)Ô)Ð)Õ)Ô)Ñ)Ô)Ð)Ð)Õ)Ô)ˆ3Ñ)Ô)Ð)Õ)Ô)ˆ3Ñ)Ô)Ð)Ð)Õ)Ô)ˆ>Ñ)Ô)Ð)Õ)Ô)Ñ)Ô)Ð)Ð)Õ)Ô)˜\Ñ)Ô)Ð)Õ)Ô)˜\Ñ)Ô)Ð)Ð)Ð)Ð)Ñ)Ð)Ð)Ð)Ð)Ð)Ñ)Ð)Õ)Õ)Ô)Ð)Ñ)Ô)Ñ)Ô)Ð)Ð)Ð)Ð)Ð)ØÔ)ÐJ¨l¸\Ñ.IÐJÐ)Ð.IÒJÐJÐJÑJÕJÔJÐJÐJÐJÐJÐ)Ð.IÐJÑJÔJÐJÕJÔJÑJÔJÐJÐJÕJÔJˆ3ÑJÔJÐJÕJÔJˆ3ÑJÔJÐJÐJÕJÔJÐ)ÑJÔJÐJÕJÔJÑJÔJÐJÐJÕJÔJ¨lÑJÔJÐJÕJÔJ¨lÑJÔJÐJÐJÐJÕJÔJÑJÔJÐJÐJÕJÔJ¸\ÑJÔJÐJÕJÔJ¸\ÑJÔJÐJÐJÐJÐJÑJÐJÐJÐJÐJÐJÑJÐJÕJÕJÔJÐJÑJÔJÑJÔJÐJÐJÐJÐJÐJÐJÐJÐJÐJó    c            	     óÚ  — t          ¦   «         } |                      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 �]±}|j        }d}||u }	|	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}	}|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}	}|j        }d}t          |¦  «        }||k    }	|	�st          j        d|	fd||f¦  «        dt          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        nd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}}�Œ³dS )uK   Kiá»ƒm thá»­ Ä‘á»‘i chiáº¿u 3 bÃªn (BOQ vs Nghiá»‡m thu A-B vs HÃ³a Ä‘Æ¡n).r   )r   r   ©ú>=)z0%(py3)s
{%(py3)s = %(py0)s(%(py1)s)
} >= %(py6)sr   Úmatches©r   r    r!   r)   r0   r"   NT©Úis)z4%(py2)s
{%(py2)s = %(py0)s.is_compliant
} is %(py5)sÚmr   r   r   ÚPERFECT_MATCHr   )z.%(py2)s
{%(py2)s = %(py0)s.status
} == %(py5)sr*   ©zU%(py2)s
{%(py2)s = %(py0)s.amount_variance
} == %(py8)s
{%(py8)s = %(py4)s(%(py6)s)
}r   r'   r#   r$   )r   Úget_3way_matching_detailsr   r3   r4   r5   r6   r7   r8   r9   r:   Úis_compliantÚstatusÚamount_variancer   )rE   rZ   rL   rQ   rH   rS   rO   r^   rG   rI   rJ   rK   rM   rP   s                 rT   Útest_pillar_1_3way_matchingre   ?   sT  € å Ñ"Ô"€GØ×/Ò/Ð=UÐ/ÑVÔV€Gåˆw‰<Œ<Ð˜1Ðˆ<˜1ÒÐÐÐÕÔÐÐÐÐˆ<˜1ÐÑÔÐÕÔÑÔÐÐÕÔ�3ÑÔÐÕÔ�3ÑÔÐÐÐÕÔÑÔÐÐÕÔˆwÑÔÐÕÔˆwÑÔÐÐÕÔˆ<ÑÔÕÔ˜1ÑÔÐÐÑÐÐÐÐÐÑÐÕÕÔÐÑÔÑÔÐÐÐÐÐÐÐØð 6ñ 6ˆØŒ~Ð% Ð%ˆ~ Ð%Ð%Ð%Ð%Õ%Ô%Ð%Ð%Ð%Ð%ˆ~ Ð%Ñ%Ô%Ð%Õ%Ô%Ñ%Ô%Ð%Ð%Õ%Ô%ˆqÑ%Ô%Ð%Õ%Ô%ˆqÑ%Ô%Ð%Ð%Õ%Ô%ˆ~Ñ%Ô%Õ%Ô% Ñ%Ô%Ð%Ð%Ñ%Ð%Ð%Ð%Ð%Ð%Ñ%Ð%Õ%Õ%Ô%Ð%Ñ%Ô%Ñ%Ô%Ð%Ð%Ð%Ð%Ð%Ð%Ð%ØŒxÐ*˜?Ð*ˆx˜?Ò*Ð*Ð*Ð*Õ*Ô*Ð*Ð*Ð*Ð*ˆx˜?Ð*Ñ*Ô*Ð*Õ*Ô*Ñ*Ô*Ð*Ð*Õ*Ô*ˆqÑ*Ô*Ð*Õ*Ô*ˆqÑ*Ô*Ð*Ð*Õ*Ô*ˆxÑ*Ô*Õ*Ô*˜?Ñ*Ô*Ð*Ð*Ñ*Ð*Ð*Ð*Ð*Ð*Ñ*Ð*Õ*Õ*Ô*Ð*Ñ*Ô*Ñ*Ô*Ð*Ð*Ð*Ð*Ð*Ð*Ð*ØÔ Ð5¨HÐ5¥G¨HÑ$5Ô$5Ð5Ð Ð$5Ò5Ð5Ð5Ñ5Õ5Ô5Ð5Ð5Ð5Ð5Ð Ð$5Ð5Ñ5Ô5Ð5Õ5Ô5Ñ5Ô5Ð5Ð5Õ5Ô5ˆqÑ5Ô5Ð5Õ5Ô5ˆqÑ5Ô5Ð5Ð5Õ5Ô5Ð Ñ5Ô5Ð5Õ5Ô5Ñ5Ô5Ð5Ð5Õ5Ô5¥GÑ5Ô5Ð5Õ5Ô5¥GÑ5Ô5Ð5Ð5Õ5Ô5¨HÑ5Ô5Õ5Ô5Ð$5Ñ5Ô5Ð5Ð5Ñ5Ð5Ð5Ð5Ð5Ð5Ñ5Ð5Õ5Õ5Ô5Ð5Ñ5Ô5Ñ5Ô5Ð5Ð5Ð5Ð5Ð5Ð5Ð5Ð5Ð5Ñ5ð6ð 6rV   c                 ó:  — t          ¦   «         } t          ddddddddt          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}}|j        }d}t          |¦  «        }	||	k    }|�st          j        d|fd||	f¦  «        dt          j        ¦   «         v st          j	        |¦  «        rt          j
        |¦  «        nd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}}	|j        }d}t          |¦  «        }	||	k    }|�st          j        d|fd||	f¦  «        dt          j        ¦   «         v st          j	        |¦  «        rt          j
        |¦  «        nd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}}	|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}}|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}}|j        }d }t          |¦  «        }	||	k    }|�st          j        d|fd!||	f¦  «        dt          j        ¦   «         v st          j	        |¦  «        rt          j
        |¦  «        nd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}}	|j        }d"}t          |¦  «        }	||	k    }|�st          j        d|fd#||	f¦  «        dt          j        ¦   «         v st          j	        |¦  «        rt          j
        |¦  «        nd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}}	dS )$us   Kiá»ƒm thá»­ Trá»¥ cá»™t 2: Váº­n táº£i xe ben Howo chá»Ÿ bÃ¹n Ä‘áº¥t Cty ThoÃ¡t NÆ°á»›c Háº£i PhÃ²ng (0200149705).ú
15C-389.22u   Nguyá»…n VÄƒn HÃ¹ngÚ
0200149705u-   CÃ´ng ty TNHH MTV ThoÃ¡t nÆ°á»›c Háº£i PhÃ²ngu$   BÃ¹n tháº£i náº¡o vÃ©t cá»‘ng ngáº§mu   MÆ°Æ¡ng An Kim Háº£iu   BÃ£i Ä‘á»• Ä�Ã¬nh VÅ©r   z48.0000©	Útruck_plateÚdriver_nameÚpartner_tax_idÚpartner_nameÚ
cargo_typeÚsource_locationÚdump_locationÚscheduled_tripsÚestimated_volume_m3r   ©z6%(py2)s
{%(py2)s = %(py0)s.partner_tax_id
} == %(py5)sÚorderr   r   r   Nz96.0000)zZ%(py2)s
{%(py2)s = %(py0)s.fuel_standard_liters
} == %(py8)s
{%(py8)s = %(py4)s(%(py6)s)
}r   r'   r#   r$   z2.0000)zW%(py2)s
{%(py2)s = %(py0)s.fuel_variance_pct
} == %(py8)s
{%(py8)s = %(py4)s(%(py6)s)
})z7%(py2)s
{%(py2)s = %(py0)s.completed_trips
} == %(py5)sz2026-Q1)Úbilling_periodÚreconciliationÚMATCHED)z=%(py2)s
{%(py2)s = %(py0)s.reconciliation_status
} == %(py5)sr*   r`   z	4640.0000)z]%(py2)s
{%(py2)s = %(py0)s.total_volume_weighed_m3
} == %(py8)s
{%(py8)s = %(py4)s(%(py6)s)
})r   r   r   Úcreate_dispatch_orderrl   r3   r4   r5   r6   r7   r8   r9   r:   Úfuel_standard_litersÚfuel_variance_pctÚcompleted_tripsÚreconcile_sludge_transportÚreconciliation_statusrd   Útotal_volume_weighed_m3)rE   Údisp_reqrt   rG   rH   rI   rJ   rK   rQ   rM   rO   rP   rv   s                rT   Ú+test_pillar_2_fleet_logistics_thoat_nuoc_hpr€   K   sù  € å Ñ"Ô"€Gõ *Ø Ø)Ø#ØDØ9Ø.Ø-ØÝ# IÑ.Ô.ð
ñ 
ô 
€Hð ×)Ò)¨(Ñ3Ô3€EàÔÐ/ <Ð/Ð <Ò/Ð/Ð/Ð/Õ/Ô/Ð/Ð/Ð/Ð/Ð <Ð/Ñ/Ô/Ð/Õ/Ô/Ñ/Ô/Ð/Ð/Õ/Ô/ˆ5Ñ/Ô/Ð/Õ/Ô/ˆ5Ñ/Ô/Ð/Ð/Õ/Ô/ÐÑ/Ô/Õ/Ô/ <Ñ/Ô/Ð/Ð/Ñ/Ð/Ð/Ð/Ð/Ð/Ñ/Ð/Õ/Õ/Ô/Ð/Ñ/Ô/Ñ/Ô/Ð/Ð/Ð/Ð/Ð/Ð/Ð/ØÔ%Ð;°Ð;­°Ñ);Ô);Ð;Ð%Ð);Ò;Ð;Ð;Ñ;Õ;Ô;Ð;Ð;Ð;Ð;Ð%Ð);Ð;Ñ;Ô;Ð;Õ;Ô;Ñ;Ô;Ð;Ð;Õ;Ô;ˆ5Ñ;Ô;Ð;Õ;Ô;ˆ5Ñ;Ô;Ð;Ð;Õ;Ô;Ð%Ñ;Ô;Ð;Õ;Ô;Ñ;Ô;Ð;Ð;Õ;Ô;­Ñ;Ô;Ð;Õ;Ô;­Ñ;Ô;Ð;Ð;Õ;Ô;°Ñ;Ô;Õ;Ô;Ð);Ñ;Ô;Ð;Ð;Ñ;Ð;Ð;Ð;Ð;Ð;Ñ;Ð;Õ;Õ;Ô;Ð;Ñ;Ô;Ñ;Ô;Ð;Ð;Ð;Ð;Ð;Ð;Ð;Ð;Ð;ØÔ"Ð7¨hÐ7¥g¨hÑ&7Ô&7Ð7Ð"Ð&7Ò7Ð7Ð7Ñ7Õ7Ô7Ð7Ð7Ð7Ð7Ð"Ð&7Ð7Ñ7Ô7Ð7Õ7Ô7Ñ7Ô7Ð7Ð7Õ7Ô7ˆ5Ñ7Ô7Ð7Õ7Ô7ˆ5Ñ7Ô7Ð7Ð7Õ7Ô7Ð"Ñ7Ô7Ð7Õ7Ô7Ñ7Ô7Ð7Ð7Õ7Ô7¥gÑ7Ô7Ð7Õ7Ô7¥gÑ7Ô7Ð7Ð7Õ7Ô7¨hÑ7Ô7Õ7Ô7Ð&7Ñ7Ô7Ð7Ð7Ñ7Ð7Ð7Ð7Ð7Ð7Ñ7Ð7Õ7Õ7Ô7Ð7Ñ7Ô7Ñ7Ô7Ð7Ð7Ð7Ð7Ð7Ð7Ð7Ð7Ð7ØÔ Ð% AÐ%Ð  AÒ%Ð%Ð%Ð%Õ%Ô%Ð%Ð%Ð%Ð%Ð  AÐ%Ñ%Ô%Ð%Õ%Ô%Ñ%Ô%Ð%Ð%Õ%Ô%ˆ5Ñ%Ô%Ð%Õ%Ô%ˆ5Ñ%Ô%Ð%Ð%Õ%Ô%Ð Ñ%Ô%Õ%Ô% AÑ%Ô%Ð%Ð%Ñ%Ð%Ð%Ð%Ð%Ð%Ñ%Ð%Õ%Õ%Ô%Ð%Ñ%Ô%Ñ%Ô%Ð%Ð%Ð%Ð%Ð%Ð%Ð%ð ×7Ò7ÀyÐ7ÑQÔQ€NØÔ(Ð8¨LÐ8Ð(¨LÒ8Ð8Ð8Ð8Õ8Ô8Ð8Ð8Ð8Ð8Ð(¨LÐ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¨LÑ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ØÔ/Ð<°9Ð<Ð/°9Ò<Ð<Ð<Ð<Õ<Ô<Ð<Ð<Ð<Ð<Ð/°9Ð<Ñ<Ô<Ð<Õ<Ô<Ñ<Ô<Ð<Ð<Õ<Ô<ˆ>Ñ<Ô<Ð<Õ<Ô<ˆ>Ñ<Ô<Ð<Ð<Õ<Ô<Ð/Ñ<Ô<Õ<Ô<°9Ñ<Ô<Ð<Ð<Ñ<Ð<Ð<Ð<Ð<Ð<Ñ<Ð<Õ<Õ<Ô<Ð<Ñ<Ô<Ñ<Ô<Ð<Ð<Ð<Ð<Ð<Ð<Ð<ØÔ)Ð>°XÐ>­W°XÑ->Ô->Ð>Ð)Ð->Ò>Ð>Ð>Ñ>Õ>Ô>Ð>Ð>Ð>Ð>Ð)Ð->Ð>Ñ>Ô>Ð>Õ>Ô>Ñ>Ô>Ð>Ð>Õ>Ô>ˆ>Ñ>Ô>Ð>Õ>Ô>ˆ>Ñ>Ô>Ð>Ð>Õ>Ô>Ð)Ñ>Ô>Ð>Õ>Ô>Ñ>Ô>Ð>Ð>Õ>Ô>­WÑ>Ô>Ð>Õ>Ô>­WÑ>Ô>Ð>Ð>Õ>Ô>°XÑ>Ô>Õ>Ô>Ð->Ñ>Ô>Ð>Ð>Ñ>Ð>Ð>Ð>Ð>Ð>Ñ>Ð>Õ>Õ>Ô>Ð>Ñ>Ô>Ñ>Ô>Ð>Ð>Ð>Ð>Ð>Ð>Ð>Ð>Ð>ØÔ1ÐI¸[ÐIµW¸[Ñ5IÔ5IÐIÐ1Ð5IÒIÐIÐIÑIÕIÔIÐIÐIÐIÐIÐ1Ð5IÐIÑIÔIÐIÕIÔIÑIÔIÐIÐIÕIÔIˆ>ÑIÔIÐIÕIÔIˆ>ÑIÔIÐIÐIÕIÔIÐ1ÑIÔIÐIÕIÔIÑIÔIÐIÐIÕIÔIµWÑIÔIÐIÕIÔIµWÑIÔIÐIÐIÕIÔI¸[ÑIÔIÕIÔIÐ5IÑIÔIÐIÐIÑIÐIÐIÐIÐIÐIÑIÐIÕIÕIÔIÐIÑIÔIÑIÔIÐIÐIÐIÐIÐIÐIÐIÐIÐIÐIÐIrV   c                 óD  — t          ¦   «         } |                      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}}|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}}|j        }t          j        }||k    }|sòt          j        d|fd||f¦  «        dt          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        ndt          j        |¦  «        dt          j        ¦   «         v st          j        t          ¦  «        rt          j        t          ¦  «        ndt          j        |¦  «        dœz  }dd|iz  }	t          t          j
        |	¦  «        ¦  «        ‚d
x}x}}|j        }d}t!          |¦  «        }
||
k    }|�st          j        d|fd||
f¦  «        dt          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        nd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}}
|j        }d}t!          |¦  «        }
||
k    }|�st          j        d|fd||
f¦  «        dt          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        nd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}}
|j        }d}t!          |¦  «        }
||
k    }|�st          j        d|fd||
f¦  «        dt          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        nd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}}
|j        }d}t!          |¦  «        }
||
k    }|�st          j        d|fd||
f¦  «        dt          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        nd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}}
|j        }d}t!          |¦  «        }
||
k    }|�st          j        d|fd||
f¦  «        dt          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        nd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}}
d
S )uV   Kiá»ƒm thá»­ Trá»¥ cá»™t 3: Cho thuÃª mÃ¡y Ä‘Ã o Kobelco Cty Loan Kháº£i (0201889988).zEXC-KOBELCO-02)Úequipment_codeÚ
0201889988r   rs   rv   r   r   r   Nu8   CÃ´ng ty TNHH Váº­n táº£i vÃ  ThÆ°Æ¡ng máº¡i Loan Kháº£i)z4%(py2)s
{%(py2)s = %(py0)s.partner_name
} == %(py5)s)zK%(py2)s
{%(py2)s = %(py0)s.status
} == %(py6)s
{%(py6)s = %(py4)s.MATCHED
}r	   ©r   r   r(   r)   r0   r"   z160.0000)z^%(py2)s
{%(py2)s = %(py0)s.total_shift_hours_logged
} == %(py8)s
{%(py8)s = %(py4)s(%(py6)s)
}r   r'   r#   r$   )z^%(py2)s
{%(py2)s = %(py0)s.operator_timesheet_hours
} == %(py8)s
{%(py8)s = %(py4)s(%(py6)s)
})z[%(py2)s
{%(py2)s = %(py0)s.invoiced_rental_hours
} == %(py8)s
{%(py8)s = %(py4)s(%(py6)s)
}r*   )zW%(py2)s
{%(py2)s = %(py0)s.hours_discrepancy
} == %(py8)s
{%(py8)s = %(py4)s(%(py6)s)
}z80.0000r%   )zS%(py2)s
{%(py2)s = %(py0)s.oee_percentage
} > %(py8)s
{%(py8)s = %(py4)s(%(py6)s)
})r   Úreconcile_equipment_rentalrl   r3   r4   r5   r6   r7   r8   r9   r:   rm   rc   r	   rw   Útotal_shift_hours_loggedr   Úoperator_timesheet_hoursÚinvoiced_rental_hoursÚhours_discrepancyÚoee_percentage)rE   rv   rG   rH   rI   rJ   rK   rQ   rS   rO   rM   rP   s               rT   Ú(test_pillar_3_equipment_rental_loan_khair‹   j   sO	  € å Ñ"Ô"€GØ×7Ò7ÐGWÐ7ÑXÔX€NàÔ(Ð8¨LÐ8Ð(¨LÒ8Ð8Ð8Ð8Õ8Ô8Ð8Ð8Ð8Ð8Ð(¨LÐ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¨LÑ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ØÔ&ÐdÐ*dÐdÐ&Ð*dÒdÐdÐdÐdÕdÔdÐdÐdÐdÐdÐ&Ð*dÐdÑdÔdÐdÕdÔdÑdÔdÐdÐdÕdÔdˆ>ÑdÔdÐdÕdÔdˆ>ÑdÔdÐdÐdÕdÔdÐ&ÑdÔdÕdÔdÐ*dÑdÔdÐdÐdÑdÐdÐdÐdÐdÐdÑdÐdÕdÕdÔdÐdÑdÔdÑdÔdÐdÐdÐdÐdÐdÐdÐdØÔ Ð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Ô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Ô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ØÔ2ÐI¸jÐIµg¸jÑ6IÔ6IÐIÐ2Ð6IÒIÐIÐIÑIÕIÔIÐIÐIÐIÐIÐ2Ð6IÐIÑIÔIÐIÕIÔIÑIÔIÐIÐIÕIÔIˆ>ÑIÔIÐIÕIÔIˆ>ÑIÔIÐIÐIÕIÔIÐ2ÑIÔIÐIÕIÔIÑIÔIÐIÐIÕIÔIµgÑIÔIÐIÕIÔIµgÑIÔIÐIÐIÕIÔI¸jÑIÔIÕIÔIÐ6IÑIÔIÐIÐIÑIÐIÐIÐIÐIÐIÑIÐIÕIÕIÔIÐIÑIÔIÑIÔIÐIÐIÐIÐIÐIÐIÐIÐIÐIØÔ2ÐI¸jÐIµg¸jÑ6IÔ6IÐIÐ2Ð6IÒIÐIÐIÑIÕIÔIÐIÐIÐIÐIÐ2Ð6IÐIÑIÔIÐIÕIÔIÑIÔIÐIÐIÕIÔIˆ>ÑIÔIÐIÕIÔIˆ>ÑIÔIÐIÐIÕIÔIÐ2ÑIÔIÐIÕIÔIÑIÔIÐIÐIÕIÔIµgÑIÔIÐIÕIÔIµgÑIÔIÐIÐIÕIÔI¸jÑIÔIÕIÔIÐ6IÑIÔIÐIÐIÑIÐIÐIÐIÐIÐIÑIÐIÕIÕIÔIÐIÑIÔIÑIÔIÐIÐIÐIÐIÐIÐIÐIÐIÐIØÔ/ÐF¸:ÐFµ7¸:Ñ3FÔ3FÐFÐ/Ð3FÒFÐFÐFÑFÕFÔFÐFÐFÐFÐFÐ/Ð3FÐ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ÐFÕFÔFµ7ÑFÔFÐFÕFÔFµ7ÑFÔFÐFÐFÕFÔF¸:ÑFÔFÕFÔFÐ3FÑ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ØÔ+Ð@°xÐ@­w°xÑ/@Ô/@Ð@Ð+Ð/@Ò@Ð@Ð@Ñ@Õ@Ô@Ð@Ð@Ð@Ð@Ð+Ð/@Ð@Ñ@Ô@Ð@Õ@Ô@Ñ@Ô@Ð@Ð@Õ@Ô@ˆ>Ñ@Ô@Ð@Õ@Ô@ˆ>Ñ@Ô@Ð@Ð@Õ@Ô@Ð+Ñ@Ô@Ð@Õ@Ô@Ñ@Ô@Ð@Ð@Õ@Ô@­wÑ@Ô@Ð@Õ@Ô@­wÑ@Ô@Ð@Ð@Õ@Ô@°xÑ@Ô@Õ@Ô@Ð/@Ñ@Ô@Ð@Ð@Ñ@Ð@Ð@Ð@Ð@Ð@Ñ@Ð@Õ@Õ@Ô@Ð@Ñ@Ô@Ñ@Ô@Ð@Ð@Ð@Ð@Ð@Ð@Ð@Ð@Ð@ØÔ(Ð=°9Ð=­7°9Ñ+=Ô+=Ð=Ð(Ð+=Ò=Ð=Ð=Ñ=Õ=Ô=Ð=Ð=Ð=Ð=Ð(Ð+=Ð=Ñ=Ô=Ð=Õ=Ô=Ñ=Ô=Ð=Ð=Õ=Ô=ˆ>Ñ=Ô=Ð=Õ=Ô=ˆ>Ñ=Ô=Ð=Ð=Õ=Ô=Ð(Ñ=Ô=Ð=Õ=Ô=Ñ=Ô=Ð=Ð=Õ=Ô=­7Ñ=Ô=Ð=Õ=Ô=­7Ñ=Ô=Ð=Ð=Õ=Ô=°9Ñ=Ô=Õ=Ô=Ð+=Ñ=Ô=Ð=Ð=Ñ=Ð=Ð=Ð=Ð=Ð=Ñ=Ð=Õ=Õ=Ô=Ð=Ñ=Ô=Ñ=Ô=Ð=Ð=Ð=Ð=Ð=Ð=Ð=Ð=Ð=Ð=Ð=rV   c                 ó�  — t          ¦   «         } |                      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 �]‡}|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}	}|j        }d}||u }	|	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}	}|j        }|j        }||k    }	|	sèt          j        d|	fd||f¦  «        dt          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        nd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}	}�Œ‰|                      ¦   «         }|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}	}|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}	}|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}	}|j        }d}t)          |¦  «        }||k    }	|	�st          j        d|	fd ||f¦  «        dt          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        nd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}}dS )%ud   Kiá»ƒm thá»­ Trá»¥ cá»™t 4: Hao há»¥t cÃ¡t Ä‘Ã¡ Cty Trung KiÃªn (0201805660) vÃ  kiá»ƒm toÃ¡n CO/CQ.Ú
0201805660)Úsupplier_tax_idé   r   )z0%(py3)s
{%(py3)s = %(py0)s(%(py1)s)
} == %(py6)sr   Úloss_recordsr[   r0   r"   N)z7%(py2)s
{%(py2)s = %(py0)s.supplier_tax_id
} == %(py5)sÚrecr   r   r   Tr\   )z6%(py2)s
{%(py2)s = %(py0)s.is_within_norm
} is %(py5)s)ú<=)zh%(py2)s
{%(py2)s = %(py0)s.actual_loss_rate_pct
} <= %(py6)s
{%(py6)s = %(py4)s.standard_loss_norm_pct
}r„   r   )z>%(py2)s
{%(py2)s = %(py0)s.total_invoices_audited
} == %(py5)sÚ
cert_audit)z=%(py2)s
{%(py2)s = %(py0)s.fully_compliant_count
} == %(py5)sé   rX   )z>%(py2)s
{%(py2)s = %(py0)s.missing_lab_test_count
} >= %(py5)sr*   r%   )z\%(py2)s
{%(py2)s = %(py0)s.held_payments_value_vnd
} > %(py8)s
{%(py8)s = %(py4)s(%(py6)s)
}r   r'   r#   r$   )r   Úaudit_material_lossr   r3   r4   r5   r6   r7   r8   r9   r:   rŽ   Úis_within_normÚactual_loss_rate_pctÚstandard_loss_norm_pctÚaudit_quality_certificatesÚtotal_invoices_auditedÚfully_compliant_countÚmissing_lab_test_countÚheld_payments_value_vndr   )rE   r�   rL   rQ   rH   rS   rO   r‘   rG   rI   rJ   rK   r“   rM   rP   s                  rT   Ú8test_pillar_4_material_loss_and_quality_certs_trung_kienrž   y   s7  € å Ñ"Ô"€Gð ×.Ò.¸|Ð.ÑLÔL€LÝˆ|ÑÔÐ! Ð!Ð Ò!Ð!Ð!Ð!Õ!Ô!Ð!Ð!Ð!Ð!Ð Ð!Ñ!Ô!Ð!Õ!Ô!Ñ!Ô!Ð!Ð!Õ!Ô!�3Ñ!Ô!Ð!Õ!Ô!�3Ñ!Ô!Ð!Ð!Ð!Õ!Ô!Ñ!Ô!Ð!Ð!Õ!Ô!ˆ|Ñ!Ô!Ð!Õ!Ô!ˆ|Ñ!Ô!Ð!Ð!Õ!Ô!ÐÑ!Ô!Õ!Ô! Ñ!Ô!Ð!Ð!Ñ!Ð!Ð!Ð!Ð!Ð!Ñ!Ð!Õ!Õ!Ô!Ð!Ñ!Ô!Ñ!Ô!Ð!Ð!Ð!Ð!Ð!Ð!Ð!Øð Fñ FˆØÔ"Ð2 lÐ2Ð" lÒ2Ð2Ð2Ð2Õ2Ô2Ð2Ð2Ð2Ð2Ð" lÐ2Ñ2Ô2Ð2Õ2Ô2Ñ2Ô2Ð2Ð2Õ2Ô2ˆsÑ2Ô2Ð2Õ2Ô2ˆsÑ2Ô2Ð2Ð2Õ2Ô2Ð"Ñ2Ô2Õ2Ô2 lÑ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ØÔ!Ð) TÐ)Ð! TÐ)Ð)Ð)Ð)Õ)Ô)Ð)Ð)Ð)Ð)Ð! TÐ)Ñ)Ô)Ð)Õ)Ô)Ñ)Ô)Ð)Ð)Õ)Ô)ˆsÑ)Ô)Ð)Õ)Ô)ˆsÑ)Ô)Ð)Ð)Õ)Ô)Ð!Ñ)Ô)Õ)Ô) TÑ)Ô)Ð)Ð)Ñ)Ð)Ð)Ð)Ð)Ð)Ñ)Ð)Õ)Õ)Ô)Ð)Ñ)Ô)Ñ)Ô)Ð)Ð)Ð)Ð)Ð)Ð)Ð)ØÔ'ÐE¨3Ô+EÐEÐ'Ð+EÒEÐEÐEÐEÕEÔEÐEÐEÐEÐEÐ'Ð+EÐEÑEÔEÐEÕEÔEÑEÔEÐEÐEÕEÔEˆsÑEÔEÐEÕEÔEˆsÑEÔEÐEÐEÕEÔEÐ'ÑEÔEÐEÕEÔEÑEÔEÐEÐEÕEÔE¨3ÑEÔEÐEÕEÔE¨3ÑEÔEÐEÐEÕEÔEÐ+EÑEÔEÐEÐEÑEÐEÐEÐEÐEÐEÑEÐEÕEÕEÔEÐEÑEÔEÑEÔEÐEÐEÐEÐEÐEÐEÐEÑEð ×3Ò3Ñ5Ô5€JØÔ,Ð1°Ð1Ð,°Ò1Ð1Ð1Ð1Õ1Ô1Ð1Ð1Ð1Ð1Ð,°Ð1Ñ1Ô1Ð1Õ1Ô1Ñ1Ô1Ð1Ð1Õ1Ô1ˆ:Ñ1Ô1Ð1Õ1Ô1ˆ:Ñ1Ô1Ð1Ð1Õ1Ô1Ð,Ñ1Ô1Õ1Ô1°Ñ1Ô1Ð1Ð1Ñ1Ð1Ð1Ð1Ð1Ð1Ñ1Ð1Õ1Õ1Ô1Ð1Ñ1Ô1Ñ1Ô1Ð1Ð1Ð1Ð1Ð1Ð1Ð1ØÔ+Ð0¨qÐ0Ð+¨qÒ0Ð0Ð0Ð0Õ0Ô0Ð0Ð0Ð0Ð0Ð+¨qÐ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¨qÑ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ØÔ,Ð1°Ð1Ð,°Ò1Ð1Ð1Ð1Õ1Ô1Ð1Ð1Ð1Ð1Ð,°Ð1Ñ1Ô1Ð1Õ1Ô1Ñ1Ô1Ð1Ð1Õ1Ô1ˆ:Ñ1Ô1Ð1Õ1Ô1ˆ:Ñ1Ô1Ð1Ð1Õ1Ô1Ð,Ñ1Ô1Õ1Ô1°Ñ1Ô1Ð1Ð1Ñ1Ð1Ð1Ð1Ð1Ð1Ñ1Ð1Õ1Õ1Ô1Ð1Ñ1Ô1Ñ1Ô1Ð1Ð1Ð1Ð1Ð1Ð1Ð1ØÔ-ÐA¸ÐAµ¸Ñ0AÔ0AÐAÐ-Ð0AÒAÐAÐAÑAÕAÔAÐAÐAÐAÐAÐ-Ð0AÐAÑAÔAÐAÕAÔAÑAÔAÐAÐAÕAÔAˆ:ÑAÔAÐAÕAÔAˆ:ÑAÔAÐAÐAÕAÔAÐ-ÑAÔAÐAÕAÔAÑAÔAÐAÐAÕAÔAµÑAÔAÐAÕAÔAµÑAÔAÐAÐAÕAÔA¸ÑAÔAÕAÔAÐ0AÑAÔAÐAÐAÑAÐAÐAÐAÐAÐAÑAÐAÕAÕAÔAÐAÑAÔAÑAÔAÐAÐAÐAÐAÐAÐAÐAÐAÐAÐAÐArV   c                 óö  — t          ¦   «         } i | _        t          | ¦  «        }t          ¦   «         }|                     ddddddœ¦  «        }dd|› �i}|                     d	d
d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         }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}||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"|¬#¦  «        }|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}}|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        |¦  «        t          j        |¦  «        d(œz  }d)d*|iz  }t          t          j        |¦  «        ¦  «        ‚dx}x}x}x}}|                     d+d,d-d.d/d0d1d2d3d4d5œ	|¬¦  «        }|j        }d}||k    }|sªt          j        d|fd||f¦  «        d6t          j
        ¦   «         v st          j        |¦  «        rt          j        |¦  «        nd6t          j        |¦  «        t          j        |¦  «        dœz  }	dd|	iz  }
t          t          j        |
¦  «        ¦  «        ‚dx}x}}|                     ¦   «         d7         }d.}||k    }|slt          j        d|fd||f¦  «        t          j        |¦  «        t          j        |¦  «        dœz  }dd|iz  }t          t          j        |¦  «        ¦  «        ‚dx}x}}|                     d8|¬#¦  «        }|j        }d}||k    }|sªt          j        d|fd||f¦  «        d9t          j
        ¦   «         v st          j        |¦  «        rt          j        |¦  «        nd9t          j        |¦  «        t          j        |¦  «        dœz  }	dd|	iz  }
t          t          j        |
¦  «        ¦  «        ‚dx}x}}|                     ¦   «         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<|¬#¦  «        }|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}}|                     ¦   «         d7         }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?|¬#¦  «        }|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}}|j        } |¦   «         }t#          |¦  «        }dA}||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        |¦  «        t          j        |¦  «        d(œz  }d)d*|iz  }t          t          j        |¦  «        ¦  «        ‚dx}x}x}x}}|                     dB|¬#¦  «        }|j        }d}||k    }|sªt          j        d|fd||f¦  «        dCt          j
        ¦   «         v st          j        |¦  «        rt          j        |¦  «        ndCt          j        |¦  «        t          j        |¦  «        dœz  }	dd|	iz  }
t          t          j        |
¦  «        ¦  «        ‚dx}x}}|                     ¦   «         dD         }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 )EuR   Kiá»ƒm thá»­ toÃ n diá»‡n 7 REST API endpoints cá»§a 4 Trá»¥ Cá»™t qua TestClient.ztest-superadmin-idzson.dinhson@dscons.vnÚ
superadminu   Nguyá»…n SÄ© SÆ¡nr   )ÚidÚemailÚroleÚ	full_nameÚ
company_idÚAuthorizationzBearer z/v1/pillars/epc/ipc/export-03ar   r   )r   r   )ÚjsonÚheaderséÈ   r   ©z3%(py2)s
{%(py2)s = %(py0)s.status_code
} == %(py5)sÚres1r   r   r   Nr2   )z%(py1)s == %(py4)s)r    r(   r,   r)   rD   )Úin)z%(py1)s in %(py3)sÚdata1)r    r!   zassert %(py5)sr   z2/v1/pillars/epc/3-way-match/DA-KM-BENKEM-2025-2026)r¨   Úres2rX   )zb%(py7)s
{%(py7)s = %(py0)s(%(py5)s
{%(py5)s = %(py3)s
{%(py3)s = %(py1)s.json
}()
})
} >= %(py10)sr   )r   r    r!   r   r   r$   zassert %(py12)sÚpy12z%/v1/pillars/logistics/dispatch-ordersrg   u   LÃª VÄƒn Tiáº¿nrh   u   Cty ThoÃ¡t NÆ°á»›c Háº£i PhÃ²ngu   BÃ¹n cá»‘ng ngáº§mu	   LÃª ChÃ¢nu
   Ä�Ã¬nh VÅ©é   z60.0000ri   Úres3rl   zG/v1/pillars/logistics/sludge-transport/reconcile?billing_period=2026-Q1Úres4r}   rw   zD/v1/pillars/equipment/rental-reconcile?equipment_code=EXC-KOBELCO-02Úres5rƒ   z;/v1/pillars/materials/loss-audit?supplier_tax_id=0201805660Úres6r�   ú0/v1/pillars/materials/quality-certificates/auditÚres7rš   )r   Údependency_overridesr   r
   Úcreate_jwt_tokenÚpostÚstatus_coder3   r4   r5   r6   r7   r8   r9   r:   r§   Úgetr   )ÚappÚclientÚauthÚtokenr¨   r«   rG   rH   rI   rJ   rK   r­   Ú@py_assert0rL   rR   rS   Ú@py_format4r®   rN   Ú@py_assert9Ú@py_assert8rP   Ú@py_format13r±   r²   r³   r´   r¶   s                               rT   Ú*test_four_pillars_api_endpoints_authorizedrÅ   �   s¬  € å
‰,Œ,€CØ!€CÔÝ˜‰_Œ_€FÝ‰=Œ=€DØ×!Ò!à&Ø,Ø Ø,Ø&ð	
ð 	
ñô €Eð Ð 1¨%Ð 1Ð 1Ð2€Gð �;Š;Ø(Ø6ÈÐKÐKØð ñ ô €Dð
 ÔÐ"˜sÐ"Ð˜sÒ"Ð"Ð"Ð"Õ"Ô"Ð"Ð"Ð"Ð"Ð˜sÐ"Ñ"Ô"Ð"Õ"Ô"Ñ"Ô"Ð"Ð"Õ"Ô"ˆ4Ñ"Ô"Ð"Õ"Ô"ˆ4Ñ"Ô"Ð"Ð"Õ"Ô"ÐÑ"Ô"Õ"Ô"˜sÑ"Ô"Ð"Ð"Ñ"Ð"Ð"Ð"Ð"Ð"Ñ"Ð"Õ"Õ"Ô"Ð"Ñ"Ô"Ñ"Ô"Ð"Ð"Ð"Ð"Ð"Ð"Ð"Ø�IŠI‰KŒK€EØÐ$Ô%Ð5¨Ð5Ð%¨Ò5Ð5Ð5Ð5Õ5Ô5Ð5Ð5Ð5Ð5Ð%¨Ð5Ñ5Ô5Õ5Ô5Ð%Ñ5Ô5Õ5Ô5¨Ñ5Ô5Ð5Ð5Ñ5Ð5Ð5Ð5Ð5Ð5Ñ5Ð5Õ5Õ5Ô5Ð5Ñ5Ô5Ñ5Ô5Ð5Ð5Ð5Ð5Ð5Ð5Ð5Ø'Ð0Ð'¨5Ð0Ð0Ð0Ð0Õ0Ô0Ð0Ð0Ð0Ð0Ð'¨5Ð0Ñ0Ô0Õ0Ô0Ð'Ñ0Ô0Ð0Õ0Ô0Ñ0Ô0Ð0Ð0Õ0Ô0¨5Ñ0Ô0Ð0Õ0Ô0¨5Ñ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ð ñ ô €Dð ÔÐ"˜sÐ"Ð˜sÒ"Ð"Ð"Ð"Õ"Ô"Ð"Ð"Ð"Ð"Ð˜sÐ"Ñ"Ô"Ð"Õ"Ô"Ñ"Ô"Ð"Ð"Õ"Ô"ˆ4Ñ"Ô"Ð"Õ"Ô"ˆ4Ñ"Ô"Ð"Ð"Õ"Ô"ÐÑ"Ô"Õ"Ô"˜sÑ"Ô"Ð"Ð"Ñ"Ð"Ð"Ð"Ð"Ð"Ñ"Ð"Õ"Õ"Ô"Ð"Ñ"Ô"Ñ"Ô"Ð"Ð"Ð"Ð"Ð"Ð"Ð"ØŒyÐ ˆyˆy‰{Œ{Ð �3ˆ{ÑÔÐ ˜qÐ Ð˜qÒ Ð Ð Ñ Õ Ô Ð Ð Ð Ð Ð˜qÐ Ñ Ô Ð Õ Ô Ñ Ô Ð Ð Õ Ô �3Ñ Ô Ð Õ Ô �3Ñ Ô Ð Ð Ð Õ Ô Ñ Ô Ð Ð Õ Ô ˆtÑ Ô Ð Õ Ô ˆtÑ Ô Ð Ð Õ Ô ˆyÑ Ô Õ Ô ˆ{Ñ Ô Õ Ô ÐÑ Ô Õ Ô ˜qÑ Ô Ð Ð Ñ Ð Ð Ð Ð Ð Ñ Ð Õ Õ Ô Ð Ñ Ô Ñ Ô Ð Ð Ð Ð Ð Ð Ð Ð Ð Ð Ð ð �;Š;Ø/à'Ø,Ø*Ø=Ø.Ø*Ø)Ø Ø#,ð

ð 

ð ð ñ ô €Dð ÔÐ"˜sÐ"Ð˜sÒ"Ð"Ð"Ð"Õ"Ô"Ð"Ð"Ð"Ð"Ð˜sÐ"Ñ"Ô"Ð"Õ"Ô"Ñ"Ô"Ð"Ð"Õ"Ô"ˆ4Ñ"Ô"Ð"Õ"Ô"ˆ4Ñ"Ô"Ð"Ð"Õ"Ô"ÐÑ"Ô"Õ"Ô"˜sÑ"Ô"Ð"Ð"Ñ"Ð"Ð"Ð"Ð"Ð"Ñ"Ð"Õ"Õ"Ô"Ð"Ñ"Ô"Ñ"Ô"Ð"Ð"Ð"Ð"Ð"Ð"Ð"Ø�9Š9‰;Œ;Ð'Ô(Ð8¨LÐ8Ð(¨LÒ8Ð8Ð8Ð8Õ8Ô8Ð8Ð8Ð8Ð8Ð(¨LÐ8Ñ8Ô8Õ8Ô8Ð(Ñ8Ô8Õ8Ô8¨LÑ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ð �:Š:ØQØð ñ ô €Dð ÔÐ"˜sÐ"Ð˜sÒ"Ð"Ð"Ð"Õ"Ô"Ð"Ð"Ð"Ð"Ð˜sÐ"Ñ"Ô"Ð"Õ"Ô"Ñ"Ô"Ð"Ð"Õ"Ô"ˆ4Ñ"Ô"Ð"Õ"Ô"ˆ4Ñ"Ô"Ð"Ð"Õ"Ô"ÐÑ"Ô"Õ"Ô"˜sÑ"Ô"Ð"Ð"Ñ"Ð"Ð"Ð"Ð"Ð"Ñ"Ð"Õ"Õ"Ô"Ð"Ñ"Ô"Ñ"Ô"Ð"Ð"Ð"Ð"Ð"Ð"Ð"Ø�9Š9‰;Œ;Ð.Ô/Ð<°9Ð<Ð/°9Ò<Ð<Ð<Ð<Õ<Ô<Ð<Ð<Ð<Ð<Ð/°9Ð<Ñ<Ô<Õ<Ô<Ð/Ñ<Ô<Õ<Ô<°9Ñ<Ô<Ð<Ð<Ñ<Ð<Ð<Ð<Ð<Ð<Ñ<Ð<Õ<Õ<Ô<Ð<Ñ<Ô<Ñ<Ô<Ð<Ð<Ð<Ð<Ð<Ð<Ð<ð �:Š:ØNØð ñ ô €Dð ÔÐ"˜sÐ"Ð˜sÒ"Ð"Ð"Ð"Õ"Ô"Ð"Ð"Ð"Ð"Ð˜sÐ"Ñ"Ô"Ð"Õ"Ô"Ñ"Ô"Ð"Ð"Õ"Ô"ˆ4Ñ"Ô"Ð"Õ"Ô"ˆ4Ñ"Ô"Ð"Ð"Õ"Ô"ÐÑ"Ô"Õ"Ô"˜sÑ"Ô"Ð"Ð"Ñ"Ð"Ð"Ð"Ð"Ð"Ñ"Ð"Õ"Õ"Ô"Ð"Ñ"Ô"Ñ"Ô"Ð"Ð"Ð"Ð"Ð"Ð"Ð"Ø�9Š9‰;Œ;Ð'Ô(Ð8¨LÐ8Ð(¨LÒ8Ð8Ð8Ð8Õ8Ô8Ð8Ð8Ð8Ð8Ð(¨LÐ8Ñ8Ô8Õ8Ô8Ð(Ñ8Ô8Õ8Ô8¨LÑ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ð �:Š:ØEÈwð ñ ô €Dð ÔÐ"˜sÐ"Ð˜sÒ"Ð"Ð"Ð"Õ"Ô"Ð"Ð"Ð"Ð"Ð˜sÐ"Ñ"Ô"Ð"Õ"Ô"Ñ"Ô"Ð"Ð"Õ"Ô"ˆ4Ñ"Ô"Ð"Õ"Ô"ˆ4Ñ"Ô"Ð"Ð"Õ"Ô"ÐÑ"Ô"Õ"Ô"˜sÑ"Ô"Ð"Ð"Ñ"Ð"Ð"Ð"Ð"Ð"Ñ"Ð"Õ"Õ"Ô"Ð"Ñ"Ô"Ñ"Ô"Ð"Ð"Ð"Ð"Ð"Ð"Ð"ØŒyÐ ˆyˆy‰{Œ{Ð �3ˆ{ÑÔÐ ˜qÐ Ð˜qÒ Ð Ð Ñ Õ Ô Ð Ð Ð Ð Ð˜qÐ Ñ Ô Ð Õ Ô Ñ Ô Ð Ð Õ Ô �3Ñ Ô Ð Õ Ô �3Ñ Ô Ð Ð Ð Õ Ô Ñ Ô Ð Ð Õ Ô ˆtÑ Ô Ð Õ Ô ˆtÑ Ô Ð Ð Õ Ô ˆyÑ Ô Õ Ô ˆ{Ñ Ô Õ Ô ÐÑ Ô Õ Ô ˜qÑ Ô Ð Ð Ñ Ð Ð Ð Ð Ð Ñ Ð Õ Õ Ô Ð Ñ Ô Ñ Ô Ð Ð Ð Ð Ð Ð Ð Ð Ð Ð Ð ð �:Š:Ø:ÀGð ñ ô €Dð ÔÐ"˜sÐ"Ð˜sÒ"Ð"Ð"Ð"Õ"Ô"Ð"Ð"Ð"Ð"Ð˜sÐ"Ñ"Ô"Ð"Õ"Ô"Ñ"Ô"Ð"Ð"Õ"Ô"ˆ4Ñ"Ô"Ð"Õ"Ô"ˆ4Ñ"Ô"Ð"Ð"Õ"Ô"ÐÑ"Ô"Õ"Ô"˜sÑ"Ô"Ð"Ð"Ñ"Ð"Ð"Ð"Ð"Ð"Ñ"Ð"Õ"Õ"Ô"Ð"Ñ"Ô"Ñ"Ô"Ð"Ð"Ð"Ð"Ð"Ð"Ð"Ø�9Š9‰;Œ;Ð/Ô0Ð5°AÐ5Ð0°AÒ5Ð5Ð5Ð5Õ5Ô5Ð5Ð5Ð5Ð5Ð0°AÐ5Ñ5Ô5Õ5Ô5Ð0Ñ5Ô5Õ5Ô5°AÑ5Ô5Ð5Ð5Ñ5Ð5Ð5Ð5Ð5Ð5Ñ5Ð5Õ5Õ5Ô5Ð5Ñ5Ô5Ñ5Ô5Ð5Ð5Ð5Ð5Ð5Ð5Ð5Ð5Ð5rV   c                 óú  — t          ¦   «         } i | _        t          | ¦  «        }|                     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 )
uB   Kiá»ƒm thá»­ tá»« chá»‘i truy cáº­p 401 khi khÃ´ng truyá»�n Token.rµ   i‘  r   rª   Úresr   r   r   N)r   r·   r   r»   rº   r3   r4   r5   r6   r7   r8   r9   r:   )r¼   r½   rÇ   rG   rH   rI   rJ   rK   s           rT   Ú"test_four_pillars_api_unauthorizedrÈ   å   s  € å
‰,Œ,€CØ!€CÔÝ˜‰_Œ_€FØ
�*Š*ÐGÑ
HÔ
H€CØŒ?Ð!˜cÐ!ˆ?˜cÒ!Ð!Ð!Ð!Õ!Ô!Ð!Ð!Ð!Ð!ˆ?˜cÐ!Ñ!Ô!Ð!Õ!Ô!Ñ!Ô!Ð!Ð!Õ!Ô!ˆ3Ñ!Ô!Ð!Õ!Ô!ˆ3Ñ!Ô!Ð!Ð!Õ!Ô!ˆ?Ñ!Ô!Õ!Ô!˜cÑ!Ô!Ð!Ð!Ñ!Ð!Ð!Ð!Ð!Ð!Ñ!Ð!Õ!Õ!Ô!Ð!Ñ!Ô!Ñ!Ô!Ð!Ð!Ð!Ð!Ð!Ð!Ð!Ð!Ð!rV   )Ú__doc__Ú
__future__r   Úbuiltinsr5   Ú_pytest.assertion.rewriteÚ	assertionÚrewriter3   Údecimalr   Úfastapi.testclientr   Úapp.mainr   Úapp.models.four_pillars_schemasr   r   r	   Ú)app.modules.auth.application.auth_servicer
   Ú6app.modules.financial.application.four_pillars_servicer   rU   re   r€   r‹   rž   rÅ   rÈ   © rV   rT   ú<module>rÖ      sH  ðØ pÐ pà "Ð "Ð "Ð "Ð "Ð "à  € € € € € € € € € € € € Ð Ð Ð Ð Ð Ð à )Ð )Ð )Ð )Ð )Ð )à Ð Ð Ð Ð Ð ðð ð ð ð ð ð ð ð ð ð
 BÐ AÐ AÐ AÐ AÐ AØ UÐ UÐ UÐ UÐ UÐ Uð&Kð &Kð &KðR	6ð 	6ð 	6ðJð Jð Jð>>ð >ð >ðBð Bð Bð.R6ð R6ð R6ðj"ð "ð "ð "ð "rV   