§
    „ã¯jGq  ã                   ó  — d Z ddlZddlmc mZ ddl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 d„ ej        e<    ee¦  «        Z e¦   «         Zd	„ Zd
„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z d„ Z!d„ Z"d„ Z#d„ Z$d„ Z%d„ Z&dS )zDUnit & Integration tests for Enterprise E-Invoice Processing Engine.é    N)ÚDecimal)Ú
TestClient)Úget_current_user)Úapp)ÚInvoiceProcessingServiceÚ
to_decimalc                  ó   — dddddœS )Nzadmin-idzadmin@dscons.vnÚ
superadminu$   Ban Quáº£n Trá»‹ Há»‡ Thá»‘ng DSCons)ÚidÚemailÚroleÚ	full_name© r   ó    ú;C:\Projects\DSCons\tests\test_invoice_processing_service.pyú<lambda>r      s   € Ø
ØØØ7ð	6ð 6€ r   c            	      ó¾
  — d} t          | ¦  «        }d}t          |¦  «        }||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        |¦  «        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}x}}d} t          | ¦  «        }d}t          |¦  «        }||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        |¦  «        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}x}}d
} t          | ¦  «        }d}t          |¦  «        }||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        |¦  «        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}x}}d} t          | ¦  «        }d}t          |¦  «        }||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        |¦  «        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}x}}d
S )uA   Kiá»ƒm tra Ä‘á»™ chÃ­nh xÃ¡c sá»‘ há»�c Decimal (NUMERIC(18, 4)).z
1500000.50z1500000.5000©ú==)zP%(py4)s
{%(py4)s = %(py0)s(%(py2)s)
} == %(py10)s
{%(py10)s = %(py6)s(%(py8)s)
}r   r   )Úpy0Úpy2Úpy4Úpy6Úpy8Úpy10zassert %(py12)sÚpy12Ng©j‚¨û°(@z12.3457z0.0000Ú )
r   r   Ú
@pytest_arÚ_call_reprcompareÚ@py_builtinsÚlocalsÚ_should_repr_global_nameÚ	_safereprÚAssertionErrorÚ_format_explanation)Ú@py_assert1Ú@py_assert3Ú@py_assert7Ú@py_assert9Ú@py_assert5Ú@py_format11Ú@py_format13s          r   Útest_to_decimal_precisionr-      sw  € à"Ð>�:�lÑ#Ô#Ð>¨~Ð>¥w¨~Ñ'>Ô'>Ð>Ð#Ð'>Ò>Ð>Ð>Ñ>Õ>Ô>Ð>Ð>Ð>Ð>Ð#Ð'>Ð>Ñ>Ô>Ð>Õ>Ô>Ñ>Ô>Ð>Ð>Õ>Ô>�:Ñ>Ô>Ð>Õ>Ô>�:Ñ>Ô>Ð>Ð>Õ>Ô>�lÑ>Ô>Õ>Ô>Ð#Ñ>Ô>Ð>Õ>Ô>Ñ>Ô>Ð>Ð>Õ>Ô>¥wÑ>Ô>Ð>Õ>Ô>¥wÑ>Ô>Ð>Ð>Õ>Ô>¨~Ñ>Ô>Õ>Ô>Ð'>Ñ>Ô>Ð>Ð>Ñ>Ð>Ð>Ð>Ð>Ð>Ñ>Ð>Õ>Õ>Ô>Ð>Ñ>Ô>Ñ>Ô>Ð>Ð>Ð>Ð>Ð>Ð>Ð>Ð>Ð>Ð>Ð>ØÐ5�:�hÑÔÐ5¨9Ð5¥7¨9Ñ#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�hÑ5Ô5Õ5Ô5ÐÑ5Ô5Ð5Õ5Ô5Ñ5Ô5Ð5Ð5Õ5Ô5¥7Ñ5Ô5Ð5Õ5Ô5¥7Ñ5Ô5Ð5Ð5Õ5Ô5¨9Ñ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�:�dÑÔÐ0 xÐ0�w xÑ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�dÑ0Ô0Õ0Ô0ÐÑ0Ô0Ð0Õ0Ô0Ñ0Ô0Ð0Ð0Õ0Ô0�wÑ0Ô0Ð0Õ0Ô0�wÑ0Ô0Ð0Ð0Õ0Ô0 xÑ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ØÐ.�:�b‰>Œ>Ð. XÐ.�W XÑ.Ô.Ð.ˆ>Ð.Ò.Ð.Ð.Ñ.Õ.Ô.Ð.Ð.Ð.Ð.ˆ>Ð.Ð.Ñ.Ô.Ð.Õ.Ô.Ñ.Ô.Ð.Ð.Õ.Ô.�:Ñ.Ô.Ð.Õ.Ô.�:Ñ.Ô.Ð.Ð.Õ.Ô.�bÑ.Ô.Õ.Ô.ˆ>Ñ.Ô.Ð.Õ.Ô.Ñ.Ô.Ð.Ð.Õ.Ô.�WÑ.Ô.Ð.Õ.Ô.�WÑ.Ô.Ð.Ð.Õ.Ô. XÑ.Ô.Õ.Ô.Ð.Ñ.Ô.Ð.Ð.Ñ.Ð.Ð.Ð.Ð.Ð.Ñ.Ð.Õ.Õ.Ô.Ð.Ñ.Ô.Ñ.Ô.Ð.Ð.Ð.Ð.Ð.Ð.Ð.Ð.Ð.Ð.Ð.Ð.Ð.r   c                  ó.  — d} t                                | 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}||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}||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}||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}||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}t          |¦  «        }||k    }|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}}|d         }d}t          |¦  «        }||k    }|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}}|d         }d}t          |¦  «        }||k    }|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}}|d         }d }||u }|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#         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,}||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 )-uO   Kiá»ƒm tra bÃ³c tÃ¡ch XML chuáº©n Nghá»‹ Ä‘á»‹nh 123 cá»§a Tá»•ng Cá»¥c Thuáº¿.u  <?xml version="1.0" encoding="UTF-8"?>
<HDon>
    <DLHDon>
        <TTChung>
            <PBan>2.0.0</PBan>
            <THDon>HÃ“A Ä�Æ N GIÃ� TRá»Š GIA TÄ‚NG</THDon>
            <KHMSHDon>1</KHMSHDon>
            <KHHDon>1C26TTEST</KHHDon>
            <SHDon>00099999</SHDon>
            <NLap>2026-08-20</NLap>
            <DVTTe>VND</DVTTe>
            <TGia>1.0000</TGia>
            <MCCQT>TCT-TEST-99999</MCCQT>
        </TTChung>
        <NDHDon>
            <NBan>
                <Ten>CÃ”NG TY THÃ‰P TIáº¾N LÃŠN Háº¢I PHÃ’NG</Ten>
                <MST>0209998881</MST>
                <DChi>Quáº­n NgÃ´ Quyá»�n, Háº£i PhÃ²ng</DChi>
            </NBan>
            <NMua>
                <Ten>CÃ”NG TY TNHH XÃ‚Y Dá»°NG Ä�á»ŠNH SÆ N</Ten>
                <MST>0202111150</MST>
                <DChi>ThÃ´n TÃº Ä�Ã´i 3, xÃ£ Nghi DÆ°Æ¡ng, TP Háº£i PhÃ²ng</DChi>
            </NMua>
            <DSHHDVu>
                <HHDVu>
                    <STT>1</STT>
                    <THHVu>ThÃ©p hÃ¬nh chá»¯ I 150x75x5x7</THHVu>
                    <DVTinh>CÃ¢y</DVTinh>
                    <SLuong>10.0000</SLuong>
                    <DGia>2500000.0000</DGia>
                    <ThTien>25000000.0000</ThTien>
                    <TSuat>8%</TSuat>
                    <TThue>2000000.0000</TThue>
                </HHDVu>
            </DSHHDVu>
            <TToan>
                <TgTCThue>25000000.0000</TgTCThue>
                <TgTThue>2000000.0000</TgTThue>
                <TgTTTBSo>27000000.0000</TgTTTBSo>
                <TgTTTBChu>Hai mÆ°Æ¡i báº£y triá»‡u Ä‘á»“ng.</TgTTTBChu>
            </TToan>
        </NDHDon>
    </DLHDon>
    <Signature>
        <Subject>CN=CÃ”NG TY THÃ‰P TIáº¾N LÃŠN, MST=0209998881</Subject>
        <SigningTime>2026-08-20T10:00:00Z</SigningTime>
    </Signature>
</HDon>Útest_gdt©Úsource_channelÚ	directionÚinputr   ©z%(py1)s == %(py4)s©Úpy1r   úassert %(py6)sr   NÚinvoice_numberÚ00099999Úinvoice_seriesÚ	1C26TTESTÚseller_tax_codeÚ
0209998881Úbuyer_tax_codeÚ
0202111150Úsubtotal_amount_vndz25000000.0000©z0%(py1)s == %(py7)s
{%(py7)s = %(py3)s(%(py5)s)
}r   ©r6   Úpy3Úpy5Úpy7úassert %(py9)sÚpy9Úvat_amount_vndz2000000.0000Útotal_amount_vndz27000000.0000Úsignature_validT©Úis©z%(py1)s is %(py4)sÚitemsé   ©z0%(py4)s
{%(py4)s = %(py0)s(%(py2)s)
} == %(py7)sÚlen©r   r   r   rE   r   Ú	item_nameu   ThÃ©p hÃ¬nh chá»¯ I 150x75x5x7Úunitu   CÃ¢y©ÚserviceÚparse_xml_contentr   r   r#   r$   r%   r   r    r!   r"   rQ   )Úsample_gdt_xmlÚparsedÚ@py_assert0r'   Ú@py_assert2Ú@py_format5Ú@py_format7Ú@py_assert4Ú@py_assert6Ú@py_format8Ú@py_format10r&   r*   s                r   Útest_parse_gdt_nd123_xmlrb      s¨	  € ð1€Nõf ×&Ò& ~ÀjÐ&ÑQÔQ€FØ�+ÔÐ) 'Ð)Ð 'Ò)Ð)Ð)Ð)Õ)Ô)Ð)Ð)Ð)Ð)Ð 'Ð)Ñ)Ô)Õ)Ô)ÐÑ)Ô)Õ)Ô) 'Ñ)Ô)Ð)Ð)Ñ)Ð)Ð)Ð)Ð)Ð)Ñ)Ð)Õ)Õ)Ô)Ð)Ñ)Ô)Ñ)Ô)Ð)Ð)Ð)Ð)Ð)Ð)Ð)ØÐ"Ô#Ð1 zÐ1Ð# zÒ1Ð1Ð1Ð1Õ1Ô1Ð1Ð1Ð1Ð1Ð# zÐ1Ñ1Ô1Õ1Ô1Ð#Ñ1Ô1Õ1Ô1 zÑ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ØÐ"Ô#Ð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Ð2Ð2Ð2Ð2Ñ2Ð2Õ2Õ2Ô2Ð2Ñ2Ô2Ñ2Ô2Ð2Ð2Ð2Ð2Ð2Ð2Ð2ØÐ#Ô$Ð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Ð4Ð4Ð4Ñ4Ð4Õ4Õ4Ô4Ð4Ñ4Ô4Ñ4Ô4Ð4Ð4Ð4Ð4Ð4Ð4Ð4ØÐ"Ô#Ð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ØÐ'Ô(ÐD°OÐD­G°OÑ,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­GÑDÔDÐDÕDÔD­GÑDÔDÐDÐDÕDÔD°OÑ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ØÐ"Ô#Ð>¨~Ð>¥w¨~Ñ'>Ô'>Ð>Ð#Ð'>Ò>Ð>Ð>Ð>Õ>Ô>Ð>Ð>Ð>Ð>Ð#Ð'>Ð>Ñ>Ô>Õ>Ô>Ð#Ñ>Ô>Ð>Õ>Ô>Ñ>Ô>Ð>Ð>Õ>Ô>¥wÑ>Ô>Ð>Õ>Ô>¥wÑ>Ô>Ð>Ð>Õ>Ô>¨~Ñ>Ô>Õ>Ô>Ð'>Ñ>Ô>Ð>Ð>Ñ>Ð>Ð>Ð>Ð>Ð>Ñ>Ð>Õ>Õ>Ô>Ð>Ñ>Ô>Ñ>Ô>Ð>Ð>Ð>Ð>Ð>Ð>Ð>Ð>Ð>ØÐ$Ô%Ð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Ñ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ØÐ#Ô$Ð,¨Ð,Ð$¨Ð,Ð,Ð,Ð,Õ,Ô,Ð,Ð,Ð,Ð,Ð$¨Ð,Ñ,Ô,Õ,Ô,Ð$Ñ,Ô,Õ,Ô,¨Ñ,Ô,Ð,Ð,Ñ,Ð,Ð,Ð,Ð,Ð,Ñ,Ð,Õ,Õ,Ô,Ð,Ñ,Ô,Ñ,Ô,Ð,Ð,Ð,Ð,Ð,Ð,Ð,Ø�gŒÐ$�3ˆÑÔÐ$ 1Ð$Ð 1Ò$Ð$Ð$Ð$Õ$Ô$Ð$Ð$Ð$Ð$Ð 1Ð$Ñ$Ô$Ð$Õ$Ô$Ñ$Ô$Ð$Ð$Õ$Ô$�3Ñ$Ô$Ð$Õ$Ô$�3Ñ$Ô$Ð$Ð$Õ$Ô$ˆÑ$Ô$Õ$Ô$ÐÑ$Ô$Õ$Ô$ 1Ñ$Ô$Ð$Ð$Ñ$Ð$Ð$Ð$Ð$Ð$Ñ$Ð$Õ$Õ$Ô$Ð$Ñ$Ô$Ñ$Ô$Ð$Ð$Ð$Ð$Ð$Ð$Ð$Ð$Ð$Ø�'Œ?˜1Ô˜kÔ*ÐNÐ.NÐNÐ*Ð.NÒNÐNÐNÐNÕNÔNÐNÐNÐNÐNÐ*Ð.NÐNÑNÔNÕNÔNÐ*ÑNÔNÕNÔNÐ.NÑNÔNÐNÐNÑNÐNÐNÐNÐNÐNÑNÐNÕNÕNÔNÐNÑNÔNÑNÔNÐNÐNÐNÐNÐNÐNÐNØ�'Œ?˜1Ô˜fÔ%Ð/¨Ð/Ð%¨Ò/Ð/Ð/Ð/Õ/Ô/Ð/Ð/Ð/Ð/Ð%¨Ð/Ñ/Ô/Õ/Ô/Ð%Ñ/Ô/Õ/Ô/¨Ñ/Ô/Ð/Ð/Ñ/Ð/Ð/Ð/Ð/Ð/Ñ/Ð/Õ/Õ/Ô/Ð/Ñ/Ô/Ñ/Ô/Ð/Ð/Ð/Ð/Ð/Ð/Ð/Ð/Ð/r   c                  ó"  — d} t                                | 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}||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}||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}||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}t          |¦  «        }||k    }|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}}|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 )u;   Kiá»ƒm tra bÃ³c tÃ¡ch XML tá»« pháº§n má»�m MISA meInvoice.u2  <?xml version="1.0" encoding="UTF-8"?>
<InvoiceData>
    <InvoiceHeader>
        <InvoiceNo>00000888</InvoiceNo>
        <InvoiceSeries>1C26TDS</InvoiceSeries>
        <TemplateCode>1</TemplateCode>
        <InvoiceDate>2026-08-21</InvoiceDate>
        <SellerTaxCode>0202111150</SellerTaxCode>
        <SellerLegalName>CÃ”NG TY TNHH XÃ‚Y Dá»°NG Ä�á»ŠNH SÆ N</SellerLegalName>
        <BuyerTaxCode>0203334445</BuyerTaxCode>
        <BuyerLegalName>BAN QLDA Ä�áº¦U TÆ¯ XÃ‚Y Dá»°NG HUYá»†N AN LÃƒO</BuyerLegalName>
        <TotalAmountWithoutVAT>1200000000.0000</TotalAmountWithoutVAT>
        <VATAmount>96000000.0000</VATAmount>
        <TotalAmountWithVAT>1296000000.0000</TotalAmountWithVAT>
        <TotalAmountInWords>Má»™t tá»· hai trÄƒm chÃ­n mÆ°Æ¡i sÃ¡u triá»‡u Ä‘á»“ng.</TotalAmountInWords>
    </InvoiceHeader>
    <InvoiceDetails>
        <Item>
            <ItemName>Nghiá»‡m thu khá»‘i lÆ°á»£ng hoÃ n thÃ nh Cáº§u vÆ°á»£t sÃ´ng Ä�a Ä�á»™</ItemName>
            <UnitName>Ä�á»£t</UnitName>
            <Quantity>1.0000</Quantity>
            <UnitPrice>1200000000.0000</UnitPrice>
            <AmountWithoutVAT>1200000000.0000</AmountWithoutVAT>
            <ItemVATAmount>96000000.0000</ItemVATAmount>
            <ItemTotalAmount>1296000000.0000</ItemTotalAmount>
        </Item>
    </InvoiceDetails>
</InvoiceData>Ú	test_misar0   r2   Úoutputr   r4   r5   r7   r   Nr8   Ú00000888r<   r?   r>   Ú
0203334445rI   z1296000000.0000rA   r   rB   rF   rG   rN   rO   rP   rQ   rR   rU   )Úsample_misa_xmlrY   rZ   r'   r[   r\   r]   r^   r_   r`   ra   r&   r*   s                r   Útest_parse_misa_meinvoice_xmlri   c   sÞ  € ð€Oõ: ×&Ò& À{Ð&ÑSÔS€FØ�+ÔÐ* (Ð*Ð (Ò*Ð*Ð*Ð*Õ*Ô*Ð*Ð*Ð*Ð*Ð (Ð*Ñ*Ô*Õ*Ô*ÐÑ*Ô*Õ*Ô* (Ñ*Ô*Ð*Ð*Ñ*Ð*Ð*Ð*Ð*Ð*Ñ*Ð*Õ*Õ*Ô*Ð*Ñ*Ô*Ñ*Ô*Ð*Ð*Ð*Ð*Ð*Ð*Ð*ØÐ"Ô#Ð1 zÐ1Ð# zÒ1Ð1Ð1Ð1Õ1Ô1Ð1Ð1Ð1Ð1Ð# zÐ1Ñ1Ô1Õ1Ô1Ð#Ñ1Ô1Õ1Ô1 zÑ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ØÐ#Ô$Ð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Ð4Ð4Ð4Ñ4Ð4Õ4Õ4Ô4Ð4Ñ4Ô4Ñ4Ô4Ð4Ð4Ð4Ð4Ð4Ð4Ð4ØÐ"Ô#Ð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ØÐ$Ô%ÐCÐ1BÐC­Ð1BÑ)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Ð1BÑ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Ø�gŒÐ$�3ˆÑÔÐ$ 1Ð$Ð 1Ò$Ð$Ð$Ð$Õ$Ô$Ð$Ð$Ð$Ð$Ð 1Ð$Ñ$Ô$Ð$Õ$Ô$Ñ$Ô$Ð$Ð$Õ$Ô$�3Ñ$Ô$Ð$Õ$Ô$�3Ñ$Ô$Ð$Ð$Õ$Ô$ˆÑ$Ô$Õ$Ô$ÐÑ$Ô$Õ$Ô$ 1Ñ$Ô$Ð$Ð$Ñ$Ð$Ð$Ð$Ð$Ð$Ñ$Ð$Õ$Õ$Ô$Ð$Ñ$Ô$Ñ$Ô$Ð$Ð$Ð$Ð$Ð$Ð$Ð$Ð$Ð$Ð$Ð$r   c            	      óè  — d} t                                | d¬¦  «        }	 t                                |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}}t                                |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         }||v }|slt          j        d|fd	||f¦  «        t          j        |¦  «        t          j        |¦  «        d
œz  }dd|iz  }t          t          j        |¦  «        ¦  «        ‚dx}x}}t                                ¦   «         5 }	|	 	                    ¦   «         5 }
|
 
                    d¦  «         |	                     ¦   «          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 # t                                ¦   «         5 }	|	 	                    ¦   «         5 }
|
 
                    d¦  «         |	                     ¦   «          ddd¦  «         n# 1 swxY w Y   ddd¦  «         w # 1 swxY w Y   w xY w)uQ   Kiá»ƒm tra lÆ°u trá»¯ vÃ o PostgreSQL vÃ  cÆ¡ cháº¿ chá»‘ng trÃ¹ng láº·p SHA-256.uØ  <?xml version="1.0" encoding="UTF-8"?>
<HDon>
    <DLHDon>
        <TTChung>
            <KHMSHDon>1</KHMSHDon>
            <KHHDon>1C26TUNIQ</KHHDon>
            <SHDon>00009911</SHDon>
            <NLap>2026-08-21</NLap>
        </TTChung>
        <NDHDon>
            <NBan>
                <Ten>CÃ”NG TY XI MÄ‚NG VICEM Háº¢I PHÃ’NG</Ten>
                <MST>0200881122</MST>
            </NBan>
            <NMua>
                <Ten>CÃ”NG TY TNHH XÃ‚Y Dá»°NG Ä�á»ŠNH SÆ N</Ten>
                <MST>0202111150</MST>
            </NMua>
            <DSHHDVu>
                <HHDVu>
                    <STT>1</STT>
                    <THHVu>Xi mÄƒng PCB40 Vicem Háº£i PhÃ²ng</THHVu>
                    <DVTinh>Táº¥n</DVTinh>
                    <SLuong>50.0000</SLuong>
                    <DGia>1400000.0000</DGia>
                    <ThTien>70000000.0000</ThTien>
                    <TSuat>8%</TSuat>
                    <TThue>5600000.0000</TThue>
                </HHDVu>
            </DSHHDVu>
            <TToan>
                <TgTCThue>70000000.0000</TgTCThue>
                <TgTThue>5600000.0000</TgTThue>
                <TgTTTBSo>75600000.0000</TgTTTBSo>
            </TToan>
        </NDHDon>
    </DLHDon>
</HDon>Ú
test_dedupr0   zTest Runner©Úuser_idÚstatus©ÚsuccessÚ	duplicate©Úin©z%(py1)s in %(py4)sr5   r7   r   Nrq   r   r4   u   Ä‘Ã£ tá»“n táº¡iÚmessagez\DELETE FROM erp_invoices WHERE invoice_number = '00009911' OR source_channel = 'test_dedup';)rV   rW   Úsave_invoicer   r   r#   r$   r%   Úget_connectionÚcursorÚexecuteÚcommit)Ú
unique_xmlrY   Úres1rZ   r'   r[   r\   r]   Úres2ÚconnÚcurs              r   Ú)test_sha256_deduplication_and_persistencer€   ‹   s@  € ð%€JõN ×&Ò& zÀ,Ð&ÑOÔO€FðÝ×#Ò# F°MÐ#ÑBÔBˆØ�HŒ~Ð9Ð!9Ð9ˆ~Ð!9Ð9Ð9Ð9Ð9Õ9Ô9Ð9Ð9Ð9Ð9ˆ~Ð!9Ð9Ñ9Ô9Õ9Ô9ˆ~Ñ9Ô9Õ9Ô9Ð!9Ñ9Ô9Ð9Ð9Ñ9Ð9Ð9Ð9Ð9Ð9Ñ9Ð9Õ9Õ9Ô9Ð9Ñ9Ô9Ñ9Ô9Ð9Ð9Ð9Ð9Ð9Ð9Ð9õ ×#Ò# F°MÐ#ÑBÔBˆØ�HŒ~Ð, Ð,ˆ~ Ò,Ð,Ð,Ð,Õ,Ô,Ð,Ð,Ð,Ð,ˆ~ Ð,Ñ,Ô,Õ,Ô,ˆ~Ñ,Ô,Õ,Ô, Ñ,Ô,Ð,Ð,Ñ,Ð,Ð,Ð,Ð,Ð,Ñ,Ð,Õ,Õ,Ô,Ð,Ñ,Ô,Ñ,Ô,Ð,Ð,Ð,Ð,Ð,Ð,Ð,Ø!Ð4 T¨)¤_Ð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Ð4Ð4Ñ4Ð4Õ4Õ4Ô4Ð4Ñ4Ô4Ñ4Ô4Ð4Ð4Ð4Ð4Ð4Ð4Ð4å×#Ò#Ñ%Ô%ð 	¨Ø—’‘”ð  #Ø—’Ørñô ð ð —’‘”�ð	ð ð ñ ô ð ð ð ð ð ð øøøð ð ð ð ð	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	ð 	ð 	ø�W×#Ò#Ñ%Ô%ð 	¨Ø—’‘”ð  #Ø—’Ørñô ð ð —’‘”�ð	ð ð ñ ô ð ð ð ð ð ð øøøð ð ð ð ð	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	ð 	øøøsŠ    G I) Ç9IÈ*IÈ8IÉI	ÉIÉI	ÉIÉI É#I É)K1ÊK%Ê*K	ËK%ËKËK%ËKËK%ËK1Ë%K)Ë)K1Ë,K)Ë-K1c                  óâ  — 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
         }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         }||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         }||v }|slt          j        d|fd||f¦  «        t          j        |¦  «        t          j        |¦  «        dœz  }	dd|	iz  }
t          t          j
        |
¦  «        ¦  «        ‚d	x}x}}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  }t          j        |j        ¦  «        dz   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         }t          |t          ¦  «        }|sÝddt          j        ¦   «         v st          j        t          ¦  «        rt          j        t          ¦  «        ndt          j        |¦  «        dt          j        ¦   «         v st          j        t          ¦  «        rt          j        t          ¦  «        ndt          j        |¦  «        dœz  }t          t          j
        |¦  «        ¦  «        ‚d	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         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}}|                     ¦   «         }|d'         d$         }||k    }|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-}|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 ).uK   Kiá»ƒm tra API láº¥y danh sÃ¡ch vÃ  tá»•ng há»£p chá»‰ sá»‘ KPI hÃ³a Ä‘Æ¡n.z/v1/erp/invoices/summary/kpiséÈ   r   ©z3%(py2)s
{%(py2)s = %(py0)s.status_code
} == %(py5)sÚres_kpi©r   r   rD   úassert %(py7)srE   Nrn   rp   r4   r5   r7   r   Útotal_input_invoicesÚkpisrr   rt   Únet_vat_balance_vndz/v1/erp/invoicesÚres_listz
>assert %(py7)sÚinvoicesú5assert %(py5)s
{%(py5)s = %(py0)s(%(py2)s, %(py3)s)
}Ú
isinstanceÚlist©r   r   rC   rD   r   ©ú>©z/%(py4)s
{%(py4)s = %(py0)s(%(py2)s)
} > %(py7)srQ   rR   rF   rG   r   ú/v1/erp/invoices/Ú
res_detailÚinvoice)z%(py1)s == %(py3)sÚfirst_inv_id©r6   rC   úassert %(py5)srD   rN   )ÚclientÚgetÚstatus_coder   r   r    r!   r"   r#   r$   r%   ÚjsonÚ_format_assertmsgÚtextr�   rŽ   rQ   )r„   r&   r^   r'   Ú@py_format6r`   Úkpi_datarZ   r[   r\   r]   rŠ   Ú	list_datar_   r*   ra   r–   r”   Údet_dataÚ@py_format4s                       r   Útest_api_list_and_kpisr¤   Æ   s/
  € õ �jŠjÐ8Ñ9Ô9€GØÔÐ% #Ð%Ð #Ò%Ð%Ð%Ð%Õ%Ô%Ð%Ð%Ð%Ð%Ð #Ð%Ñ%Ô%Ð%Õ%Ô%Ñ%Ô%Ð%Ð%Õ%Ô%ˆ7Ñ%Ô%Ð%Õ%Ô%ˆ7Ñ%Ô%Ð%Ð%Õ%Ô%ÐÑ%Ô%Õ%Ô% #Ñ%Ô%Ð%Ð%Ñ%Ð%Ð%Ð%Ð%Ð%Ñ%Ð%Õ%Õ%Ô%Ð%Ñ%Ô%Ñ%Ô%Ð%Ð%Ð%Ð%Ð%Ð%Ð%Ø�|Š|‰~Œ~€HØ�HÔÐ* Ð*Ð Ò*Ð*Ð*Ð*Õ*Ô*Ð*Ð*Ð*Ð*Ð Ð*Ñ*Ô*Õ*Ô*ÐÑ*Ô*Õ*Ô* Ñ*Ô*Ð*Ð*Ñ*Ð*Ð*Ð*Ð*Ð*Ñ*Ð*Õ*Õ*Ô*Ð*Ñ*Ô*Ñ*Ô*Ð*Ð*Ð*Ð*Ð*Ð*Ð*Ø!Ð5 X¨fÔ%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Ð5Ð5Ð5Ø Ð4 H¨VÔ$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Ñ4Ð4Ð4Ð4Ð4Ð4Ñ4Ð4Õ4Õ4Ô4Ð4Ñ4Ô4Ñ4Ô4Ð4Ð4Ð4Ð4Ð4Ð4Ð4õ �zŠzÐ,Ñ-Ô-€HØÔÐ& 3Ð&Ð 3Ò&Ð&Ð&Ð&Õ&Ô&Ð&Ð&Ð&Ð&Ð 3Ð&Ñ&Ô&Ð&Õ&Ô&Ñ&Ô&Ð&Ð&Õ&Ô&ˆ8Ñ&Ô&Ð&Õ&Ô&ˆ8Ñ&Ô&Ð&Ð&Õ&Ô&ÐÑ&Ô&Õ&Ô& 3Ñ&Ô&Ð&Ð&Ñ&Ð&Ð&Ð&Ð&Ð&Ñ&Ð&Õ&Õ&Ô&Ð&Ñ&Ô&Ñ&Ô&Ð&Ð&Ð&Ð&Ð&Ð&Ð&ØÔÐ5 3Ð5Ð 3Ò&Ð5Ð5Ð5Õ5Ô5Ð5Ð5Ð5Ð5Ð 3Ð5Ñ5Ô5Ð5Õ5Ô5Ñ5Ô5Ð5Ð5Õ5Ô5ˆ8Ñ5Ô5Ð5Õ5Ô5ˆ8Ñ5Ô5Ð5Ð5Õ5Ô5ÐÑ5Ô5Õ5Ô5 3Ñ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Ø—’‘”€IØ�XÔÐ+ )Ð+Ð )Ò+Ð+Ð+Ð+Õ+Ô+Ð+Ð+Ð+Ð+Ð )Ð+Ñ+Ô+Õ+Ô+ÐÑ+Ô+Õ+Ô+ )Ñ+Ô+Ð+Ð+Ñ+Ð+Ð+Ð+Ð+Ð+Ñ+Ð+Õ+Õ+Ô+Ð+Ñ+Ô+Ñ+Ô+Ð+Ð+Ð+Ð+Ð+Ð+Ð+Ø 
Ô+Ð2�:Ð+­TÑ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Ô2Ð2Õ2Ô2Ñ2Ô2Ð2Ð2Õ2Ô2­TÑ2Ô2Ð2Õ2Ô2­TÑ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Ø˜Ô$Ð)�3Ð$Ñ%Ô%Ð)¨Ð)Ð%¨Ò)Ð)Ð)Ð)Õ)Ô)Ð)Ð)Ð)Ð)Ð%¨Ð)Ñ)Ô)Ð)Õ)Ô)Ñ)Ô)Ð)Ð)Õ)Ô)�3Ñ)Ô)Ð)Õ)Ô)�3Ñ)Ô)Ð)Ð)Õ)Ô)Ð$Ñ)Ô)Õ)Ô)Ð%Ñ)Ô)Õ)Ô)¨Ñ)Ô)Ð)Ð)Ñ)Ð)Ð)Ð)Ð)Ð)Ñ)Ð)Õ)Õ)Ô)Ð)Ñ)Ô)Ñ)Ô)Ð)Ð)Ð)Ð)Ð)Ð)Ð)Ð)Ð)à˜ZÔ(¨Ô+¨DÔ1€LÝ—’Ð>°Ð>Ð>Ñ?Ô?€JØÔ!Ð( SÐ(Ð! SÒ(Ð(Ð(Ð(Õ(Ô(Ð(Ð(Ð(Ð(Ð! SÐ(Ñ(Ô(Ð(Õ(Ô(Ñ(Ô(Ð(Ð(Õ(Ô(ˆ:Ñ(Ô(Ð(Õ(Ô(ˆ:Ñ(Ô(Ð(Ð(Õ(Ô(Ð!Ñ(Ô(Õ(Ô( SÑ(Ô(Ð(Ð(Ñ(Ð(Ð(Ð(Ð(Ð(Ñ(Ð(Õ(Õ(Ô(Ð(Ñ(Ô(Ñ(Ô(Ð(Ð(Ð(Ð(Ð(Ð(Ð(Ø�ŠÑ Ô €HØ�IÔ˜tÔ$Ð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Ô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Ð4Ð4Ð4ØÐ)�h˜yÔ)Ð)ˆ7Ð)Ð)Ð)Ð)Ð)Õ)Ô)Ð)Ð)Ð)Ð)ˆ7Ð)Ð)Ñ)Ô)Õ)Ô)ˆ7Ñ)Ô)Õ)Ô)Ð)Ñ)Ô)Ð)Ð)Ñ)Ð)Ð)Ð)Ð)Ð)Ñ)Ð)Õ)Õ)Ô)Ð)Ñ)Ô)Ñ)Ô)Ð)Ð)Ð)Ð)Ð)Ð)Ð)Ð)Ð)r   c            	      óz  — 	 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
         }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         }||v }|slt          j        d|fd||f¦  «        t          j        |¦  «        t          j        |¦  «        dœz  }	dd|	iz  }
t          t          j
        |
¦  «        ¦  «        ‚d	x}x}}t                                dddddi 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}}t          j        }d}d} |||¦  «        }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        |¦  «        t          j        |¦  «        t          j        |¦  «        dœz  }d d!|iz  }t          t          j
        |¦  «        ¦  «        ‚d	x}x}x}x}x}}t                               dd¦  «        }d"}||k    }|s—t          j        d|fd#||f¦  «        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}}t          j        }d}d} |||¦  «        }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        |¦  «        t          j        |¦  «        t          j        |¦  «        dœz  }d d!|iz  }t          t          j
        |¦  «        ¦  «        ‚d	x}x}x}x}x}}t                               dd¦  «        }d(}||k    }|s—t          j        d|fd#||f¦  «        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}}t          j        }d}d} |||¦  «        }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        |¦  «        t          j        |¦  «        t          j        |¦  «        dœz  }d d!|iz  }t          t          j
        |¦  «        ¦  «        ‚d	x}x}x}x}x}}t                               dd¦  «         t          j        }d}d} |||¦  «        }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        |¦  «        t          j        |¦  «        t          j        |¦  «        dœz  }d d!|iz  }t          t          j
        |¦  «        ¦  «        ‚d	x}x}x}x}x}}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
         }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                              ¦   «         }g }d-}||v }|}|sd.}||v }|}|sd/}||v }|}|�sæt          j        d|fd0||f¦  «        t          j        |¦  «        d1t          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        nd1d2œz  }d3d|iz  }|                     |¦  «         |�st          j        d|fd4||f¦  «        t          j        |¦  «        d1t          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        nd1d5œz  }d6d7|iz  }|                     |¦  «         |s‹t          j        d|fd8||f¦  «        t          j        |¦  «        d1t          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        nd1d9œz  }d:d;|iz  }|                     |¦  «         t          j        |d"¦  «        i z  }d<d=|iz  } t          t          j
        | ¦  «        ¦  «        ‚d	x}x}x}x}x}x}x}}t                               ¦   «         5 }!|!                     ¦   «         5 }"|"                     d>¦  «         |!                     ¦   «          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 # t                               ¦   «         5 }!|!                     ¦   «         5 }"|"                     d>¦  «         |!                     ¦   «          d	d	d	¦  «         n# 1 swxY w Y   d	d	d	¦  «         w # 1 swxY w Y   w xY w)?u‡   Kiá»ƒm tra lÆ°u trá»¯ cáº¥u hÃ¬nh káº¿t ná»‘i thá»±c táº¿ vÃ  pháº£n há»“i trung thá»±c khi chÆ°a cáº¥u hÃ¬nh hoáº·c lá»—i xÃ¡c thá»±c.z-/v1/erp/invoices/sync-gdt?tax_code=0000000000r‚   r   rƒ   Úres_sync_unconfiguredr…   r†   rE   Nrn   Únot_configuredr4   r5   r7   r   u*   ChÆ°a cáº¥u hÃ¬nh tÃ i khoáº£n káº¿t ná»‘iru   rr   rt   z/v1/erp/invoices/sync/configsÚ
gdt_portalÚ
020TEST999zTestPasswordSecure123!©Úservice_typeÚtax_codeÚusernameÚpasswordÚextra_config©rœ   Úres_saverp   r   )za%(py8)s
{%(py8)s = %(py2)s
{%(py2)s = %(py0)s.get_auth_failures
}(%(py4)s, %(py6)s)
} == %(py11)srV   ©r   r   r   r   r   Úpy11úassert %(py13)sÚpy13rO   ©z%(py0)s == %(py3)sÚf1©r   rC   r˜   rD   é   Úf2z-/v1/erp/invoices/sync-gdt?tax_code=020TEST999Úres_sync_invalid)Ú
auth_errorÚconnection_errorÚerroru   lá»—iu   khÃ´ng thá»ƒu   cá»•ng tá»•ng cá»¥c thuáº¿)z%(py3)s in %(py5)sÚ	msg_lower)rC   rD   z%(py7)s)z%(py10)s in %(py12)s)r   r   z%(py14)sÚpy14)z%(py17)s in %(py19)s)Úpy17Úpy19z%(py21)sÚpy21zassert %(py24)sÚpy24zTDELETE FROM erp_invoice_sync_configs WHERE tax_code IN ('020TEST999', '0000000000');)r™   Úpostr›   r   r   r    r!   r"   r#   r$   r%   rœ   rV   Úget_auth_failuresÚincrement_auth_failuresÚreset_auth_failuresÚlowerÚappendÚ_format_booloprw   rx   ry   rz   )#r¦   r&   r^   r'   rŸ   r`   Ú	sync_datarZ   r[   r\   r]   r±   r*   r(   Ú@py_assert10r)   Ú@py_format12Ú@py_format14r·   r£   rº   r»   Úinvalid_datar¿   Ú@py_assert11Ú@py_assert16Ú@py_assert18r,   Ú@py_format15Ú@py_format20Ú@py_format22Ú@py_format23Ú@py_format25r~   r   s#                                      r   Ú)test_sync_configuration_and_truthful_syncrÙ   á   sp  € ð5å &§¢Ø;ñ!
ô !
Ðð %Ô0Ð7°CÐ7Ð0°CÒ7Ð7Ð7Ð7Õ7Ô7Ð7Ð7Ð7Ð7Ð0°CÐ7Ñ7Ô7Ð7Õ7Ô7Ñ7Ô7Ð7Ð7Õ7Ô7Ð$Ñ7Ô7Ð7Õ7Ô7Ð$Ñ7Ô7Ð7Ð7Õ7Ô7Ð0Ñ7Ô7Õ7Ô7°CÑ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Ø)×.Ò.Ñ0Ô0ˆ	Ø˜Ô"Ð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Ð6Ñ6Ð6Õ6Õ6Ô6Ð6Ñ6Ô6Ñ6Ô6Ð6Ð6Ð6Ð6Ð6Ð6Ð6Ø;ÐS¸yÈÔ?SÐSÐ;Ð?SÐSÐSÐSÐSÕSÔSÐSÐSÐSÐSÐ;Ð?SÐSÑSÔSÕSÔSÐ;ÑSÔSÕSÔSÐ?SÑSÔSÐSÐSÑSÐSÐSÐSÐSÐSÑSÐSÕSÕSÔSÐSÑSÔSÑSÔSÐSÐSÐSÐSÐSÐSÐSõ —;’;Ø+à ,Ø(Ø(Ø4Ø "ðð ð ñ 	
ô 	
ˆð Ô#Ð* sÐ*Ð# sÒ*Ð*Ð*Ð*Õ*Ô*Ð*Ð*Ð*Ð*Ð# sÐ*Ñ*Ô*Ð*Õ*Ô*Ñ*Ô*Ð*Ð*Õ*Ô*ˆxÑ*Ô*Ð*Õ*Ô*ˆxÑ*Ô*Ð*Ð*Õ*Ô*Ð#Ñ*Ô*Õ*Ô* sÑ*Ô*Ð*Ð*Ñ*Ð*Ð*Ð*Ð*Ð*Ñ*Ð*Õ*Õ*Ô*Ð*Ñ*Ô*Ñ*Ô*Ð*Ð*Ð*Ð*Ð*Ð*Ð*Ø�}Š}‰Œ˜xÔ(Ð5¨IÐ5Ð(¨IÒ5Ð5Ð5Ð5Õ5Ô5Ð5Ð5Ð5Ð5Ð(¨IÐ5Ñ5Ô5Õ5Ô5Ð(Ñ5Ô5Õ5Ô5¨IÑ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õ Ô(ÐI¨ÐI°|ÐIÐ(Ð(¨°|ÑDÔDÐIÈÐIÐDÈÒIÐIÐIÐIÕIÔIÐIÐIÐIÐIÐDÈÐIÑ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¨ÑIÔIÕIÔI°|ÑIÔIÕIÔIÐDÑ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ÐIÐIÐIÐIÐIÐIÐIÝ×,Ò,¨\¸<ÑHÔHˆØˆˆr�QŠwˆˆˆ�Œˆˆˆˆˆr�Qˆ‰Œˆ�Œ‰Œˆˆ�Œˆr‰Œˆ�Œˆr‰Œˆˆ�Œ�Q‰Œˆˆ‰ˆˆˆˆˆ‰ˆ��Œˆ‰Œ‰ŒˆˆˆˆˆÝÔ(ÐI¨ÐI°|ÐIÐ(Ð(¨°|ÑDÔDÐIÈÐIÐDÈÒIÐIÐIÐIÕIÔIÐIÐIÐIÐIÐDÈÐIÑ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¨ÑIÔIÕIÔI°|ÑIÔIÕIÔIÐDÑ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ÐIÐIÐIÐIÐIÐIÐIÝ×,Ò,¨\¸<ÑHÔHˆØˆˆr�QŠwˆˆˆ�Œˆˆˆˆˆr�Qˆ‰Œˆ�Œ‰Œˆˆ�Œˆr‰Œˆ�Œˆr‰Œˆˆ�Œ�Q‰Œˆˆ‰ˆˆˆˆˆ‰ˆ��Œˆ‰Œ‰ŒˆˆˆˆˆÝÔ(ÐI¨ÐI°|ÐIÐ(Ð(¨°|ÑDÔDÐIÈÐIÐDÈÒIÐIÐIÐIÕIÔIÐIÐIÐIÐIÐDÈÐIÑ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¨ÑIÔIÕIÔI°|ÑIÔIÕIÔIÐDÑ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ÐIÐIÐIÐIÐIÐIÐIÝ×#Ò# L°,Ñ?Ô?Ð?ÝÔ(ÐI¨ÐI°|ÐIÐ(Ð(¨°|ÑDÔDÐIÈÐIÐDÈÒIÐIÐIÐIÕIÔIÐIÐIÐIÐIÐDÈÐIÑ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¨ÑIÔIÕIÔI°|ÑIÔIÕIÔIÐDÑ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ÐIÐIÐIÐIÐIÐIÐIõ "Ÿ;š;Ð'VÑWÔWÐØÔ+Ð2¨sÐ2Ð+¨sÒ2Ð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¨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Ø'×,Ò,Ñ.Ô.ˆØ˜HÔ%ÐTÐ)TÐTÐ%Ð)TÐTÐTÐTÐTÕTÔTÐTÐTÐTÐTÐ%Ð)TÐTÑTÔTÕTÔTÐ%ÑTÔTÕTÔTÐ)TÑTÔTÐTÐTÑTÐTÐTÐTÐTÐTÑTÐTÕTÕTÔTÐTÑTÔTÑTÔTÐTÐTÐTÐTÐTÐTÐTØ  Ô+×1Ò1Ñ3Ô3ˆ	ð	
ð 	
Øð	
Ø�yÐ ð	
ð 	
ð 	
ð 	
ð 	
àð	
à Ð*ð	
ð 	
ð 	
ð 	
ð 	
ð ,ð	
ð ,¨yÐ8ð	
ð 	
ð 	
ð 	
ñ 	
õ 	
ìð		
ð 	
ð 	
ð 	
Ø�yð	
ñ 	
ô 	
õ 	
ô 
ð ñ	
ô 	
ð 	
õ 	
ô 
ñ		
ô 	
ð 	
ð 	
õ 	
ìð !ñ	
ô 	
ð 	
õ 	
ô 
ð !ñ	
ô 	
ð 	
ð 	
ð 	
ð 	
ñ 	
ð 	
ð 	
ð 	
ð 	
ð 	
ñ 	
ð 	
ð 	
÷ 
‚6ð		
ñ 
„6€6ð		
ñ 	
õ 	
ìð		
ð 	
ð 	
ð 	
à ð	
ñ 	
ô 	
õ 	
ô 
ð ñ	
ô 	
ð 	
õ 	
ô 
ñ		
ô 	
ð 	
ð 	
õ 	
ìð "+ñ	
ô 	
ð 	
õ 	
ô 
ð "+ñ	
ô 	
ð 	
ð 	
ð 	
ð 	
ñ 	
ð 	
ð 	
ð 	
ð 	
ð 	
ñ 	
ð 	
ð 	
÷ 
‚6ð		
ñ 
„6€6ð		
ð 	
õ 	
ìð		
ð 	
ð 	
ð 	
ð ,¨yð	
ñ 	
ô 	
õ 	
ô 
ð ,ñ	
ô 	
ð 	
õ 	
ô 
ñ		
ô 	
ð 	
ð 	
õ 	
ìð 09ñ	
ô 	
ð 	
õ 	
ô 
ð 09ñ	
ô 	
ð 	
ð 	
ð 	
ð 	
ñ 	
ð 	
ð 	
ð 	
ð 	
ð 	
ñ 	
ð 	
ð 	
÷ 
‚6ð		
ñ 
„6€6õ		
ìð		
ð 	
ñ 	
ô 	
ð 	
ñ 	
ð 	
ð 	
ð 	
ð 	
ð 	
ñ 	
ð 	
õ 	
õ 	
ìð		
ñ 	
ô 	
ñ 	
ô 	
ð 	
ð 	
ð 	
ð 	
ð 	
ð 	
ð 	
ð 	
ð 	
ð 	
ð 	
ð 	
ð 	
ð 	
ð 	
ð 	
ð 	
õ ×#Ò#Ñ%Ô%ð 	¨Ø—’‘”ð  #Ø—’Øjñô ð ð —’‘”�ð	ð ð ñ ô ð ð ð ð ð ð øøøð ð ð ð ð	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	ð 	ð 	ø�W×#Ò#Ñ%Ô%ð 	¨Ø—’‘”ð  #Ø—’Øjñô ð ð —’‘”�ð	ð ð ñ ô ð ð ð ð ð ð øøøð ð ð ð ð	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	ð 	øøøsŠ   ‚t'v2 õv%õ*vöv%öv	öv%öv	öv%ö%v)ö,v)ö2x:÷x.÷!*x	øx.øxøx.øxøx.ø"x:ø.x2ø2x:ø5x2ø6x:c            	      ó4  — t           j        } d}d} | ||¦  «        }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        |¦  «        t          j        |¦  «        t          j        |¦  «        dœz  }dd	|iz  }t          t          j	        |¦  «        ¦  «        ‚d
x} x}x}x}x}}t           j        } d}d} | ||¦  «        }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        |¦  «        t          j        |¦  «        t          j        |¦  «        dœz  }dd	|iz  }t          t          j	        |¦  «        ¦  «        ‚d
x} x}x}x}x}}t           j        } d}d} | ||¦  «        }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        |¦  «        t          j        |¦  «        t          j        |¦  «        dœz  }dd	|iz  }t          t          j	        |¦  «        ¦  «        ‚d
x} x}x}x}x}}t           j        } d}d} | ||¦  «        }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        |¦  «        t          j        |¦  «        t          j        |¦  «        dœz  }dd	|iz  }t          t          j	        |¦  «        ¦  «        ‚d
x} x}x}x}x}}t           j        } d}d} | ||¦  «        }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        |¦  «        t          j        |¦  «        t          j        |¦  «        dœz  }dd	|iz  }t          t          j	        |¦  «        ¦  «        ‚d
x} x}x}x}x}}t           j        } d}d} | ||¦  «        }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        |¦  «        t          j        |¦  «        t          j        |¦  «        dœz  }dd	|iz  }t          t          j	        |¦  «        ¦  «        ‚d
x} x}x}x}x}}t           j        } d}d} | ||¦  «        }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        |¦  «        t          j        |¦  «        t          j        |¦  «        dœz  }dd	|iz  }t          t          j	        |¦  «        ¦  «        ‚d
x} x}x}x}x}}t           j        } d}d} | ||¦  «        }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        |¦  «        t          j        |¦  «        t          j        |¦  «        dœz  }dd	|iz  }t          t          j	        |¦  «        ¦  «        ‚d
x} x}x}x}x}}t           j        } d}d} | ||¦  «        }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        |¦  «        t          j        |¦  «        t          j        |¦  «        dœz  }dd	|iz  }t          t          j	        |¦  «        ¦  «        ‚d
x} x}x}x}x}}d
S )u[   Kiá»ƒm tra nháº­n diá»‡n vÃ  phÃ¢n nhÃ³m chi phÃ­ tá»± Ä‘á»™ng theo tá»« khÃ³a xÃ¢y dá»±ng.u!   ThÃ©p cuá»™n D10 HÃ²a PhÃ¡t CB300zVT-THEPÚmaterial_mainr   )zd%(py8)s
{%(py8)s = %(py2)s
{%(py2)s = %(py0)s.categorize_item_cost
}(%(py4)s, %(py6)s)
} == %(py11)srV   r²   r´   rµ   Nu&   BÃª tÃ´ng thÆ°Æ¡ng pháº©m mÃ¡c 300 R28z	VT-BETONGu!   Xi mÄƒng Vicem Háº£i PhÃ²ng PCB40zVT-XMu    CÃ¡t vÃ ng háº¡t lá»›n bÃª tÃ´ngzVT-CATu%   ThuÃª ca mÃ¡y Ä‘Ã o bÃ¡nh xÃ­ch 0.8m3zCA-MAYÚmachinery_laboru.   Gia cÃ´ng Ã©p cá»�c bÃª tÃ´ng cá»‘t thÃ©p D400zTP-COCÚsubcontractoru8   Chi phÃ­ dá»±ng lÃ¡n tráº¡i táº¡m thá»�i cÃ´ng trÆ°á»�ngzCP-LANÚgeneral_expenseu#   VÄƒn phÃ²ng pháº©m vÃ  giáº¥y in A4ÚVPPu.   BÃ¡nh káº¹o trÃ  hoa quáº£ tiáº¿p khÃ¡ch há»�pÚOTHERÚother)
rV   Úcategorize_item_costr   r   r    r!   r"   r#   r$   r%   )r&   r'   r*   r(   rÍ   r)   rÎ   rÏ   s           r   Útest_categorize_item_costrã     sU  € õ 	Ô$ðØ%HðØJSðØ$Ð$Ð%HÈ)ÑTÔTðàðØTØò	ðð ð õ ìðð ð ð ØTØðñ ô ð õ ìñô ð ð õ ìõ 	ñô ð õ ìõ 	ñô ð ð õ ìð 	%ñô õ ìð &Iñô õ ìð KTñô õ ìð 	Uñô õ ìð ñô ð ð ñ ð ð ð ð ð ñ ð õ õ ìðñ ô ñ ô ð ð ð ð ð ð ð ð ð ð ð ð ð õ
 	Ô$ðØ%MðØOZðØ$Ð$Ð%MÈ{Ñ[Ô[ðàðØ[Øò	ðð ð õ ìðð ð ð Ø[Øðñ ô ð õ ìñô ð ð õ ìõ 	ñô ð õ ìõ 	ñô ð ð õ ìð 	%ñô õ ìð &Nñô õ ìð P[ñô õ ìð 	\ñô õ ìð ñô ð ð ñ ð ð ð ð ð ñ ð õ õ ìðñ ô ñ ô ð ð ð ð ð ð ð ð ð ð ð ð ð õ
 	Ô$ðØ%HðØJQðØ$Ð$Ð%HÈ'ÑRÔRðàðØRØò	ðð ð õ ìðð ð ð ØRØðñ ô ð õ ìñô ð ð õ ìõ 	ñô ð õ ìõ 	ñô ð ð õ ìð 	%ñô õ ìð &Iñô õ ìð KRñô õ ìð 	Sñô õ ìð ñô ð ð ñ ð ð ð ð ð ñ ð õ õ ìðñ ô ñ ô ð ð ð ð ð ð ð ð ð ð ð ð ð õ
 	Ô$ðØ%GðØIQðØ$Ð$Ð%GÈÑRÔRðàðØRØò	ðð ð õ ìðð ð ð ØRØðñ ô ð õ ìñô ð ð õ ìõ 	ñô ð õ ìõ 	ñô ð ð õ ìð 	%ñô õ ìð &Hñô õ ìð JRñô õ ìð 	Sñô õ ìð ñô ð ð ñ ð ð ð ð ð ñ ð õ õ ìðñ ô ñ ô ð ð ð ð ð ð ð ð ð ð ð ð ð õ
 	Ô$ðØ%LðØNVðØ$Ð$Ð%LÈhÑWÔWðàðØWØò	ðð ð õ ìðð ð ð ØWØðñ ô ð õ ìñô ð ð õ ìõ 	ñô ð õ ìõ 	ñô ð ð õ ìð 	%ñô õ ìð &Mñô õ ìð OWñô õ ìð 	Xñô õ ìð ñô ð ð ñ ð ð ð ð ð ñ ð õ õ ìðñ ô ñ ô ð ð ð ð ð ð ð ð ð ð ð ð ð õ
 	Ô$ðØ%UðØW_ðØ$Ð$Ð%UÐW_Ñ`Ô`ðàðØ`Øò	ðð ð õ ìðð ð ð Ø`Øðñ ô ð õ ìñô ð ð õ ìõ 	ñô ð õ ìõ 	ñô ð ð õ ìð 	%ñô õ ìð &Vñô õ ìð X`ñô õ ìð 	añô õ ìð ñô ð ð ñ ð ð ð ð ð ñ ð õ õ ìðñ ô ñ ô ð ð ð ð ð ð ð ð ð ð ð ð ð õ
 	Ô$ðàFðàHPðØ$Ð$ØFÈñ	
ô 	
ðð ð	ð	
ð ò	ðð ð õ ì
ðð ð ð ð	
ð ð	ñ ô ð õ ì
ñô ð ð õ ì
õ	 	ñô ð õ ì
õ	 	ñô ð ð õ ì
ð	 	%ñô õ ì
ð Gñô õ ì
ð IQñô õ ì
ð		
ñô õ ì
ð ñ	ô ð ð ñ ð ð ð ð ð ñ ð õ õ ì
ðñ ô ñ ô ð ð ð ð ð ð ð ð ð ð ð ð ð õ 	Ô$ðØ%JðØLQðØ$Ð$Ð%JÈEÑRÔRðàðØRØò	ðð ð õ ìðð ð ð ØRØðñ ô ð õ ìñô ð ð õ ìõ 	ñô ð õ ìõ 	ñô ð ð õ ìð 	%ñô õ ìð &Kñô õ ìð MRñô õ ìð 	Sñô õ ìð ñô ð ð ñ ð ð ð ð ð ñ ð õ õ ìðñ ô ñ ô ð ð ð ð ð ð ð ð ð ð ð ð ð õ
 	Ô$ðØ%UðØW^ðØ$Ð$Ð%UÐW^Ñ_Ô_ðàðØ_Øò	ðð ð õ ìðð ð ð Ø_Øðñ ô ð õ ìñô ð ð õ ìõ 	ñô ð õ ìõ 	ñô ð ð õ ìð 	%ñô õ ìð &Vñô õ ìð X_ñô õ ìð 	`ñô õ ìð ñô ð ð ñ ð ð ð ð ð ñ ð õ õ ìðñ ô ñ ô ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð r   c                  ó(  — t                                ¦   «         } 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}|| 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}| 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}}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         }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}}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!         }|j        }d"}
 ||
¦  «        }|ssd#t          j        |¦  «        t          j        |¦  «        t          j        |
¦  «        t          j        |¦  «        d$œz  }t          t          j	        |¦  «        ¦  «        ‚dx}x}x}
}|j        }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 )(uV   Kiá»ƒm tra tá»•ng há»£p Báº£ng kÃª thuáº¿ GTGT (01-1 & 01-2) vÃ  xuáº¥t CSV UTF-8 BOM.Útax_breakdownrr   ©z%(py1)s in %(py3)sÚscheduler—   r˜   rD   NÚinput_scheduleÚoutput_schedulerˆ   Úrate_8r3   rt   r5   r7   r   Úrate_10z%/v1/erp/invoices/reports/vat-scheduler‚   r   rƒ   Úresr…   r†   rE   rn   rp   r4   Údataz:/v1/erp/invoices/reports/vat-schedule/export?direction=allÚres_csvzcontent-typeztext/csvzLassert %(py7)s
{%(py7)s = %(py3)s
{%(py3)s = %(py1)s.startswith
}(%(py5)s)
}rB   u
   Báº¢NG KÃŠÚcsv_textu   Sá»‘ HÄ�)rV   Úget_vat_tax_scheduler   r   r#   r    r!   r"   r$   r%   r™   rš   r›   rœ   ÚheadersÚ
startswithrž   )rç   rZ   r[   r£   rŸ   r'   r\   r]   rì   r&   r^   r`   rí   rî   r_   rï   s                   r   Ú$test_vat_tax_schedule_and_csv_exportró   E  s
  € õ ×+Ò+Ñ-Ô-€HØÐ&ˆ?˜hÐ&Ð&Ð&Ð&Õ&Ô&Ð&Ð&Ð&Ð&ˆ?˜hÐ&Ñ&Ô&Õ&Ô&ˆ?Ñ&Ô&Ð&Õ&Ô&Ñ&Ô&Ð&Ð&Õ&Ô&˜hÑ&Ô&Ð&Õ&Ô&˜hÑ&Ô&Ð&Ð&Ð&Ð&Ñ&Ð&Ð&Ð&Ð&Ð&Ñ&Ð&Õ&Õ&Ô&Ð&Ñ&Ô&Ñ&Ô&Ð&Ð&Ð&Ð&Ð&ØÐ'Ð˜xÐ'Ð'Ð'Ð'Õ'Ô'Ð'Ð'Ð'Ð'Ð˜xÐ'Ñ'Ô'Õ'Ô'ÐÑ'Ô'Ð'Õ'Ô'Ñ'Ô'Ð'Ð'Õ'Ô'˜xÑ'Ô'Ð'Õ'Ô'˜xÑ'Ô'Ð'Ð'Ð'Ð'Ñ'Ð'Ð'Ð'Ð'Ð'Ñ'Ð'Õ'Õ'Ô'Ð'Ñ'Ô'Ñ'Ô'Ð'Ð'Ð'Ð'Ð'ØÐ(Ð Ð(Ð(Ð(Ð(Õ(Ô(Ð(Ð(Ð(Ð(Ð Ð(Ñ(Ô(Õ(Ô(ÐÑ(Ô(Ð(Õ(Ô(Ñ(Ô(Ð(Ð(Õ(Ô( Ñ(Ô(Ð(Õ(Ô( Ñ(Ô(Ð(Ð(Ð(Ð(Ñ(Ð(Ð(Ð(Ð(Ð(Ñ(Ð(Õ(Õ(Ô(Ð(Ñ(Ô(Ñ(Ô(Ð(Ð(Ð(Ð(Ð(ØÐˆ6�XÐÐÐÐÕÔÐÐÐÐˆ6�XÐÑÔÕÔˆ6ÑÔÐÕÔÑÔÐÐÕÔ�XÑÔÐÕÔ�XÑÔÐÐÐÐÑÐÐÐÐÐÑÐÕÕÔÐÑÔÑÔÐÐÐÐÐØÐ9�x Ô0°Ô9Ð9ˆ8Ð9Ð9Ð9Ð9Ð9Õ9Ô9Ð9Ð9Ð9Ð9ˆ8Ð9Ð9Ñ9Ô9Õ9Ô9ˆ8Ñ9Ô9Õ9Ô9Ð9Ñ9Ô9Ð9Ð9Ñ9Ð9Ð9Ð9Ð9Ð9Ñ9Ð9Õ9Õ9Ô9Ð9Ñ9Ô9Ñ9Ô9Ð9Ð9Ð9Ð9Ð9Ð9Ð9ØÐ:˜ Ô1°'Ô:Ð:ˆ9Ð:Ð:Ð:Ð:Ð:Õ:Ô:Ð:Ð:Ð:Ð:ˆ9Ð:Ð:Ñ:Ô:Õ:Ô:ˆ9Ñ:Ô:Õ:Ô:Ð:Ñ:Ô:Ð:Ð:Ñ:Ð:Ð:Ð:Ð:Ð:Ñ:Ð:Õ:Õ:Ô:Ð:Ñ:Ô:Ñ:Ô:Ð:Ð:Ð:Ð:Ð:Ð:Ð:õ �*Š*Ð<Ñ
=Ô
=€CØŒ?Ð!˜cÐ!ˆ?˜cÒ!Ð!Ð!Ð!Õ!Ô!Ð!Ð!Ð!Ð!ˆ?˜cÐ!Ñ!Ô!Ð!Õ!Ô!Ñ!Ô!Ð!Ð!Õ!Ô!ˆ3Ñ!Ô!Ð!Õ!Ô!ˆ3Ñ!Ô!Ð!Ð!Õ!Ô!ˆ?Ñ!Ô!Õ!Ô!˜cÑ!Ô!Ð!Ð!Ñ!Ð!Ð!Ð!Ð!Ð!Ñ!Ð!Õ!Õ!Ô!Ð!Ñ!Ô!Ñ!Ô!Ð!Ð!Ð!Ð!Ð!Ð!Ð!Ø�8Š8‰:Œ:€DØ�Œ>Ð&˜YÐ&ˆ>˜YÒ&Ð&Ð&Ð&Õ&Ô&Ð&Ð&Ð&Ð&ˆ>˜YÐ&Ñ&Ô&Õ&Ô&ˆ>Ñ&Ô&Õ&Ô&˜YÑ&Ô&Ð&Ð&Ñ&Ð&Ð&Ð&Ð&Ð&Ñ&Ð&Õ&Õ&Ô&Ð&Ñ&Ô&Ñ&Ô&Ð&Ð&Ð&Ð&Ð&Ð&Ð&ØÐˆ:˜ÐÐÐÐÕÔÐÐÐÐˆ:˜ÐÑÔÕÔˆ:ÑÔÐÕÔÑÔÐÐÕÔ˜ÑÔÐÕÔ˜ÑÔÐÐÐÐÑÐÐÐÐÐÑÐÕÕÔÐÑÔÑÔÐÐÐÐÐõ �jŠjÐUÑVÔV€GØÔÐ% #Ð%Ð #Ò%Ð%Ð%Ð%Õ%Ô%Ð%Ð%Ð%Ð%Ð #Ð%Ñ%Ô%Ð%Õ%Ô%Ñ%Ô%Ð%Ð%Õ%Ô%ˆ7Ñ%Ô%Ð%Õ%Ô%ˆ7Ñ%Ô%Ð%Ð%Õ%Ô%ÐÑ%Ô%Õ%Ô% #Ñ%Ô%Ð%Ð%Ñ%Ð%Ð%Ð%Ð%Ð%Ñ%Ð%Õ%Õ%Ô%Ð%Ñ%Ô%Ñ%Ô%Ð%Ð%Ð%Ð%Ð%Ð%Ð%ØŒ?˜>Ô*ÐAÐ*Ô5ÐA°jÐAÐ5Ð5°jÑAÔAÐAÐAÐAÐAÕAÔAÐ*ÑAÔAÕAÔAÐ5ÑAÔAÕAÔA°jÑ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ØŒ|€HØÐ#ˆ<˜8Ð#Ð#Ð#Ð#Õ#Ô#Ð#Ð#Ð#Ð#ˆ<˜8Ð#Ñ#Ô#Õ#Ô#ˆ<Ñ#Ô#Ð#Õ#Ô#Ñ#Ô#Ð#Ð#Õ#Ô#˜8Ñ#Ô#Ð#Õ#Ô#˜8Ñ#Ô#Ð#Ð#Ð#Ð#Ñ#Ð#Ð#Ð#Ð#Ð#Ñ#Ð#Õ#Õ#Ô#Ð#Ñ#Ô#Ñ#Ô#Ð#Ð#Ð#Ð#Ð#ØÐ!ˆ:˜Ð!Ð!Ð!Ð!Õ!Ô!Ð!Ð!Ð!Ð!ˆ:˜Ð!Ñ!Ô!Õ!Ô!ˆ:Ñ!Ô!Ð!Õ!Ô!Ñ!Ô!Ð!Ð!Õ!Ô!˜Ñ!Ô!Ð!Õ!Ô!˜Ñ!Ô!Ð!Ð!Ð!Ð!Ñ!Ð!Ð!Ð!Ð!Ð!Ñ!Ð!Õ!Õ!Ô!Ð!Ñ!Ô!Ñ!Ô!Ð!Ð!Ð!Ð!Ð!Ð!Ð!r   c                  ó  — t                                ¦   «         } 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	         }t          |t          ¦  «        }|sÝddt          j        ¦   «         v st          j        t          ¦  «        rt          j        t          ¦  «        ndt          j        |¦  «        dt          j        ¦   «         v st          j        t          ¦  «        rt          j        t          ¦  «        ndt          j        |¦  «        dœz  }t          t          j	        |¦  «        ¦  «        ‚d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}	}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         }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S )%u\   Kiá»ƒm tra phÃ¢n tÃ­ch bÃ³c tÃ¡ch chi phÃ­ váº­t tÆ° vÃ  Ä‘Æ¡n giÃ¡ bÃ¬nh quÃ¢n gia quyá»�n.Útotal_spend_vndrr   ræ   Ú	analyticsr—   r˜   rD   NÚcategories_breakdownÚtop_materialsrŒ   r�   rŽ   r�   rO   ©ú>=)z0%(py4)s
{%(py4)s = %(py0)s(%(py2)s)
} >= %(py7)srQ   rR   rF   rG   z)/v1/erp/invoices/analytics/cost-breakdownr‚   r   rƒ   rì   r…   r†   rE   rn   rp   r4   r5   r7   r   rí   )rV   Úget_material_and_cost_analyticsr   r   r#   r    r!   r"   r$   r%   r�   rŽ   rQ   r™   rš   r›   rœ   )rö   rZ   r[   r£   rŸ   r&   r^   r'   r_   r*   r`   ra   rì   rí   r\   r]   s                   r   Ú test_material_and_cost_analyticsrü   `  s½  € õ ×7Ò7Ñ9Ô9€IØÐ)Ð 	Ð)Ð)Ð)Ð)Õ)Ô)Ð)Ð)Ð)Ð)Ð 	Ð)Ñ)Ô)Õ)Ô)ÐÑ)Ô)Ð)Õ)Ô)Ñ)Ô)Ð)Ð)Õ)Ô) 	Ñ)Ô)Ð)Õ)Ô) 	Ñ)Ô)Ð)Ð)Ð)Ð)Ñ)Ð)Ð)Ð)Ð)Ð)Ñ)Ð)Õ)Õ)Ô)Ð)Ñ)Ô)Ñ)Ô)Ð)Ð)Ð)Ð)Ð)Ø!Ð.Ð! YÐ.Ð.Ð.Ð.Õ.Ô.Ð.Ð.Ð.Ð.Ð! YÐ.Ñ.Ô.Õ.Ô.Ð!Ñ.Ô.Ð.Õ.Ô.Ñ.Ô.Ð.Ð.Õ.Ô. YÑ.Ô.Ð.Õ.Ô. YÑ.Ô.Ð.Ð.Ð.Ð.Ñ.Ð.Ð.Ð.Ð.Ð.Ñ.Ð.Õ.Õ.Ô.Ð.Ñ.Ô.Ñ.Ô.Ð.Ð.Ð.Ð.Ð.ØÐ'ˆ?˜iÐ'Ð'Ð'Ð'Õ'Ô'Ð'Ð'Ð'Ð'ˆ?˜iÐ'Ñ'Ô'Õ'Ô'ˆ?Ñ'Ô'Ð'Õ'Ô'Ñ'Ô'Ð'Ð'Õ'Ô'˜iÑ'Ô'Ð'Õ'Ô'˜iÑ'Ô'Ð'Ð'Ð'Ð'Ñ'Ð'Ð'Ð'Ð'Ð'Ñ'Ð'Õ'Õ'Ô'Ð'Ñ'Ô'Ñ'Ô'Ð'Ð'Ð'Ð'Ð'ØÐ 6Ô7Ð>�:Ð7½Ñ>Ô>Ð>Ð>Ð>Ð>Ð>Õ>Ô>Ñ>Ô>Ð>Ð>Õ>Ô>�:Ñ>Ô>Ð>Õ>Ô>�:Ñ>Ô>Ð>Ð>Õ>Ô>Ð7Ñ>Ô>Ð>Õ>Ô>Ñ>Ô>Ð>Ð>Õ>Ô>½Ñ>Ô>Ð>Õ>Ô>½Ñ>Ô>Ð>Ð>Õ>Ô>Ð>Ñ>Ô>Ð>Ð>Ñ>Ð>Õ>Õ>Ô>Ð>Ñ>Ô>Ñ>Ô>Ð>Ð>Ð>Ð>Ð>ØÐ/Ô0Ð6�3Ð0Ñ1Ô1Ð6°QÐ6Ð1°QÒ6Ð6Ð6Ð6Õ6Ô6Ð6Ð6Ð6Ð6Ð1°QÐ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Ð0Ñ6Ô6Õ6Ô6Ð1Ñ6Ô6Õ6Ô6°QÑ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õ �*Š*Ð@Ñ
AÔ
A€CØŒ?Ð!˜cÐ!ˆ?˜cÒ!Ð!Ð!Ð!Õ!Ô!Ð!Ð!Ð!Ð!ˆ?˜cÐ!Ñ!Ô!Ð!Õ!Ô!Ñ!Ô!Ð!Ð!Õ!Ô!ˆ3Ñ!Ô!Ð!Õ!Ô!ˆ3Ñ!Ô!Ð!Ð!Õ!Ô!ˆ?Ñ!Ô!Õ!Ô!˜cÑ!Ô!Ð!Ð!Ñ!Ð!Ð!Ð!Ð!Ð!Ñ!Ð!Õ!Õ!Ô!Ð!Ñ!Ô!Ñ!Ô!Ð!Ð!Ð!Ð!Ð!Ð!Ð!Ø�8Š8‰:Œ:€DØ�Œ>Ð&˜YÐ&ˆ>˜YÒ&Ð&Ð&Ð&Õ&Ô&Ð&Ð&Ð&Ð&ˆ>˜YÐ&Ñ&Ô&Õ&Ô&ˆ>Ñ&Ô&Õ&Ô&˜YÑ&Ô&Ð&Ð&Ñ&Ð&Ð&Ð&Ð&Ð&Ñ&Ð&Õ&Õ&Ô&Ð&Ñ&Ô&Ñ&Ô&Ð&Ð&Ð&Ð&Ð&Ð&Ð&ØÐˆ;˜$ÐÐÐÐÕÔÐÐÐÐˆ;˜$ÐÑÔÕÔˆ;ÑÔÐÕÔÑÔÐÐÕÔ˜$ÑÔÐÕÔ˜$ÑÔÐÐÐÐÑÐÐÐÐÐÑÐÕÕÔÐÑÔÑÔÐÐÐÐÐÐÐr   c                  ó  — 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}}|                      ¦   «         }t          |t          ¦  «        r|n|                     d
g ¦  «        }|st          j        d¦  «         |d         }|d         }	|	ddddddœddddddœgd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}}|                     ¦   «         }|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  }d0d1|iz  }t          t          j
        |¦  «        ¦  «        ‚d	x}}|d+         }	 |d2         }|d3         }d4}||k    }|slt          j        d|fd'||f¦  «        t          j        |¦  «        t          j        |¦  «        d(œz  }d)d*|iz  }t          t          j
        |¦  «        ¦  «        ‚d	x}x}}|d5         }d6}||k    }|slt          j        d|fd'||f¦  «        t          j        |¦  «        t          j        |¦  «        d(œz  }d)d*|iz  }t          t          j
        |¦  «        ¦  «        ‚d	x}x}}|d7         }d8}||k    }|slt          j        d|fd'||f¦  «        t          j        |¦  «        t          j        |¦  «        d(œz  }d)d*|iz  }t          t          j
        |¦  «        ¦  «        ‚d	x}x}}|d9         }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<}||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>}||k    }|slt          j        d|fd'||f¦  «        t          j        |¦  «        t          j        |¦  «        d(œz  }d)d*|iz  }t          t          j
        |¦  «        ¦  «        ‚d	x}x}}t                                d?|› d@�¦  «        }|j        }d}||k    }|sªt          j        d|fd||f¦  «        dAt          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        ndAt          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}}|dB         }dC}||v }|s—t          j        d,|fd-||f¦  «        t          j        |¦  «        dDt          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        ndDd/œz  }d0d1|iz  }t          t          j
        |¦  «        ¦  «        ‚d	x}}dE}||v }|s—t          j        d,|fd-||f¦  «        t          j        |¦  «        dDt          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        ndDd/œz  }d0d1|iz  }t          t          j
        |¦  «        ¦  «        ‚d	x}}dF}||v }|s—t          j        d,|fd-||f¦  «        t          j        |¦  «        dDt          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        ndDd/œz  }d0d1|iz  }t          t          j
        |¦  «        ¦  «        ‚d	x}}|dF         }t          |t          ¦  «        }|sÝdGdHt          j        ¦   «         v st          j        t          ¦  «        rt          j        t          ¦  «        ndHt          j        |¦  «        dIt          j        ¦   «         v st          j        t          ¦  «        rt          j        t          ¦  «        ndIt          j        |¦  «        dJœz  }t          t          j
        |¦  «        ¦  «        ‚d	x}}|dF         }t#          |¦  «        }d}||k    }|sÇt          j        dK|fdL||f¦  «        dMt          j        ¦   «         v st          j        t"          ¦  «        rt          j        t"          ¦  «        ndMt          j        |¦  «        t          j        |¦  «        t          j        |¦  «        dNœz  }dOdP|iz  }t          t          j
        |¦  «        ¦  «        ‚d	x}x}x}}t$                               ¦   «         5 }|                     ¦   «         5 }|                     dQ|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 # t$                               ¦   «         5 }|                     ¦   «         5 }|                     dQ|f¦  «         |                     ¦   «          d	d	d	¦  «         n# 1 swxY w Y   d	d	d	¦  «         w # 1 swxY w Y   w xY w)RuŽ   Kiá»ƒm tra láº­p hÃ³a Ä‘Æ¡n nghiá»‡m thu IPC (FIDIC) vá»›i kháº¥u trá»« táº¡m á»©ng & giá»¯ láº¡i báº£o hÃ nh, kÃ¨m rÃ  soÃ¡t rá»§i ro thuáº¿.z/v1/erp/projectsr‚   r   rƒ   Úres_projr…   r†   rE   NÚprojectsu;   ChÆ°a cÃ³ dá»± Ã¡n trong DB Ä‘á»ƒ test láº­p hÃ³a Ä‘Æ¡n IPCr   r   uC   Nghiá»‡m thu khá»‘i lÆ°á»£ng hoÃ n thÃ nh Cá»™t dáº§m sÃ n Táº§ng 2z
WBS-COL-02u   Ä�á»£trO   i FÃ#)rS   Ú	item_coderT   ÚquantityÚunit_price_vndu)   Thi cÃ´ng cá»‘t thÃ©p dáº§m sÃ n Táº§ng 2zWBS-STEEL-02u   Táº¥né
   i -1g      $@g      @g       @Ú
0209991122u1   BAN QUáº¢N LÃ� Dá»° Ã�N KIáº¾M THá»¬ Tá»° Ä�á»˜NGu/   Sá»‘ 1 Ä�Æ°á»�ng HÃ¹ng VÆ°Æ¡ng, TP Háº£i PhÃ²ngr;   u(   Kiá»ƒm thá»­ tá»± Ä‘á»™ng hÃ³a Ä‘Æ¡n IPC)
Ú
project_idÚ	wbs_itemsÚadvance_deduction_pctÚretention_pctÚvat_rate_pctr>   Ú
buyer_nameÚbuyer_addressr:   Únotesz#/v1/erp/invoices/output/ipc-invoicer°   Úres_ipcrn   rp   r4   r5   r7   r   Ú
invoice_idrr   ræ   Úipc_datar—   r˜   rD   Úipc_deductionsÚgross_milestone_amount_vndg    „×ÇAÚadvance_deduction_amount_vndg    Ð“AÚretention_amount_vndg    ÐƒAÚnet_subtotal_vndg    ýCÄArH   g     ð‰AÚtotal_payable_vndg    ãÅAr“   z/tax-risk-auditÚ	res_auditÚaudit_reportÚ
risk_scoreÚreportÚ
risk_levelÚ
risk_flagsrŒ   r�   rŽ   r�   r�   r’   rQ   rR   rF   rG   ú'DELETE FROM erp_invoices WHERE id = %s;)r™   rš   r›   r   r   r    r!   r"   r#   r$   r%   rœ   r�   rŽ   ÚpytestÚskiprÅ   rQ   rV   rw   rx   ry   rz   )rþ   r&   r^   r'   rŸ   r`   Ú	proj_resprÿ   Útarget_projectÚproj_idÚreq_payloadr  r  rZ   r[   r\   r]   r£   Ú
created_idÚ
deductionsr  Ú
audit_datar  r_   r*   ra   r~   r   s                               r   Ú0test_fidic_ipc_output_invoice_creation_and_auditr&  r  s,  € õ �zŠzÐ,Ñ-Ô-€HØÔÐ& 3Ð&Ð 3Ò&Ð&Ð&Ð&Õ&Ô&Ð&Ð&Ð&Ð&Ð 3Ð&Ñ&Ô&Ð&Õ&Ô&Ñ&Ô&Ð&Ð&Õ&Ô&ˆ8Ñ&Ô&Ð&Õ&Ô&ˆ8Ñ&Ô&Ð&Ð&Õ&Ô&ÐÑ&Ô&Õ&Ô& 3Ñ&Ô&Ð&Ð&Ñ&Ð&Ð&Ð&Ð&Ð&Ñ&Ð&Õ&Õ&Ô&Ð&Ñ&Ô&Ñ&Ô&Ð&Ð&Ð&Ð&Ð&Ð&Ð&Ø—’‘”€Iå 	­4Ñ0Ô0ÐSˆ	ˆ	°i·m²mÀJÐPRÑ6SÔ6Sð ð ð SÝŒÐQÑRÔRÐRà˜a”[€NØ˜TÔ"€Gð ð cØ)Ø ØØ"+ðð ð IØ+ØØØ"*ðð ð
ð  "&ØØØ&ØIØJØ%Ø;ð3ð €Kõ8 �kŠkÐ?ÀkˆkÑRÔR€GØÔÐ% #Ð%Ð #Ò%Ð%Ð%Ð%Õ%Ô%Ð%Ð%Ð%Ð%Ð #Ð%Ñ%Ô%Ð%Õ%Ô%Ñ%Ô%Ð%Ð%Õ%Ô%ˆ7Ñ%Ô%Ð%Õ%Ô%ˆ7Ñ%Ô%Ð%Ð%Õ%Ô%ÐÑ%Ô%Õ%Ô% #Ñ%Ô%Ð%Ð%Ñ%Ð%Ð%Ð%Ð%Ð%Ñ%Ð%Õ%Õ%Ô%Ð%Ñ%Ô%Ñ%Ô%Ð%Ð%Ð%Ð%Ð%Ð%Ð%Ø�|Š|‰~Œ~€HØ�HÔÐ* Ð*Ð Ò*Ð*Ð*Ð*Õ*Ô*Ð*Ð*Ð*Ð*Ð Ð*Ñ*Ô*Õ*Ô*ÐÑ*Ô*Õ*Ô* Ñ*Ô*Ð*Ð*Ñ*Ð*Ð*Ð*Ð*Ð*Ñ*Ð*Õ*Õ*Ô*Ð*Ñ*Ô*Ñ*Ô*Ð*Ð*Ð*Ð*Ð*Ð*Ð*ØÐ#ˆ<˜8Ð#Ð#Ð#Ð#Õ#Ô#Ð#Ð#Ð#Ð#ˆ<˜8Ð#Ñ#Ô#Õ#Ô#ˆ<Ñ#Ô#Ð#Õ#Ô#Ñ#Ô#Ð#Ð#Õ#Ô#˜8Ñ#Ô#Ð#Õ#Ô#˜8Ñ#Ô#Ð#Ð#Ð#Ð#Ñ#Ð#Ð#Ð#Ð#Ð#Ñ#Ð#Õ#Õ#Ô#Ð#Ñ#Ô#Ñ#Ô#Ð#Ð#Ð#Ð#Ð#Ø˜,Ô'€Jðð Ð.Ô/ˆ
ØÐ6Ô7ÐF¸;ÐFÐ7¸;Ò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ÐFÐFÐFÐFÑFÐFÕFÕFÔFÐFÑFÔFÑFÔFÐFÐFÐFÐFÐFÐFÐFØÐ8Ô9ÐG¸ZÐGÐ9¸ZÒGÐGÐGÐGÕGÔGÐGÐGÐGÐGÐ9¸ZÐGÑGÔGÕGÔGÐ9ÑGÔGÕGÔG¸ZÑGÔGÐGÐGÑGÐGÐGÐGÐGÐGÑGÐGÕGÕGÔGÐGÑGÔGÑGÔGÐGÐGÐGÐGÐGÐGÐGØÐ0Ô1Ð?°ZÐ?Ð1°ZÒ?Ð?Ð?Ð?Õ?Ô?Ð?Ð?Ð?Ð?Ð1°ZÐ?Ñ?Ô?Õ?Ô?Ð1Ñ?Ô?Õ?Ô?°ZÑ?Ô?Ð?Ð?Ñ?Ð?Ð?Ð?Ð?Ð?Ñ?Ð?Õ?Õ?Ô?Ð?Ñ?Ô?Ñ?Ô?Ð?Ð?Ð?Ð?Ð?Ð?Ð?ØÐ,Ô-Ð<°Ð<Ð-°Ò<Ð<Ð<Ð<Õ<Ô<Ð<Ð<Ð<Ð<Ð-°Ð<Ñ<Ô<Õ<Ô<Ð-Ñ<Ô<Õ<Ô<°Ñ<Ô<Ð<Ð<Ñ<Ð<Ð<Ð<Ð<Ð<Ñ<Ð<Õ<Õ<Ô<Ð<Ñ<Ô<Ñ<Ô<Ð<Ð<Ð<Ð<Ð<Ð<Ð<ØÐ*Ô+Ð9¨zÐ9Ð+¨zÒ9Ð9Ð9Ð9Õ9Ô9Ð9Ð9Ð9Ð9Ð+¨zÐ9Ñ9Ô9Õ9Ô9Ð+Ñ9Ô9Õ9Ô9¨zÑ9Ô9Ð9Ð9Ñ9Ð9Ð9Ð9Ð9Ð9Ñ9Ð9Õ9Õ9Ô9Ð9Ñ9Ô9Ñ9Ô9Ð9Ð9Ð9Ð9Ð9Ð9Ð9ØÐ-Ô.Ð=°+Ð=Ð.°+Ò=Ð=Ð=Ð=Õ=Ô=Ð=Ð=Ð=Ð=Ð.°+Ð=Ñ=Ô=Õ=Ô=Ð.Ñ=Ô=Õ=Ô=°+Ñ=Ô=Ð=Ð=Ñ=Ð=Ð=Ð=Ð=Ð=Ñ=Ð=Õ=Õ=Ô=Ð=Ñ=Ô=Ñ=Ô=Ð=Ð=Ð=Ð=Ð=Ð=Ð=õ —J’JÐN°:ÐNÐNÐNÑOÔOˆ	ØÔ$Ð+¨Ð+Ð$¨Ò+Ð+Ð+Ð+Õ+Ô+Ð+Ð+Ð+Ð+Ð$¨Ð+Ñ+Ô+Ð+Õ+Ô+Ñ+Ô+Ð+Ð+Õ+Ô+ˆyÑ+Ô+Ð+Õ+Ô+ˆyÑ+Ô+Ð+Ð+Õ+Ô+Ð$Ñ+Ô+Õ+Ô+¨Ñ+Ô+Ð+Ð+Ñ+Ð+Ð+Ð+Ð+Ð+Ñ+Ð+Õ+Õ+Ô+Ð+Ñ+Ô+Ñ+Ô+Ð+Ð+Ð+Ð+Ð+Ð+Ð+Ø—^’^Ñ%Ô%ˆ
Ø˜(Ô#Ð0 yÐ0Ð# yÒ0Ð0Ð0Ð0Õ0Ô0Ð0Ð0Ð0Ð0Ð# yÐ0Ñ0Ô0Õ0Ô0Ð#Ñ0Ô0Õ0Ô0 yÑ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Ø˜NÔ+ˆØÐ%ˆ|˜vÐ%Ð%Ð%Ð%Õ%Ô%Ð%Ð%Ð%Ð%ˆ|˜vÐ%Ñ%Ô%Õ%Ô%ˆ|Ñ%Ô%Ð%Õ%Ô%Ñ%Ô%Ð%Ð%Õ%Ô%˜vÑ%Ô%Ð%Õ%Ô%˜vÑ%Ô%Ð%Ð%Ð%Ð%Ñ%Ð%Ð%Ð%Ð%Ð%Ñ%Ð%Õ%Õ%Ô%Ð%Ñ%Ô%Ñ%Ô%Ð%Ð%Ð%Ð%Ð%ØÐ%ˆ|˜vÐ%Ð%Ð%Ð%Õ%Ô%Ð%Ð%Ð%Ð%ˆ|˜vÐ%Ñ%Ô%Õ%Ô%ˆ|Ñ%Ô%Ð%Õ%Ô%Ñ%Ô%Ð%Ð%Õ%Ô%˜vÑ%Ô%Ð%Õ%Ô%˜vÑ%Ô%Ð%Ð%Ð%Ð%Ñ%Ð%Ð%Ð%Ð%Ð%Ñ%Ð%Õ%Õ%Ô%Ð%Ñ%Ô%Ñ%Ô%Ð%Ð%Ð%Ð%Ð%ØÐ%ˆ|˜vÐ%Ð%Ð%Ð%Õ%Ô%Ð%Ð%Ð%Ð%ˆ|˜vÐ%Ñ%Ô%Õ%Ô%ˆ|Ñ%Ô%Ð%Õ%Ô%Ñ%Ô%Ð%Ð%Õ%Ô%˜vÑ%Ô%Ð%Õ%Ô%˜vÑ%Ô%Ð%Ð%Ð%Ð%Ñ%Ð%Ð%Ð%Ð%Ð%Ñ%Ð%Õ%Õ%Ô%Ð%Ñ%Ô%Ñ%Ô%Ð%Ð%Ð%Ð%Ð%Ø  Ô.Ð5�zÐ.µÑ5Ô5Ð5Ð5Ð5Ð5Ð5Õ5Ô5Ñ5Ô5Ð5Ð5Õ5Ô5�zÑ5Ô5Ð5Õ5Ô5�zÑ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Ø˜,Ô'Ð,�sÐ'Ñ(Ô(Ð,¨1Ð,Ð(¨1Ò,Ð,Ð,Ð,Õ,Ô,Ð,Ð,Ð,Ð,Ð(¨1Ð,Ñ,Ô,Ð,Õ,Ô,Ñ,Ô,Ð,Ð,Õ,Ô,�sÑ,Ô,Ð,Õ,Ô,�sÑ,Ô,Ð,Ð,Õ,Ô,Ð'Ñ,Ô,Õ,Ô,Ð(Ñ,Ô,Õ,Ô,¨1Ñ,Ô,Ð,Ð,Ñ,Ð,Ð,Ð,Ð,Ð,Ñ,Ð,Õ,Õ,Ô,Ð,Ñ,Ô,Ñ,Ô,Ð,Ð,Ð,Ð,Ð,Ð,Ð,Ð,Ð,õ ×#Ò#Ñ%Ô%ð 	¨¨t¯{ª{©}¬}ð 	ÀØ�KŠKÐAÀJÀ=ÑQÔQÐQØ�KŠK‰MŒMˆMð	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	ð 	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	ð 	ð 	ø�W×#Ò#Ñ%Ô%ð 	¨¨t¯{ª{©}¬}ð 	ÀØ�KŠKÐAÀJÀ=ÑQÔQÐQØ�KŠK‰MŒMˆMð	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	ð 	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	ð 	øøøs‹   Í?a8r ðq5ð%,qñq5ñq!	ñ!q5ñ$q!	ñ%q5ñ5q9ñ<q9òtòt ò1,s)	ót ó)s-ó-t ó0s-ó1t ó4tô tôtôtôtc            	      ó  — t           j        } d}d} | ||¦  «        }d}||u }|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        |¦  «        t          j        |¦  «        t          j        |¦  «        dœz  }dd	|iz  }t          t          j	        |¦  «        ¦  «        ‚d
x} x}x}x}x}}t           j        } d}d} | ||¦  «        }d}||u }|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        |¦  «        t          j        |¦  «        t          j        |¦  «        dœz  }dd	|iz  }t          t          j	        |¦  «        ¦  «        ‚d
x} x}x}x}x}}t           j        } d}d} | ||¦  «        }d}||u }|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        |¦  «        t          j        |¦  «        t          j        |¦  «        dœz  }dd	|iz  }t          t          j	        |¦  «        ¦  «        ‚d
x} x}x}x}x}}t           j        } d}d} | ||¦  «        }d}||u }|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        |¦  «        t          j        |¦  «        t          j        |¦  «        dœz  }dd	|iz  }t          t          j	        |¦  «        ¦  «        ‚d
x} x}x}x}x}}t           j        } d}d} | ||¦  «        }d}||u }|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        |¦  «        t          j        |¦  «        t          j        |¦  «        dœz  }dd	|iz  }t          t          j	        |¦  «        ¦  «        ‚d
x} x}x}x}x}}t           j        } d}d} | ||¦  «        }d}||u }|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        |¦  «        t          j        |¦  «        t          j        |¦  «        dœz  }dd	|iz  }t          t          j	        |¦  «        ¦  «        ‚d
x} x}x}x}x}}t          j
        ddd¦  «        }|d         }	d}|	|u }
|
slt          j        d|
fd|	|f¦  «        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}	|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!         }|	|v }
|
slt          j        d|
fd|	|f¦  «        t          j        |	¦  «        t          j        |¦  «        dœz  }dd|iz  }t          t          j	        |¦  «        ¦  «        ‚d
x}	x}
}t          j
        d"dd#¦  «        }|d         }	d}|	|u }
|
slt          j        d|
fd|	|f¦  «        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}
}t          j
        ddd%¦  «        }|d         }	d}|	|u }
|
slt          j        d|
fd|	|f¦  «        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
S )'ul   Kiá»ƒm tra nháº­n diá»‡n HÃ³a Ä‘Æ¡n mÃ¡y tÃ­nh tiá»�n MTT (K26TXN, K23TXN, 1M26...) vÃ  cáº¥p nhÃ£n chuáº©n.ÚK26TXNÚ1TrK   )zh%(py8)s
{%(py8)s = %(py2)s
{%(py2)s = %(py0)s.is_cash_register_invoice
}(%(py4)s, %(py6)s)
} is %(py11)sr   r²   r´   rµ   NÚK23TXNÚ1M26TDSÚM26POSÚ2Ú1C26TDSFÚC24TAAu)   CÃ”NG TY TNHH MTV PETROLIMEX Háº¢I PHÃ’NGÚis_cash_registerrM   r5   r7   r   Útype_categoryÚcash_register_petrolr   r4   u   XÄ‚NG Dáº¦UÚ
type_labelrr   rt   u
   Ä�iá»�u 11Úlegal_basisÚM26ABCu   SiÃªu Thá»‹ Váº­t TÆ°Úcash_register_salesu   CÃ´ng Ty Xi MÄƒngÚstandard_vat)r   Úis_cash_register_invoicer   r   r    r!   r"   r#   r$   r%   Úget_invoice_type_metadata)r&   r'   r*   r(   rÍ   r)   rÎ   rÏ   Úpetrol_metarZ   r[   r\   r]   Úsales_mtt_metaÚstd_metas                  r   Ú/test_cash_register_mtt_recognition_and_metadatar=  Ç  s%  € å#Ô<ÐS¸XÐSÀsÐSÐ<Ð<¸XÀsÑKÔKÐSÈtÐSÐKÈtÐSÐSÐSÐSÕSÔSÐSÐSÐSÐSÐKÈtÐSÑSÔSÐSÕSÔSÑSÔSÐSÐSÕSÔSÕ#ÑSÔSÐSÕSÔSÕ#ÑSÔSÐSÐSÕSÔSÐ<ÑSÔSÕSÔS¸XÑSÔSÕSÔSÀsÑSÔSÕSÔSÐKÑSÔSÕSÔSÈtÑSÔSÐSÐSÑSÐSÐSÐSÐSÐSÑSÐSÕSÕSÔSÐSÑSÔSÑSÔSÐSÐSÐSÐSÐSÐSÐSÐSÐSÐSÐSÐSÐSÝ#Ô<ÐS¸XÐSÀsÐSÐ<Ð<¸XÀsÑKÔKÐSÈtÐSÐKÈtÐSÐSÐSÐSÕSÔSÐSÐSÐSÐSÐKÈtÐSÑSÔSÐSÕSÔSÑSÔSÐSÐSÕSÔSÕ#ÑSÔSÐSÕSÔSÕ#ÑSÔSÐSÐSÕSÔSÐ<ÑSÔSÕSÔS¸XÑSÔSÕSÔSÀsÑSÔSÕSÔSÐKÑSÔSÕSÔSÈtÑSÔSÐSÐSÑSÐSÐSÐSÐSÐSÑSÐSÕSÕSÔSÐSÑSÔSÑSÔSÐSÐSÐSÐSÐSÐSÐSÐSÐSÐSÐSÐSÐSÝ#Ô<ÐT¸YÐTÈÐTÐ<Ð<¸YÈÑLÔLÐTÐPTÐTÐLÐPTÐTÐTÐTÐTÕTÔTÐTÐTÐTÐTÐLÐPTÐTÑTÔTÐTÕTÔTÑTÔTÐTÐTÕTÔTÕ#ÑTÔTÐTÕTÔTÕ#ÑTÔTÐTÐTÕTÔTÐ<ÑTÔTÕTÔT¸YÑTÔTÕTÔTÈÑTÔTÕTÔTÐLÑTÔTÕTÔTÐPTÑTÔTÐTÐTÑTÐTÐTÐTÐTÐTÑTÐTÕTÕTÔTÐTÑTÔTÑTÔTÐTÐTÐTÐTÐTÐTÐTÐTÐTÐTÐTÐTÐTÝ#Ô<ÐS¸XÐSÀsÐSÐ<Ð<¸XÀsÑKÔKÐSÈtÐSÐKÈtÐSÐSÐSÐSÕSÔSÐSÐSÐSÐSÐKÈtÐSÑSÔSÐSÕSÔSÑSÔSÐSÐSÕSÔSÕ#ÑSÔSÐSÕSÔSÕ#ÑSÔSÐSÐSÕSÔSÐ<ÑSÔSÕSÔS¸XÑSÔSÕSÔSÀsÑSÔSÕSÔSÐKÑSÔSÕSÔSÈtÑSÔSÐSÐSÑSÐSÐSÐSÐSÐSÑSÐSÕSÕSÔSÐSÑSÔSÑSÔSÐSÐSÐSÐSÐSÐSÐSÐSÐSÐSÐSÐSÐSÝ#Ô<ÐU¸YÐUÈÐUÐ<Ð<¸YÈÑLÔLÐUÐPUÐUÐLÐPUÐUÐUÐUÐUÕUÔUÐUÐUÐUÐUÐLÐPUÐUÑUÔUÐUÕUÔUÑUÔUÐUÐUÕUÔUÕ#ÑUÔUÐUÕUÔUÕ#ÑUÔUÐUÐUÕUÔUÐ<ÑUÔUÕUÔU¸YÑUÔUÕUÔUÈÑUÔUÕUÔUÐLÑUÔUÕUÔUÐPUÑUÔUÐUÐUÑUÐUÐUÐUÐUÐUÑUÐUÕUÕUÔUÐUÑUÔUÑUÔUÐUÐUÐUÐUÐUÐUÐUÐUÐUÐUÐUÐUÐUÝ#Ô<ÐT¸XÐTÀsÐTÐ<Ð<¸XÀsÑKÔKÐTÈuÐTÐKÈuÐTÐTÐTÐTÕTÔTÐTÐTÐTÐTÐKÈuÐTÑTÔTÐTÕTÔTÑTÔTÐTÐTÕTÔTÕ#ÑTÔTÐTÕTÔTÕ#ÑTÔTÐTÐTÕTÔTÐ<ÑTÔTÕTÔT¸XÑTÔTÕTÔTÀsÑTÔTÕTÔTÐKÑTÔTÕTÔTÈuÑTÔTÐTÐTÑTÐTÐTÐTÐTÐTÑTÐTÕTÕTÔTÐTÑTÔTÑTÔTÐTÐTÐTÐTÐTÐTÐTÐTÐTÐTÐTÐTÐTå*ÔDØ�#ÐBñô €Kð Ð)Ô*Ð2¨dÐ2Ð*¨dÐ2Ð2Ð2Ð2Õ2Ô2Ð2Ð2Ð2Ð2Ð*¨dÐ2Ñ2Ô2Õ2Ô2Ð*Ñ2Ô2Õ2Ô2¨dÑ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Ð+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ÐAÐAØÐ5˜K¨Ô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Ð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Ð5Ð5Ð5Ð5Ð5Ð5Ð5å-ÔGØ�#Ð.ñô €Nð Ð,Ô-Ð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Ø˜/Ô*Ð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å'ÔAØ�3Ð+ñô €Hð Ð&Ô'Ð0¨5Ð0Ð'¨5Ð0Ð0Ð0Ð0Õ0Ô0Ð0Ð0Ð0Ð0Ð'¨5Ð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Ñ0Ô0Ñ0Ô0Ð0Ð0Ð0Ð0Ð0Ð0Ð0Ø�OÔ$Ð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Õ6Ô6Ð6Ñ6Ô6Ñ6Ô6Ð6Ð6Ð6Ð6Ð6Ð6Ð6Ð6Ð6r   c            	      óB  — d} t                                | 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}||u }|slt          j        d|fd||f¦  «        t          j        |¦  «        t          j        |¦  «        dœz  }d	d
|iz  }t          t          j        |¦  «        ¦  «        ‚dx}x}}g }d}|d         }||v }	|	}|	sd}
|d         }|
|v }|}|�st          j        d|	fd||f¦  «        t          j        |¦  «        t          j        |¦  «        dœz  }dd|iz  }|                     |¦  «         |	s`t          j        d|fd|
|f¦  «        t          j        |
¦  «        t          j        |¦  «        dœz  }dd|iz  }|                     |¦  «         t          j        |d¦  «        i z  }dd|iz  }t          t          j        |¦  «        ¦  «        ‚dx}x}x}x}	x}x}
x}}t            	                    |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%}||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%         }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 }|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}}t                               d0¦  «        }|j        }d1}	||	k    }|sªt          j        d|fd2||	f¦  «        d3t          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        nd3t          j        |¦  «        t          j        |	¦  «        d4œz  }d5d6|iz  }t          t          j        |¦  «        ¦  «        ‚dx}x}}	|                     ¦   «         d7         }t%          |¦  «        }d}||k    }	|	sòt          j        d8|	fd9||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}||u }|slt          j        d|fd||f¦  «        t          j        |¦  «        t          j        |¦  «        dœz  }d	d
|iz  }t          t          j        |¦  «        ¦  «        ‚dx}x}}t                                ¦   «         5 }|                     ¦   «         5 }|                     d?|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 # t                                ¦   «         5 }|                     ¦   «         5 }|                     d?|f¦  «         |                     ¦   «          ddd¦  «         n# 1 swxY w Y   ddd¦  «         w # 1 swxY w Y   w xY w)@ur   Kiá»ƒm tra miá»…n trá»« chá»¯ kÃ½ sá»‘ cho HÄ�Ä�T mÃ¡y tÃ­nh tiá»�n theo Khoáº£n 3 Ä�iá»�u 11 NÄ� 123/2020/NÄ�-CP.uk  <?xml version="1.0" encoding="UTF-8"?>
<HDon>
    <DLHDon>
        <TTChung>
            <PBan>2.0.0</PBan>
            <THDon>HÃ“A Ä�Æ N GTGT KHá»žI Táº O Tá»ª MÃ�Y TÃ�NH TIá»€N</THDon>
            <KHMSHDon>1</KHMSHDon>
            <KHHDon>K26TXNTEST</KHHDon>
            <SHDon>00888888</SHDon>
            <NLap>2026-08-21</NLap>
            <DVTTe>VND</DVTTe>
            <TGia>1.0000</TGia>
            <MCCQT>MTT-CQT-00888888</MCCQT>
        </TTChung>
        <NDHDon>
            <NBan>
                <Ten>CÃ”NG TY XÄ‚NG Dáº¦U KIá»‚M THá»¬ MTT</Ten>
                <MST>0209997771</MST>
                <DChi>Háº£i PhÃ²ng</DChi>
            </NBan>
            <NMua>
                <Ten>CÃ”NG TY TNHH XÃ‚Y Dá»°NG Ä�á»ŠNH SÆ N</Ten>
                <MST>0202111150</MST>
                <DChi>Háº£i PhÃ²ng</DChi>
            </NMua>
            <DSHHDVu>
                <HHDVu>
                    <STT>1</STT>
                    <THHVu>XÄƒng RON 95-III (BÆ¡m tá»« mÃ¡y tÃ­nh tiá»�n)</THHVu>
                    <DVTinh>LÃ­t</DVTinh>
                    <SLuong>50.0000</SLuong>
                    <DGia>24000.0000</DGia>
                    <ThTien>1200000.0000</ThTien>
                    <TSuat>8%</TSuat>
                    <TThue>96000.0000</TThue>
                </HHDVu>
            </DSHHDVu>
            <TToan>
                <TgTCThue>1200000.0000</TgTCThue>
                <TgTThue>96000.0000</TgTThue>
                <TgTTTBSo>1296000.0000</TgTTTBSo>
                <TgTTTBChu>Má»™t triá»‡u hai trÄƒm chÃ­n mÆ°Æ¡i sÃ¡u nghÃ¬n Ä‘á»“ng.</TgTTTBChu>
            </TToan>
        </NDHDon>
    </DLHDon>
</HDon>Ú
manual_xmlr0   r:   Ú
K26TXNTESTr   r4   r5   r7   r   NrJ   TrK   rM   u   MÃ£ CQTÚ	signed_byÚMTTrr   )z%(py3)s in %(py6)s)rC   r   z%(py8)sr   )z%(py11)s in %(py14)s)r³   rÀ   z%(py16)sÚpy16rO   zassert %(py19)srÂ   zTest MTT Runnerrl   rn   ro   rt   r  r  ræ   Ú	audit_resr—   r˜   rD   r   c                 ó   — g | ]
}|d          ‘ŒS )Útyper   )Ú.0Úfs     r   ú
<listcomp>z?test_mtt_tax_risk_audit_signature_exemption.<locals>.<listcomp>$  s   € ÐAÐAÐA A�a˜”iÐAÐAÐAr   r  ÚSIGNATURE_EXEMPT_MTTÚ
flag_typeszD/v1/erp/invoices?invoice_type_filter=cash_register&search=K26TXNTESTr‚   rƒ   rŠ   r…   r†   rE   r‹   rù   )z0%(py3)s
{%(py3)s = %(py0)s(%(py1)s)
} >= %(py6)srQ   Úinvs)r   r6   rC   r   zassert %(py8)sr0  r  )rV   rW   r   r   r#   r$   r%   rÊ   rË   rv   Úaudit_invoice_tax_riskr    r!   r"   r™   rš   r›   rœ   rQ   rw   rx   ry   rz   )Úsample_mtt_xmlrY   rZ   r'   r[   r\   r]   r&   r*   r^   rÍ   Ú@py_assert13Ú@py_assert12Ú@py_format9rÔ   Ú@py_format17Ú@py_format18rÕ   Úsave_resÚinv_idrD  r£   rŸ   rK  rŠ   r`   rL  r~   r   s                                r   Ú+test_mtt_tax_risk_audit_signature_exemptionrV  å  s  € ð-€Nõ^ ×&Ò& ~ÀlÐ&ÑSÔS€FØÐ"Ô#Ð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ØÐ#Ô$Ð,¨Ð,Ð$¨Ð,Ð,Ð,Ð,Õ,Ô,Ð,Ð,Ð,Ð,Ð$¨Ð,Ñ,Ô,Õ,Ô,Ð$Ñ,Ô,Õ,Ô,¨Ñ,Ô,Ð,Ð,Ñ,Ð,Ð,Ð,Ð,Ð,Ñ,Ð,Õ,Õ,Ô,Ð,Ñ,Ô,Ñ,Ô,Ð,Ð,Ð,Ð,Ð,Ð,Ð,ØKÐKˆ9ÐK˜˜{Ô+ÐKˆ9Ð+Ð+ÐKÐKÐKÐKÐK¨uÐK¸¸{Ô8KÐK¨uÐ8KÐ/KÐKÐKÐKÐKÑKÕKÔKÐKÐKÐKÐKˆ9Ð+ÐKÑKÔKÕKÔKˆ9Ñ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¨uÐ8KÐKÑKÔKÕKÔK¨uÑKÔKÕKÔKÐ8KÑ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ÐKÐKÐKÐKÐKÐKÐKÐKÐKÐKÐKå×#Ò# FÐ4EÐ#ÑFÔF€HØ�HÔÐ9Ð!9Ð9ÐÐ!9Ð9Ð9Ð9Ð9Õ9Ô9Ð9Ð9Ð9Ð9ÐÐ!9Ð9Ñ9Ô9Õ9Ô9ÐÑ9Ô9Õ9Ô9Ð!9Ñ9Ô9Ð9Ð9Ñ9Ð9Ð9Ð9Ð9Ð9Ñ9Ð9Õ9Õ9Ô9Ð9Ñ9Ô9Ñ9Ô9Ð9Ð9Ð9Ð9Ð9Ð9Ð9Ø�lÔ#€FðÝ×2Ò2°6Ñ:Ô:ˆ	ØÐ(ˆ|˜yÐ(Ð(Ð(Ð(Õ(Ô(Ð(Ð(Ð(Ð(ˆ|˜yÐ(Ñ(Ô(Õ(Ô(ˆ|Ñ(Ô(Ð(Õ(Ô(Ñ(Ô(Ð(Ð(Õ(Ô(˜yÑ(Ô(Ð(Õ(Ô(˜yÑ(Ô(Ð(Ð(Ð(Ð(Ñ(Ð(Ð(Ð(Ð(Ð(Ñ(Ð(Õ(Õ(Ô(Ð(Ñ(Ô(Ñ(Ô(Ð(Ð(Ð(Ð(Ð(à˜Ô&Ð+¨!Ð+Ð&¨!Ò+Ð+Ð+Ð+Õ+Ô+Ð+Ð+Ð+Ð+Ð&¨!Ð+Ñ+Ô+Õ+Ô+Ð&Ñ+Ô+Õ+Ô+¨!Ñ+Ô+Ð+Ð+Ñ+Ð+Ð+Ð+Ð+Ð+Ñ+Ð+Õ+Õ+Ô+Ð+Ñ+Ô+Ñ+Ô+Ð+Ð+Ð+Ð+Ð+Ð+Ð+ØAÐA¨°<Ô)@ÐAÑAÔAˆ
Ø%Ð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Ñ3Ô3Ñ3Ô3Ð3Ð3Ð3Ð3Ð3õ —:’:ØRñ
ô 
ˆð Ô#Ð* sÐ*Ð# sÒ*Ð*Ð*Ð*Õ*Ô*Ð*Ð*Ð*Ð*Ð# sÐ*Ñ*Ô*Ð*Õ*Ô*Ñ*Ô*Ð*Ð*Õ*Ô*ˆxÑ*Ô*Ð*Õ*Ô*ˆxÑ*Ô*Ð*Ð*Õ*Ô*Ð#Ñ*Ô*Õ*Ô* sÑ*Ô*Ð*Ð*Ñ*Ð*Ð*Ð*Ð*Ð*Ñ*Ð*Õ*Õ*Ô*Ð*Ñ*Ô*Ñ*Ô*Ð*Ð*Ð*Ð*Ð*Ð*Ð*Ø�}Š}‰Œ˜zÔ*ˆÝ�4‰yŒyÐ˜AÐˆy˜AŠ~ÐÐÐÕÔÐÐÐÐˆy˜AÐÑÔÐÕÔÑÔÐÐÕÔ�sÑÔÐÕÔ�sÑÔÐÐÐÕÔÑÔÐÐÕÔ�4ÑÔÐÕÔ�4ÑÔÐÐÕÔˆyÑÔÕÔ˜AÑÔÐÐÑÐÐÐÐÐÑÐÕÕÔÐÑÔÑÔÐÐÐÐÐÐÐØ�AŒwÐ)Ô*Ð2¨dÐ2Ð*¨dÐ2Ð2Ð2Ð2Õ2Ô2Ð2Ð2Ð2Ð2Ð*¨dÐ2Ñ2Ô2Õ2Ô2Ð*Ñ2Ô2Õ2Ô2¨dÑ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¯{ª{©}¬}ð 	ÀØ�KŠKÐAÀFÀ9ÑMÔMÐMØ�KŠK‰MŒMˆMð	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	ð 	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	ð 	ð 	ø�W×#Ò#Ñ%Ô%ð 	¨¨t¯{ª{©}¬}ð 	ÀØ�KŠKÐAÀFÀ9ÑMÔMÐMØ�KŠK‰MŒMˆMð	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	ð 	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	ð 	øøøs‹   ÌR` Þ"`Þ7,_/ß#`ß/_3	ß3`ß6_3	ß7`à`à`àbà.bá,a;	á/bá;a?á?bâa?âbâbâbâbâbâbc                  óÒ  — ddl m}  d} | |¦  «        }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        |¦  «        t          j        |¦  «        dœz  }dd	|iz  }t          t          j	        |¦  «        ¦  «        ‚d
x}x}x}}d} | |¦  «        }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        |¦  «        t          j        |¦  «        dœz  }dd	|iz  }t          t          j	        |¦  «        ¦  «        ‚d
x}x}x}}d} | |¦  «        }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        |¦  «        t          j        |¦  «        dœz  }dd	|iz  }t          t          j	        |¦  «        ¦  «        ‚d
x}x}x}}d} | |¦  «        }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        |¦  «        t          j        |¦  «        dœz  }dd	|iz  }t          t          j	        |¦  «        ¦  «        ‚d
x}x}x}}d} | |¦  «        }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        |¦  «        t          j        |¦  «        dœz  }dd	|iz  }t          t          j	        |¦  «        ¦  «        ‚d
x}x}x}}d} | |¦  «        }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        |¦  «        t          j        |¦  «        dœz  }dd	|iz  }t          t          j	        |¦  «        ¦  «        ‚d
x}x}x}}d} | |¦  «        }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        |¦  «        t          j        |¦  «        dœz  }dd	|iz  }t          t          j	        |¦  «        ¦  «        ‚d
x}x}x}}d
} | |¦  «        }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        |¦  «        t          j        |¦  «        dœz  }dd	|iz  }t          t          j	        |¦  «        ¦  «        ‚d
x}x}x}}d
S )u\   Kiá»ƒm tra Ä‘á»™ chÃ­nh xÃ¡c vÃ  lÃ m sáº¡ch kÃ½ tá»± Captcha tá»« AI Vision (Sanitization).r   ©Úclean_captcha_textÚABCDEr   rP   rY  rR   rF   rG   NÚabcdez```
XY789
```ÚXY789zCaptcha: 6H789KÚ6H789KzResult: **7K8P9**Ú7K8P9za 1 b 2 c 3ÚA1B2C3r   )
Ú?app.modules.invoices.application.invoice_processing.gdt_captcharY  r   r   r    r!   r"   r#   r$   r%   )rY  r&   r'   r_   r*   r`   ra   s          r   Útest_clean_captcha_textra  6  sH  € àbÐbÐbÐbÐbÐbà%Ð1ÐÐ˜gÑ&Ô&Ð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˜gÑ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ÐÐ˜gÑ&Ô&Ð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˜gÑ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Ô0Ð;°GÐ;Ð0°GÒ;Ð;Ð;Ð;Õ;Ô;Ð;Ð;Ð;Ð;Ð0°GÐ;Ñ;Ô;Ð;Õ;Ô;Ñ;Ô;Ð;Ð;Õ;Ô;ÐÑ;Ô;Ð;Õ;Ô;ÐÑ;Ô;Ð;Ð;Õ;Ô;Ð/Ñ;Ô;Õ;Ô;Ð0Ñ;Ô;Õ;Ô;°GÑ;Ô;Ð;Ð;Ñ;Ð;Ð;Ð;Ð;Ð;Ñ;Ð;Õ;Õ;Ô;Ð;Ñ;Ô;Ñ;Ô;Ð;Ð;Ð;Ð;Ð;Ð;Ð;Ð;Ð;Ø/Ð<ÐÐÐ/Ñ0Ô0Ð<°HÐ<Ð0°HÒ<Ð<Ð<Ð<Õ<Ô<Ð<Ð<Ð<Ð<Ð0°HÐ<Ñ<Ô<Ð<Õ<Ô<Ñ<Ô<Ð<Ð<Õ<Ô<ÐÑ<Ô<Ð<Õ<Ô<ÐÑ<Ô<Ð<Ð<Õ<Ô<Ð/Ñ<Ô<Õ<Ô<Ð0Ñ<Ô<Õ<Ô<°HÑ<Ô<Ð<Ð<Ñ<Ð<Ð<Ð<Ð<Ð<Ñ<Ð<Õ<Õ<Ô<Ð<Ñ<Ô<Ñ<Ô<Ð<Ð<Ð<Ð<Ð<Ð<Ð<Ð<Ð<Ø1Ð=ÐÐÐ1Ñ2Ô2Ð=°gÐ=Ð2°gÒ=Ð=Ð=Ð=Õ=Ô=Ð=Ð=Ð=Ð=Ð2°gÐ=Ñ=Ô=Ð=Õ=Ô=Ñ=Ô=Ð=Ð=Õ=Ô=ÐÑ=Ô=Ð=Õ=Ô=ÐÑ=Ô=Ð=Ð=Õ=Ô=Ð1Ñ=Ô=Õ=Ô=Ð2Ñ=Ô=Õ=Ô=°gÑ=Ô=Ð=Ð=Ñ=Ð=Ð=Ð=Ð=Ð=Ñ=Ð=Õ=Õ=Ô=Ð=Ñ=Ô=Ñ=Ô=Ð=Ð=Ð=Ð=Ð=Ð=Ð=Ð=Ð=Ø+Ð8ÐÐ˜mÑ,Ô,Ð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Õ8Ô8ÐÑ8Ô8Ð8Ð8Õ8Ô8˜mÑ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Ô8Ð8Ð8Ð8Ð8Ð8Ð8Ð8Ð8Ð8Ø Ð'ÐÐ˜bÑ!Ô!Ð' RÐ'Ð! RÒ'Ð'Ð'Ð'Õ'Ô'Ð'Ð'Ð'Ð'Ð! RÐ'Ñ'Ô'Ð'Õ'Ô'Ñ'Ô'Ð'Ð'Õ'Ô'ÐÑ'Ô'Ð'Õ'Ô'ÐÑ'Ô'Ð'Ð'Õ'Ô'˜bÑ'Ô'Õ'Ô'Ð!Ñ'Ô'Õ'Ô' RÑ'Ô'Ð'Ð'Ñ'Ð'Ð'Ð'Ð'Ð'Ñ'Ð'Õ'Õ'Ô'Ð'Ñ'Ô'Ñ'Ô'Ð'Ð'Ð'Ð'Ð'Ð'Ð'Ð'Ð'Ø"Ð)ÐÐ˜dÑ#Ô#Ð) rÐ)Ð# rÒ)Ð)Ð)Ð)Õ)Ô)Ð)Ð)Ð)Ð)Ð# rÐ)Ñ)Ô)Ð)Õ)Ô)Ñ)Ô)Ð)Ð)Õ)Ô)ÐÑ)Ô)Ð)Õ)Ô)ÐÑ)Ô)Ð)Ð)Õ)Ô)˜dÑ)Ô)Õ)Ô)Ð#Ñ)Ô)Õ)Ô) rÑ)Ô)Ð)Ð)Ñ)Ð)Ð)Ð)Ð)Ð)Ñ)Ð)Õ)Õ)Ô)Ð)Ñ)Ô)Ñ)Ô)Ð)Ð)Ð)Ð)Ð)Ð)Ð)Ð)Ð)Ð)Ð)r   c                 óâ  ‡— ddl m}  |¦   «         }d}d}|                      |dd„ ¦  «         |                      |dd„ ¦  «         |                      |d	d
„ ¦  «          G d„ d¦  «        Šddl}|                      |j        dˆfd„¦  «         |                     ¦   «         \  }}d}||k    }	|	s—t          j        d|	fd||f¦  «        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}	}d}||k    }	|	s—t          j        d|	fd||f¦  «        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}	}dS )uD   Kiá»ƒm tra cÆ¡ cháº¿ Multi-Tier Fallback Cascade giáº£i mÃ£ Captcha.r   )ÚInvoiceGdtCaptchaMixinz<svg><text>SAMPLE</text></svg>Útest_key_123Ú_render_svg_to_pngc                 ó   — dS )Ns   dummy_png_bytesr   )Úsvgs    r   r   z9test_solve_gdt_captcha_fallback_cascade.<locals>.<lambda>N  s   € ÐBT€ r   Ú_solve_with_openrouterc                 ó   — dS )N)NNr   )ÚuriÚkeys     r   r   z9test_solve_gdt_captcha_fallback_cascade.<locals>.<lambda>Q  s   € È<€ r   Ú_solve_with_gemini_directc                 ó   — dS )N)ÚCASC78z Direct Gemini [gemini-3.6-flash]r   )rj  rk  Úurls      r   r   z9test_solve_gdt_captcha_fallback_cascade.<locals>.<lambda>U  s   € ÐL€ r   c                   ó    — e Zd Zd„ Zd„ Zd„ ZdS )ú>test_solve_gdt_captcha_fallback_cascade.<locals>.DummyResponsec                 ó   — | S ©Nr   ©Úselfs    r   Ú	__enter__zHtest_solve_gdt_captcha_fallback_cascade.<locals>.DummyResponse.__enter__Y  s   € ØˆKr   c                 ó   — d S rs  r   )ru  Úargss     r   Ú__exit__zGtest_solve_gdt_captcha_fallback_cascade.<locals>.DummyResponse.__exit__\  s   € ØˆDr   c                 ó   — dS )Ns1   {"key": "test_key_123", "content": "<svg></svg>"}r   rt  s    r   ÚreadzCtest_solve_gdt_captcha_fallback_cascade.<locals>.DummyResponse.read_  s   € ØGÐGr   N)Ú__name__Ú
__module__Ú__qualname__rv  ry  r{  r   r   r   ÚDummyResponserq  X  sF   € € € € € ð	ð 	ð 	ð	ð 	ð 	ð	Hð 	Hð 	Hð 	Hð 	Hr   r  NÚurlopenc                 ó   •—  ‰¦   «         S rs  r   )Úreqrx  Úkwargsr  s      €r   r   z9test_solve_gdt_captcha_fallback_cascade.<locals>.<lambda>e  s   ø€ ÀÀÁÄ€ r   r   r¶   Úckeyr¸   r˜   rD   rn  Úcval)r`  rc  ÚsetattrÚurllib.requestÚrequestÚ_solve_gdt_captchar   r   r    r!   r"   r#   r$   r%   )Úmonkeypatchrc  ÚsolverÚmock_svgÚmock_keyÚurllibr„  r…  r[   r&   r£   rŸ   r  s               @r   Ú'test_solve_gdt_captcha_fallback_cascader�  D  s™  ø€ àfÐfÐfÐfÐfÐfà#Ð#Ñ%Ô%€Fð 0€HØ€Hà×Ò˜Ð 4Ð6TÐ6TÑUÔUÐUð ×Ò˜Ð 8Ð:WÐ:WÑXÔXÐXØ×ÒØØ#ØLÐLñô ð ðHð Hð Hð Hð Hñ Hô Hð Hð ÐÐÐà×ÒØŒ˜	Ð#OÐ#OÐ#OÐ#Oñô ð ð ×*Ò*Ñ,Ô,�J€Dˆ$Ø!Ð!ˆ4�>Ò!Ð!Ð!Ð!Õ!Ô!Ð!Ð!Ð!Ð!ˆ4�>Ð!Ñ!Ô!Ð!Õ!Ô!Ñ!Ô!Ð!Ð!Õ!Ô!ˆ4Ñ!Ô!Ð!Õ!Ô!ˆ4Ñ!Ô!Ð!Ð!Õ!Ô!�>Ñ!Ô!Ð!Ð!Ñ!Ð!Ð!Ð!Ð!Ð!Ñ!Ð!Õ!Õ!Ô!Ð!Ñ!Ô!Ñ!Ô!Ð!Ð!Ð!Ð!Ð!ØÐˆ4�8ÒÐÐÐÕÔÐÐÐÐˆ4�8ÐÑÔÐÕÔÑÔÐÐÕÔˆ4ÑÔÐÕÔˆ4ÑÔÐÐÕÔ�8ÑÔÐÐÑÐÐÐÐÐÑÐÕÕÔÐÑÔÑÔÐÐÐÐÐÐÐr   c           	      ó„  — ddl m} dd„}|                      t          d|¦  «         |                      |j        d|¦  «         t
                               ddddd	i 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}
|	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 )uA   Kiá»ƒm tra API /sync/test-connection hoáº¡t Ä‘á»™ng chuáº©n xÃ¡c.r   )Úinvoices_syncNc                 ó   — dddddœS )Nrp   Úmock_jwt_token_123ÚTEST88u;   XÃ¡c thá»±c vÃ  vÆ°á»£t Captcha Cá»•ng Thuáº¿ thÃ nh cÃ´ng.)rn   ÚtokenÚsolved_captcharu   r   )r¬   r­   r®   r¯   s       r   r   z7test_gdt_test_connection_api_endpoint.<locals>.<lambda>r  s   € ØØ%Ø"ØPð	Ið I€ r   Ú_authenticate_gdt_portalz%/v1/erp/invoices/sync/test-connectionr¨   r?   Ú	valid_pwdrª   r°   r‚   r   rƒ   Úrespr…   r†   rE   rn   rp   r4   r5   r7   r   u!   Ä�Ã£ vÆ°á»£t Captcha tá»± Ä‘á»™ngru   rr   rt   rs  )Ú1app.modules.invoices.presentation.invoice_modulesr‘  r†  rV   Úinvoice_servicer™   rÅ   r›   r   r   r    r!   r"   r#   r$   r%   rœ   )rŠ  r‘  Ú	mock_authr™  r&   r^   r'   rŸ   r`   rí   rZ   r[   r\   r]   s                 r   Ú%test_gdt_test_connection_api_endpointr�  m  sÜ  € àOÐOÐOÐOÐOÐOðð ð €Ið ×Ò�Ð!;¸YÑGÔGÐGØ×ÒØÔ%Ð'AÀ9ñô ð õ �;Š;Ø/à(Ø$Ø$Ø#Øð
ð 
ð ñ 	ô 	€Dð ÔÐ"˜sÐ"Ð˜sÒ"Ð"Ð"Ð"Õ"Ô"Ð"Ð"Ð"Ð"Ð˜sÐ"Ñ"Ô"Ð"Õ"Ô"Ñ"Ô"Ð"Ð"Õ"Ô"ˆ4Ñ"Ô"Ð"Õ"Ô"ˆ4Ñ"Ô"Ð"Ð"Õ"Ô"ÐÑ"Ô"Õ"Ô"˜sÑ"Ô"Ð"Ð"Ñ"Ð"Ð"Ð"Ð"Ð"Ñ"Ð"Õ"Õ"Ô"Ð"Ñ"Ô"Ñ"Ô"Ð"Ð"Ð"Ð"Ð"Ð"Ð"Ø�9Š9‰;Œ;€DØ�Œ>Ð&˜YÐ&ˆ>˜YÒ&Ð&Ð&Ð&Õ&Ô&Ð&Ð&Ð&Ð&ˆ>˜YÐ&Ñ&Ô&Õ&Ô&ˆ>Ñ&Ô&Õ&Ô&˜YÑ&Ô&Ð&Ð&Ñ&Ð&Ð&Ð&Ð&Ð&Ñ&Ð&Õ&Õ&Ô&Ð&Ñ&Ô&Ñ&Ô&Ð&Ð&Ð&Ð&Ð&Ð&Ð&Ø.ÐA°$°y´/Ð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ÐAr   c                  óV  — ddddddddd	d
ddddddddddddddœ	gdœ} t                                | dd¬¦  «        }d}||k    }|s—t          j        d|fd||f¦  «        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}}t                                | dd¬¦  «        }d#}||k    }|s—t          j        d|fd||f¦  «        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}}t            
                    ¦   «         5 }|                     ¦   «         5 }|                     d%¦  «         |                     ¦   «          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 )&uc   Kiá»ƒm tra parse vÃ  lÆ°u trá»¯ báº£n ghi hÃ³a Ä‘Æ¡n tá»« API Cá»•ng Tá»•ng Cá»¥c Thuáº¿ vÃ o CSDL.Ú
0201805660u(   CÃ”NG TY TNHH THÆ¯Æ NG Máº I TRUNG KIÃŠNu   Háº£i PhÃ²ngr?   u&   CÃ”NG TY TNHH XÃ‚Y Dá»°NG Ä�á»ŠNH SÆ Nu4   ThÃ´n TÃº Ä�Ã´i 3, xÃ£ Nghi DÆ°Æ¡ng, TP Háº£i PhÃ²ngr.  Ú00088899r)  z2026-08-20T10:00:00+07:00g    „×‡Ag    €„NAg    <ï…ArO   u   CÃ¡t vÃ ng san láº¥pzCAT-01Úm3r‚   ip‚ i€ç½z8%i '8 )	ÚsttÚtenÚmhhdvuÚdvtinhÚsluongÚdgiaÚthtienÚltsuatÚtthue)ÚnbmstÚnbtenÚnbdchiÚnmmstÚnmtenÚnmdchiÚkhhdonÚshdonÚkhmshdonÚtdlapÚtgtttbsoÚtgtthueÚ
tgtttbthueÚtthaiÚhdhhdvur3   )Úfallback_directionÚmy_tax_codeÚnewr   r¶   r|   r¸   r˜   rD   NÚdupr}   zZDELETE FROM erp_invoices WHERE invoice_number = '00088899' AND invoice_series = '1C26TDS';)rV   Ú_persist_gdt_raw_invoicer   r   r    r!   r"   r#   r$   r%   rw   rx   ry   rz   )	Úraw_invr|   r[   r&   r£   rŸ   r}   r~   r   s	            r   Ú6test_persist_gdt_raw_invoice_success_and_deduplicationrÀ  �  s/  € ð Ø;Ø ØØ9ØHØØØØ,ØØØ Øð Ø-Ø"ØØØØ"ØØ ð
ð 
ð
ðð €Gõ< ×+Ò+Ø G¸ð ,ñ ô €Dð Ðˆ4�5Š=ÐÐÐÕÔÐÐÐÐˆ4�5ÐÑÔÐÕÔÑÔÐÐÕÔˆ4ÑÔÐÕÔˆ4ÑÔÐÐÕÔ�5ÑÔÐÐÑÐÐÐÐÐÑÐÕÕÔÐÑÔÑÔÐÐÐÐÐõ ×+Ò+Ø G¸ð ,ñ ô €Dð Ðˆ4�5Š=ÐÐÐÕÔÐÐÐÐˆ4�5ÐÑÔÐÕÔÑÔÐÐÕÔˆ4ÑÔÐÕÔˆ4ÑÔÐÐÕÔ�5ÑÔÐÐÑÐÐÐÐÐÑÐÕÕÔÐÑÔÑÔÐÐÐÐÐõ 
×	Ò	Ñ	!Ô	!ð  TØ�[Š[‰]Œ]ð 	˜cØ�KŠKØlñô ð ð �KŠK‰MŒMˆMð		ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	ðð ð ñ ô ð ð ð ð ð ð ð øøøð ð ð ð ð ð s6   Æ;HÇ*HÇ:HÈH
	È
HÈH
	ÈHÈH"È%H"c                  óº  — ddl m}  ddddddddddddœ}|                     ¦   «         D �]0\  }} | |¦  «        }||k    }|sàt          j        d|fd	||f¦  «        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  }t          j	        d|›d|›d|›�¦  «        dz   d|iz  }t          t          j        |¦  «        ¦  «        ‚d}d}t          |¦  «        }	||	k    }
d}|	|k    }|
r|�st          j        d|
|fd||	|f¦  «        t          j        |¦  «        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}
x}x}	}�Œ2dS )up   Kiá»ƒm tra lÃ m sáº¡ch mÃ£ Captcha chá»‘ng lá»—i cÃ¡c dáº¡ng pháº£n há»“i há»™i thoáº¡i vÃ  suy luáº­n tá»« LLM.r   rX  ÚB5QHX8Ú67WEPBÚ34G7FMÚMG9)rÂ  zCaptcha: B5QHX8zThe characters are: B5QHX8z*The characters in this captcha are B5QHX8.z```
B5QHX8
```zB5QHX8
zResult is B5QHX8z+The code in the image appears to be 67WEPB.z(Thinking process...
Final Answer: 34G7FMrÅ  zCaptcha: MG9r   )z%(py0)s == %(py2)sÚcleanedÚexpected)r   r   zFailed for z: got z != z
>assert %(py4)sr   Né   é   )ú<=rÊ  )z0%(py1)s <= %(py7)s
{%(py7)s = %(py4)s(%(py5)s)
}z0%(py7)s
{%(py7)s = %(py4)s(%(py5)s)
} <= %(py9)srQ   )r6   r   rD   rE   rG   zassert %(py11)sr³   )r`  rY  rN   r   r   r    r!   r"   r#   r�   r$   r%   rQ   )rY  ÚcasesÚ	raw_inputrÇ  rÆ  r&   Ú@py_format3r\   rZ   r_   r[   Ú@py_assert8r'   ra   rÎ   s                  r   Ú"test_clean_captcha_text_resiliencerÏ  Á  sÛ  € àbÐbÐbÐbÐbÐbð Ø#Ø&.Ø6>Ø$ØØ$Ø7?Ø5=ØØðð €Eð  %Ÿ{š{™}œ}ð &ñ &Ñˆ	�8Ø$Ð$ YÑ/Ô/ˆØ˜(Ò"Ð`Ð`Ð`Õ`Ô`Ð`Ð`Ð`Ð`ˆw˜(Ð`Ñ`Ô`Ð`Õ`Ô`Ñ`Ô`Ð`Ð`Õ`Ô`ˆwÑ`Ô`Ð`Õ`Ô`ˆwÑ`Ô`Ð`Ð`Ð`Õ`Ô`Ñ`Ô`Ð`Ð`Õ`Ô`˜(Ñ`Ô`Ð`Õ`Ô`˜(Ñ`Ô`Ð`Ð`Ð`Ð`Ñ`Ð`Õ`Ô`Ð$`°)Ð$`Ð$`ÀWÐ$`Ð$`ÐT\Ð$`Ð$`Ñ`Ô`Ð`Ñ`Ð`Ð`Ð`Ñ`Ð`Õ`Õ`Ô`Ð`Ñ`Ô`Ñ`Ô`Ð`Ð`Ð`ØÐ%•C˜‘L”LÐ%ˆq�LÒ%Ð% AÐ%�L AÒ%Ð%Ð%Ð%Ð%Ñ%Õ%Ô%Ð%Ð%Ð%Ð%Ð%ˆq�L AÐ%Ñ%Ô%Õ%Ô%ˆqÑ%Ô%Ð%Õ%Ô%Ñ%Ô%Ð%Ð%Õ%Ô%•CÑ%Ô%Ð%Õ%Ô%•CÑ%Ô%Ð%Ð%Ð%Õ%Ô%Ñ%Ô%Ð%Ð%Õ%Ô%˜Ñ%Ô%Ð%Õ%Ô%˜Ñ%Ô%Ð%Ð%Õ%Ô%�LÑ%Ô%Õ%Ô% AÑ%Ô%Ð%Ð%Ñ%Ð%Ð%Ð%Ð%Ð%Ñ%Ð%Õ%Õ%Ô%Ð%Ñ%Ô%Ñ%Ô%Ð%Ð%Ð%Ð%Ð%Ð%Ð%Ð%Ð%Ð%Ð%Ñ%ð&ð &r   )'Ú__doc__Úbuiltinsr    Ú_pytest.assertion.rewriteÚ	assertionÚrewriter   Údecimalr   r  Úfastapi.testclientr   Ú"app.modules.auth.presentation.authr   Úapp.mainr   Ú;app.modules.invoices.application.invoice_processing_servicer   r   Údependency_overridesr™   rV   r-   rb   ri   r€   r¤   rÙ   rã   ró   rü   r&  r=  rV  ra  r�  r�  rÀ  rÏ  r   r   r   ú<module>rÛ     sà  ðØ JÐ Jà  € € € € € € € € € € € € Ð Ð Ð Ð Ð Ð à €€€Ø )Ð )Ð )Ð )Ð )Ð )à ?Ð ?Ð ?Ð ?Ð ?Ð ?Ø Ð Ð Ð Ð Ð Ø lÐ lÐ lÐ lÐ lÐ lÐ lÐ lð.ð .€Ô Ð)Ñ *ð 
ˆ�C‰Œ€Ø
"Ð
"Ñ
$Ô
$€ð/ð /ð /ðA0ð A0ð A0ðH%%ð %%ð %%ðP8ð 8ð 8ðv*ð *ð *ð67ð 7ð 7ðt'ð 'ð 'ðT"ð "ð "ð6ð ð ð$Rð Rð Rðj7ð 7ð 7ð<Nð Nð Nðb*ð *ð *ð&ð &ð &ðRBð Bð Bð@1ð 1ð 1ðh&ð &ð &ð &ð &r   