§
    œ·«js#  ã                  óÖ   — d dl mZ 	 d dlZd dlmc mZ d dlm	Z	 d dl
Z
d dlZd dlmZ d dlmZ d dlmZmZ ej        d„ ¦   «         Zej        d„ ¦   «         Zd	„ Zd
„ Zd„ Zd„ Zd„ Zd„ ZdS )é    )ÚannotationsN)ÚDecimal©ÚBasePostgresClient©ÚWarehouseDispatchService)ÚNORM_WASTAGE_PERCENTAGESÚVarianceAlertStatusc                 ó   — t          ¦   «         S )Nr   © ó    ú@C:\Projects\DSCons\tests\test_warehouse_dispatch_and_variance.pyÚ	db_clientr      s   € åÑÔÐr   c                ó"   — t          | ¬¦  «        S )N)Úpostgres_clientr   )r   s    r   Údispatch_servicer      s   € å#°IÐ>Ñ>Ô>Ð>r   c                 ó˜	  — t           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}}t           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}}t           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}}t           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}}t           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	S )u_   Kiá»ƒm tra báº£ng Ä‘á»‹nh má»©c hao há»¥t chuáº©n theo ThÃ´ng tÆ° 12/2021 & Ä�á»‹nh má»©c 2026.ÚSTEELz2.5©ú==)z0%(py1)s == %(py7)s
{%(py7)s = %(py3)s(%(py5)s)
}r   ©Úpy1Úpy3Úpy5Úpy7úassert %(py9)sÚpy9NÚCONCRETEz2.0Ú	AGGREGATEz4.0ÚCEMENTÚBRICKz3.0)
r	   r   Ú
@pytest_arÚ_call_reprcompareÚ	_safereprÚ@py_builtinsÚlocalsÚ_should_repr_global_nameÚAssertionErrorÚ_format_explanation)Ú@py_assert0Ú@py_assert4Ú@py_assert6Ú@py_assert2Ú@py_format8Ú@py_format10s         r   Ú0test_norm_wastage_percentages_construction_rulesr0      s  € å# GÔ,Ð>¸Ð>µ¸±´Ð>Ð,°Ò>Ð>Ð>Ð>Õ>Ô>Ð>Ð>Ð>Ð>Ð,°Ð>Ñ>Ô>Õ>Ô>Ð,Ñ>Ô>Ð>Õ>Ô>Ñ>Ô>Ð>Ð>Õ>Ô>µÑ>Ô>Ð>Õ>Ô>µÑ>Ô>Ð>Ð>Õ>Ô>¸Ñ>Ô>Õ>Ô>°Ñ>Ô>Ð>Ð>Ñ>Ð>Ð>Ð>Ð>Ð>Ñ>Ð>Õ>Õ>Ô>Ð>Ñ>Ô>Ñ>Ô>Ð>Ð>Ð>Ð>Ð>Ð>Ð>Ð>Ð>Ý# JÔ/ÐA¸5ÐAµ7¸5±>´>Ð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µ7ÑAÔAÐAÕAÔAµ7ÑAÔAÐAÐAÕAÔA¸5Ñ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Ý# KÔ0ÐB¸EÐBµG¸E±N´NÐBÐ0°NÒBÐBÐBÐBÕBÔBÐBÐBÐBÐBÐ0°NÐBÑBÔBÕBÔBÐ0ÑBÔBÐBÕBÔBÑBÔBÐBÐBÕBÔBµGÑBÔBÐBÕBÔBµGÑBÔBÐBÐBÕBÔB¸EÑBÔBÕBÔB°NÑBÔBÐBÐBÑBÐBÐBÐBÐBÐBÑBÐBÕBÕBÔBÐBÑBÔBÑBÔBÐBÐBÐBÐBÐBÐBÐBÐBÐBÝ# HÔ-Ð?¸Ð?µ¸±´Ð?Ð-°Ò?Ð?Ð?Ð?Õ?Ô?Ð?Ð?Ð?Ð?Ð-°Ð?Ñ?Ô?Õ?Ô?Ð-Ñ?Ô?Ð?Õ?Ô?Ñ?Ô?Ð?Ð?Õ?Ô?µÑ?Ô?Ð?Õ?Ô?µÑ?Ô?Ð?Ð?Õ?Ô?¸Ñ?Ô?Õ?Ô?°Ñ?Ô?Ð?Ð?Ñ?Ð?Ð?Ð?Ð?Ð?Ñ?Ð?Õ?Õ?Ô?Ð?Ñ?Ô?Ñ?Ô?Ð?Ð?Ð?Ð?Ð?Ð?Ð?Ð?Ð?Ý# GÔ,Ð>¸Ð>µ¸±´Ð>Ð,°Ò>Ð>Ð>Ð>Õ>Ô>Ð>Ð>Ð>Ð>Ð,°Ð>Ñ>Ô>Õ>Ô>Ð,Ñ>Ô>Ð>Õ>Ô>Ñ>Ô>Ð>Ð>Õ>Ô>µÑ>Ô>Ð>Õ>Ô>µÑ>Ô>Ð>Ð>Õ>Ô>¸Ñ>Ô>Õ>Ô>°Ñ>Ô>Ð>Ð>Ñ>Ð>Ð>Ð>Ð>Ð>Ñ>Ð>Õ>Õ>Ô>Ð>Ñ>Ô>Ñ>Ô>Ð>Ð>Ð>Ð>Ð>Ð>Ð>Ð>Ð>Ð>Ð>r   c                ó¨  — t          j        t          d¬¦  «        5  |                      t	          t          j        ¦   «         ¦  «        d¬¦  «         ddd¦  «         n# 1 swxY w Y   t          j        t          d¬¦  «        5  |                      t	          t          j        ¦   «         ¦  «        d¬¦  «         ddd¦  «         dS # 1 swxY w Y   dS )u6   Kiá»ƒm tra cháº·n xuáº¥t kho vá»›i sá»‘ lÆ°á»£ng <= 0.u   lá»›n hÆ¡n 0©Úmatchr   ©Úinventory_item_idÚquantity_dispatchedNg      À)ÚpytestÚraisesÚ
ValueErrorÚcreate_dispatchÚstrÚuuidÚuuid4)r   s    r   Ú)test_dispatch_validation_zero_or_negativer>   &   sI  € å	Œ•z¨Ð	8Ñ	8Ô	8ð 
ð 
Ø×(Ò(Ý!¥$¤*¡,¤,Ñ/Ô/Ø !ð 	)ñ 	
ô 	
ð 	
ð
ð 
ð 
ñ 
ô 
ð 
ð 
ð 
ð 
ð 
ð 
øøøð 
ð 
ð 
ð 
õ 
Œ•z¨Ð	8Ñ	8Ô	8ð 
ð 
Ø×(Ò(Ý!¥$¤*¡,¤,Ñ/Ô/Ø $ð 	)ñ 	
ô 	
ð 	
ð
ð 
ð 
ñ 
ô 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
øøøð 
ð 
ð 
ð 
ð 
ð 
s#   œ6AÁA"Á%A"Â6CÃCÃCc                óÜ   — t          t          j        ¦   «         ¦  «        }t          j        t
          d¬¦  «        5  |                      |d¬¦  «         ddd¦  «         dS # 1 swxY w Y   dS )uF   Kiá»ƒm tra xá»­ lÃ½ khi ID lÃ´ váº­t tÆ° khÃ´ng tá»“n táº¡i trong kho.u    KhÃ´ng tÃ¬m tháº¥y lÃ´ váº­t tÆ°r2   g      $@r4   N)r;   r<   r=   r7   r8   r9   r:   )r   Ú	random_ids     r   Útest_dispatch_non_existent_itemrA   5   s²   € å•D”J‘L”LÑ!Ô!€IÝ	Œ•zÐ)KÐ	LÑ	LÔ	Lð 
ð 
Ø×(Ò(Ø'Ø $ð 	)ñ 	
ô 	
ð 	
ð
ð 
ð 
ñ 
ô 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
øøøð 
ð 
ð 
ð 
ð 
ð 
s   ¼A!Á!A%Á(A%c           	     ór  — t          t          j        ¦   «         ¦  «        }d}|                      ¦   «         5 }|                     ¦   «         5 }|                     d¦  «         |                     ¦   «         }|r|d         }ddd¦  «         n# 1 swxY w Y   ddd¦  «         n# 1 swxY w Y   |st          j        d¦  «         |                      ¦   «         5 }|                     ¦   «         5 }|                     d||f¦  «         | 	                    ¦   «          ddd¦  «         n# 1 swxY w Y   ddd¦  «         n# 1 swxY w Y   	 | 
                    |dddd	d
¬¦  «        }|d         }d}	||	k    }
|
slt          j        d|
fd||	f¦  «        t          j        |¦  «        t          j        |	¦  «        dœz  }dd|iz  }t          t          j        |¦  «        ¦  «        ‚dx}x}
}	|d         }d}	||	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         }|j        }
d} |
|¦  «        }|ssdt          j        |¦  «        t          j        |
¦  «        t          j        |¦  «        t          j        |¦  «        dœz  }t          t          j        |¦  «        ¦  «        ‚dx}x}
x}}|d         }d}	d}|	|z  }||k    }
|
st          j        d|
fd||f¦  «        t          j        |¦  «        t          j        |	¦  «        t          j        |¦  «        dœz  }dd|iz  }t          t          j        |¦  «        ¦  «        ‚dx}x}
x}	x}}t          j        t$          d ¬!¦  «        5  | 
                    |d"¬#¦  «         ddd¦  «         n# 1 swxY w Y   | 
                    |dd$d%¬&¦  «        }|d         }d}	||	k    }
|
slt          j        d|
fd||	f¦  «        t          j        |¦  «        t          j        |	¦  «        dœz  }dd|iz  }t          t          j        |¦  «        ¦  «        ‚dx}x}
}	|d         }d'}	||	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*}
||
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*}|
|k    }|sòt          j        d|fd0|
|f¦  «        d1t)          j        ¦   «         v st          j        t.          ¦  «        rt          j        t.          ¦  «        nd1d2t)          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        nd2t          j        |
¦  «        t          j        |¦  «        d3œz  }d4d5|iz  }t          t          j        |¦  «        ¦  «        ‚dx}
x}}|d6         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}
}	|d7         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}
}	|                      ¦   «         5 }|                     ¦   «         5 }|                     d8|f¦  «         |                     d9|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 # |                      ¦   «         5 }|                     ¦   «         5 }|                     d8|f¦  «         |                     d9|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):u	  Kiá»ƒm tra toÃ n bá»™ vÃ²ng Ä‘á»�i xuáº¥t kho linh hoáº¡t:
    1. Táº¡o lÃ´ váº­t tÆ° test táº¡m thá»�i.
    2. Xuáº¥t kho má»™t pháº§n (khÃ´ng cáº§n WBS hay Dá»± Ã¡n - tÃ­nh linh hoáº¡t).
    3. Kiá»ƒm tra sá»‘ dÆ° cÃ²n láº¡i (quantity_remaining) vÃ  tráº¡ng thÃ¡i Ä�Ãƒ_XUáº¤T_Má»˜T_PHáº¦N.
    4. Thá»­ xuáº¥t vÆ°á»£t quÃ¡ tá»“n kho cÃ²n láº¡i -> Bá»‹ cháº·n (chá»‘ng xuáº¥t Ã¢m).
    5. Xuáº¥t háº¿t pháº§n cÃ²n láº¡i -> Tráº¡ng thÃ¡i Ä�Ãƒ_XUáº¤T_Háº¾T.
    6. Dá»�n dáº¹p sáº¡ch sáº½ dá»¯ liá»‡u test (Teardown).
    Nz!SELECT id FROM companies LIMIT 1;Úidu?   ChÆ°a cÃ³ company trong database Ä‘á»ƒ cháº¡y integration test.u  
                INSERT INTO erp_warehouse_inventory (
                    id, company_id, item_code, item_name, material_group,
                    unit, quantity_received, quantity_remaining,
                    unit_price_vnd, total_value_vnd, status
                ) VALUES (
                    %s, %s, 'TEST-THEP-CB400', 'ThÃ©p váº±n D16 HÃ²a PhÃ¡t CB400 (Test)', 'STEEL',
                    'Táº¥n', 20.0000, 20.0000,
                    15500000.0000, 310000000.0000, 'CHá»œ_XUáº¤T_CÃ”NG_TRÆ¯á»œNG'
                );
            g      @u)   Nguyá»…n VÄƒn HÃ¹ng (Chá»‰ huy trÆ°á»Ÿng)z
15C-123.45u)   Gia cÃ´ng cá»‘t thÃ©p dáº§m sÃ n Ä‘á»£t 1u7   Xuáº¥t cáº¥p bÃ¡ch phá»¥c vá»¥ Ä‘á»• bÃª tÃ´ng ca Ä‘Ãªm)r5   r6   Úrecipient_nameÚtransport_vehicleÚpurposeÚnotesr6   r   ©z%(py1)s == %(py4)s©r   Úpy4úassert %(py6)sÚpy6Úquantity_remaining_afterg      +@Ústatusu   Ä�Ãƒ_XUáº¤T_Má»˜T_PHáº¦NÚdispatch_codezXK-zLassert %(py7)s
{%(py7)s = %(py3)s
{%(py3)s = %(py1)s.startswith
}(%(py5)s)
}r   Útotal_value_vndg    \�mA)z%(py1)s == (%(py4)s * %(py6)s))r   rJ   rL   r   r   u   khÃ´ng Ä‘á»§ Ä‘á»ƒ xuáº¥tr2   g      .@r4   u   Tráº§n VÄƒn Namu   Gia cÃ´ng mÃ³ng Ä‘á»£t 2)r5   r6   rD   rF   g        u   Ä�Ãƒ_XUáº¤T_Háº¾T)r5   é   )z%(py0)s == %(py3)sÚtotal)Úpy0r   úassert %(py5)sr   )z0%(py3)s
{%(py3)s = %(py0)s(%(py1)s)
} == %(py6)sÚlenÚ
dispatches)rS   r   r   rL   zassert %(py8)sÚpy8r   é   zBDELETE FROM erp_warehouse_dispatches WHERE inventory_item_id = %s;z2DELETE FROM erp_warehouse_inventory WHERE id = %s;)r;   r<   r=   Úget_connectionÚcursorÚexecuteÚfetchoner7   ÚskipÚcommitr:   r"   r#   r$   r(   r)   Ú
startswithr8   r9   Úlist_dispatchesr%   r&   r'   rU   )r   r   Útest_item_idÚ
company_idÚconnÚcurÚc_rowÚdisp1r*   Ú@py_assert3r-   Ú@py_format5Ú@py_format7r+   r,   r.   Ú@py_assert5Ú@py_assert7r/   Údisp2rV   rR   Ú@py_assert1Ú@py_format4Ú@py_format6Ú@py_format9s                             r   Ú test_flexible_dispatch_lifecyclerq   ?   s  € õ •t”z‘|”|Ñ$Ô$€LØ€Jà	×	!Ò	!Ñ	#Ô	#ð ) tØ�[Š[‰]Œ]ð 	)˜cà�KŠKÐ;Ñ<Ô<Ð<Ø—L’L‘N”NˆEØð )Ø" 4œ[�
ð	)ð 	)ð 	)ñ 	)ô 	)ð 	)ð 	)ð 	)ð 	)ð 	)ð 	)øøøð 	)ð 	)ð 	)ð 	)ð)ð )ð )ñ )ô )ð )ð )ð )ð )ð )ð )øøøð )ð )ð )ð )ð ð WÝŒÐUÑVÔVÐVð 
×	!Ò	!Ñ	#Ô	#ð  tØ�[Š[‰]Œ]ð 	˜cØ�KŠKð 
ð  
Ð+ñ
-ô 
-ð 
-ð �KŠK‰MŒMˆMð	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	ðð ð ñ ô ð ð ð ð ð ð øøøð ð ð ð ð0à ×0Ò0Ø*Ø #ØFØ*Ø?ØKð 1ñ 
ô 
ˆð Ð*Ô+Ð2¨sÐ2Ð+¨sÒ2Ð2Ð2Ð2Õ2Ô2Ð2Ð2Ð2Ð2Ð+¨sÐ2Ñ2Ô2Õ2Ô2Ð+Ñ2Ô2Õ2Ô2¨sÑ2Ô2Ð2Ð2Ñ2Ð2Ð2Ð2Ð2Ð2Ñ2Ð2Õ2Õ2Ô2Ð2Ñ2Ô2Ñ2Ô2Ð2Ð2Ð2Ð2Ð2Ð2Ð2ØÐ/Ô0Ð8°DÐ8Ð0°DÒ8Ð8Ð8Ð8Õ8Ô8Ð8Ð8Ð8Ð8Ð0°DÐ8Ñ8Ô8Õ8Ô8Ð0Ñ8Ô8Õ8Ô8°DÑ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Ø�XŒÐ<Ð"<Ð<ˆÐ"<Ò<Ð<Ð<Ð<Õ<Ô<Ð<Ð<Ð<Ð<ˆÐ"<Ð<Ñ<Ô<Õ<Ô<ˆÑ<Ô<Õ<Ô<Ð"<Ñ<Ô<Ð<Ð<Ñ<Ð<Ð<Ð<Ð<Ð<Ñ<Ð<Õ<Õ<Ô<Ð<Ñ<Ô<Ñ<Ô<Ð<Ð<Ð<Ð<Ð<Ð<Ð<Ø�_Ô%Ð7Ð%Ô0Ð7°Ð7Ð0Ð0°Ñ7Ô7Ð7Ð7Ð7Ð7Õ7Ô7Ð%Ñ7Ô7Õ7Ô7Ð0Ñ7Ô7Õ7Ô7°Ñ7Ô7Õ7Ô7Ð7Ñ7Ô7Ð7Ð7Ñ7Ð7Õ7Õ7Ô7Ð7Ñ7Ô7Ñ7Ô7Ð7Ð7Ð7Ð7Ð7Ð7Ð7Ð7Ð7ØÐ&Ô'Ð;¨3Ð;°Ð;¨3°Ñ+;Ð;Ð'Ð+;Ò;Ð;Ð;Ð;Õ;Ô;Ð;Ð;Ð;Ð;Ð'Ð+;Ð;Ñ;Ô;Õ;Ô;Ð'Ñ;Ô;Õ;Ô;¨3Ñ;Ô;Õ;Ô;°Ñ;Ô;Ð;Ð;Ñ;Ð;Ð;Ð;Ð;Ð;Ñ;Ð;Õ;Õ;Ô;Ð;Ñ;Ô;Ñ;Ô;Ð;Ð;Ð;Ð;Ð;Ð;Ð;Ð;Ð;Ð;Ð;õ Œ]�:Ð-HÐIÑIÔIð 	ð 	Ø×,Ò,Ø".Ø$(ð -ñ ô ð ð	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	ð !×0Ò0Ø*Ø $Ø,Ø.ð	 1ñ 
ô 
ˆð Ð*Ô+Ð3¨tÐ3Ð+¨tÒ3Ð3Ð3Ð3Õ3Ô3Ð3Ð3Ð3Ð3Ð+¨tÐ3Ñ3Ô3Õ3Ô3Ð+Ñ3Ô3Õ3Ô3¨tÑ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ØÐ/Ô0Ð7°CÐ7Ð0°CÒ7Ð7Ð7Ð7Õ7Ô7Ð7Ð7Ð7Ð7Ð0°CÐ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Ø�XŒÐ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ð -×<Ò<È|Ð<Ñ\Ô\Ñˆ
�EØÐˆu˜ŠzÐÐÐÕÔÐÐÐÐˆu˜ÐÑÔÐÕÔÑÔÐÐÕÔˆuÑÔÐÕÔˆuÑÔÐÐÕÔ˜ÑÔÐÐÑÐÐÐÐÐÑÐÕÕÔÐÑÔÑÔÐÐÐÐÐÝ�:‰ŒÐ# !Ð#ˆ !Ò#Ð#Ð#Ð#Õ#Ô#Ð#Ð#Ð#Ð#ˆ !Ð#Ñ#Ô#Ð#Õ#Ô#Ñ#Ô#Ð#Ð#Õ#Ô#�sÑ#Ô#Ð#Õ#Ô#�sÑ#Ô#Ð#Ð#Ð#Õ#Ô#Ñ#Ô#Ð#Ð#Õ#Ô#�:Ñ#Ô#Ð#Õ#Ô#�:Ñ#Ô#Ð#Ð#Õ#Ô#ˆÑ#Ô#Õ#Ô# !Ñ#Ô#Ð#Ð#Ñ#Ð#Ð#Ð#Ð#Ð#Ñ#Ð#Õ#Õ#Ô#Ð#Ñ#Ô#Ñ#Ô#Ð#Ð#Ð#Ð#Ð#Ð#Ð#Ø˜!Œ}Ð2Ô3Ð;°tÐ;Ð3°tÒ;Ð;Ð;Ð;Õ;Ô;Ð;Ð;Ð;Ð;Ð3°tÐ;Ñ;Ô;Õ;Ô;Ð3Ñ;Ô;Õ;Ô;°tÑ;Ô;Ð;Ð;Ñ;Ð;Ð;Ð;Ð;Ð;Ñ;Ð;Õ;Õ;Ô;Ð;Ñ;Ô;Ñ;Ô;Ð;Ð;Ð;Ð;Ð;Ð;Ð;Ø˜!Œ}Ð2Ô3Ð:°sÐ:Ð3°sÒ:Ð:Ð:Ð:Õ:Ô:Ð:Ð:Ð:Ð:Ð3°sÐ:Ñ:Ô:Õ:Ô:Ð3Ñ:Ô:Õ:Ô:°sÑ:Ô:Ð:Ð:Ñ:Ð:Ð:Ð:Ð:Ð:Ñ:Ð:Õ:Õ:Ô:Ð:Ñ:Ô:Ñ:Ô:Ð:Ð:Ð:Ð:Ð:Ð:Ð:ð ×%Ò%Ñ'Ô'ð 	¨4Ø—’‘”ð  #Ø—’Ð`ÐcoÐbqÑrÔrÐrØ—’ÐPÐS_ÐRaÑbÔbÐbØ—’‘”�ðð ð ñ ô ð ð ð ð ð ð øøøð ð ð ð ð	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	ð 	ð 	øˆY×%Ò%Ñ'Ô'ð 	¨4Ø—’‘”ð  #Ø—’Ð`ÐcoÐbqÑrÔrÐrØ—’ÐPÐS_ÐRaÑbÔbÐbØ—’‘”�ðð ð ñ ô ð ð ð ð ð ð øøøð ð ð ð ð	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	ð 	øøøs  ·B#Á4BÂ B#ÂB	ÂB#ÂB	ÂB#Â#B'Â*B'ÃD=Ã--D&ÄD=Ä&D*	Ä*D=Ä-D*	Ä.D=Ä=EÅEÅ	K=f ÑQ*Ñf Ñ*Q.Ñ.f Ñ1Q.Ñ2Rf äfä&Ae5å)få5e9	å9få<e9	å=fæfæfæh6æ/h*çAh	èh*èhèh*èhèh*èh6è*h.è.h6è1h.è2h6c                ó  — |                       d¬¦  «        }d}||v }|s—t          j        d|fd||f¦  «        t          j        |¦  «        dt	          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        nddœz  }dd	|iz  }t          t          j        |¦  «        ¦  «        ‚dx}}d
}||v }|s—t          j        d|fd||f¦  «        t          j        |¦  «        dt	          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        nddœz  }dd	|iz  }t          t          j        |¦  «        ¦  «        ‚dx}}d}||v }|s—t          j        d|fd||f¦  «        t          j        |¦  «        dt	          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        nddœz  }dd	|iz  }t          t          j        |¦  «        ¦  «        ‚dx}}d}||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         D �]:}d}||v }|s—t          j        d|fd||f¦  «        t          j        |¦  «        dt	          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        nddœz  }dd	|iz  }t          t          j        |¦  «        ¦  «        ‚dx}}d}||v }|s—t          j        d|fd||f¦  «        t          j        |¦  «        dt	          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        nddœz  }dd	|iz  }t          t          j        |¦  «        ¦  «        ‚dx}}d}||v }|s—t          j        d|fd||f¦  «        t          j        |¦  «        dt	          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        nddœz  }dd	|iz  }t          t          j        |¦  «        ¦  «        ‚dx}}d}||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         }t          j        j        t          j        j        t          j        j        t          j        j        g}	||	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 )uI   Kiá»ƒm tra nghiá»‡p vá»¥ phÃ¢n tÃ­ch vÃ  cáº£nh bÃ¡o hao há»¥t 3 chiá»�u.N)Ú
project_idÚtotal_materials_monitored©Úin©z%(py1)s in %(py3)sÚreport©r   r   rT   r   Útotal_dispatched_value_vndÚtotal_wastage_cost_vndÚaverage_wastage_pctÚitemsz5assert %(py5)s
{%(py5)s = %(py0)s(%(py2)s, %(py3)s)
}Ú
isinstanceÚlist)rS   Úpy2r   r   Úmaterial_groupÚitmÚestimated_quantityÚsettled_quantityÚdispatched_quantityÚnorm_wastage_pctÚactual_wastage_quantityÚactual_wastage_pctÚvariance_status©z%(py1)s in %(py4)srI   rK   rL   )Ú"calculate_material_variance_reportr"   r#   r$   r%   r&   r'   r(   r)   r~   r   r
   ÚSAFEÚvalueÚWARNINGÚEXCEEDEDÚNO_ESTIMATE)r   rx   r*   r-   rn   ro   rm   r+   r‚   rg   rh   ri   s               r   Ú&test_variance_report_calculation_logicr‘   ™   s‘  € à×@Ò@ÈDÐ@ÑQÔQ€FØ&Ð0Ð&¨&Ð0Ð0Ð0Ð0Õ0Ô0Ð0Ð0Ð0Ð0Ð&¨&Ð0Ñ0Ô0Õ0Ô0Ð&Ñ0Ô0Ð0Õ0Ô0Ñ0Ô0Ð0Ð0Õ0Ô0¨&Ñ0Ô0Ð0Õ0Ô0¨&Ñ0Ô0Ð0Ð0Ð0Ð0Ñ0Ð0Ð0Ð0Ð0Ð0Ñ0Ð0Õ0Õ0Ô0Ð0Ñ0Ô0Ñ0Ô0Ð0Ð0Ð0Ð0Ð0Ø'Ð1Ð'¨6Ð1Ð1Ð1Ð1Õ1Ô1Ð1Ð1Ð1Ð1Ð'¨6Ð1Ñ1Ô1Õ1Ô1Ð'Ñ1Ô1Ð1Õ1Ô1Ñ1Ô1Ð1Ð1Õ1Ô1¨6Ñ1Ô1Ð1Õ1Ô1¨6Ñ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Ø#Ð-Ð# vÐ-Ð-Ð-Ð-Õ-Ô-Ð-Ð-Ð-Ð-Ð# vÐ-Ñ-Ô-Õ-Ô-Ð#Ñ-Ô-Ð-Õ-Ô-Ñ-Ô-Ð-Ð-Õ-Ô- vÑ-Ô-Ð-Õ-Ô- vÑ-Ô-Ð-Ð-Ð-Ð-Ñ-Ð-Ð-Ð-Ð-Ð-Ñ-Ð-Õ-Õ-Ô-Ð-Ñ-Ô-Ñ-Ô-Ð-Ð-Ð-Ð-Ð-Ø Ð*Ð  FÐ*Ð*Ð*Ð*Õ*Ô*Ð*Ð*Ð*Ð*Ð  FÐ*Ñ*Ô*Õ*Ô*Ð Ñ*Ô*Ð*Õ*Ô*Ñ*Ô*Ð*Ð*Õ*Ô* FÑ*Ô*Ð*Õ*Ô* FÑ*Ô*Ð*Ð*Ð*Ð*Ñ*Ð*Ð*Ð*Ð*Ð*Ñ*Ð*Õ*Õ*Ô*Ð*Ñ*Ô*Ñ*Ô*Ð*Ð*Ð*Ð*Ð*ØÐˆ7�fÐÐÐÐÕÔÐÐÐÐˆ7�fÐÑÔÕÔˆ7ÑÔÐÕÔÑÔÐÐÕÔ�fÑÔÐÕÔ�fÑÔÐÐÐÐÑÐÐÐÐÐÑÐÕÕÔÐÑÔÑÔÐÐÐÐÐØ˜W”oÐ,�:�o¥tÑ,Ô,Ð,Ð,Ð,Ð,Ð,Õ,Ô,Ñ,Ô,Ð,Ð,Õ,Ô,�:Ñ,Ô,Ð,Õ,Ô,�:Ñ,Ô,Ð,Ð,Õ,Ô,�oÑ,Ô,Ð,Õ,Ô,Ñ,Ô,Ð,Ð,Õ,Ô,¥tÑ,Ô,Ð,Õ,Ô,¥tÑ,Ô,Ð,Ð,Õ,Ô,Ð,Ñ,Ô,Ð,Ð,Ñ,Ð,Õ,Õ,Ô,Ð,Ñ,Ô,Ñ,Ô,Ð,Ð,Ð,Ð,Ð,ð �gŒð 
ñ 
ˆØÐ&Ð 3Ð&Ð&Ð&Ð&Õ&Ô&Ð&Ð&Ð&Ð&Ð 3Ð&Ñ&Ô&Õ&Ô&ÐÑ&Ô&Ð&Õ&Ô&Ñ&Ô&Ð&Ð&Õ&Ô& 3Ñ&Ô&Ð&Õ&Ô& 3Ñ&Ô&Ð&Ð&Ð&Ð&Ñ&Ð&Ð&Ð&Ð&Ð&Ñ&Ð&Õ&Õ&Ô&Ð&Ñ&Ô&Ñ&Ô&Ð&Ð&Ð&Ð&Ð&Ø#Ð*Ð# sÐ*Ð*Ð*Ð*Õ*Ô*Ð*Ð*Ð*Ð*Ð# sÐ*Ñ*Ô*Õ*Ô*Ð#Ñ*Ô*Ð*Õ*Ô*Ñ*Ô*Ð*Ð*Õ*Ô* sÑ*Ô*Ð*Õ*Ô* sÑ*Ô*Ð*Ð*Ð*Ð*Ñ*Ð*Ð*Ð*Ð*Ð*Ñ*Ð*Õ*Õ*Ô*Ð*Ñ*Ô*Ñ*Ô*Ð*Ð*Ð*Ð*Ð*Ø!Ð(Ð! SÐ(Ð(Ð(Ð(Õ(Ô(Ð(Ð(Ð(Ð(Ð! SÐ(Ñ(Ô(Õ(Ô(Ð!Ñ(Ô(Ð(Õ(Ô(Ñ(Ô(Ð(Ð(Õ(Ô( SÑ(Ô(Ð(Õ(Ô( SÑ(Ô(Ð(Ð(Ð(Ð(Ñ(Ð(Ð(Ð(Ð(Ð(Ñ(Ð(Õ(Õ(Ô(Ð(Ñ(Ô(Ñ(Ô(Ð(Ð(Ð(Ð(Ð(Ø$Ð+Ð$¨Ð+Ð+Ð+Ð+Õ+Ô+Ð+Ð+Ð+Ð+Ð$¨Ð+Ñ+Ô+Õ+Ô+Ð$Ñ+Ô+Ð+Õ+Ô+Ñ+Ô+Ð+Ð+Õ+Ô+¨Ñ+Ô+Ð+Õ+Ô+¨Ñ+Ô+Ð+Ð+Ð+Ð+Ñ+Ð+Ð+Ð+Ð+Ð+Ñ+Ð+Õ+Õ+Ô+Ð+Ñ+Ô+Ñ+Ô+Ð+Ð+Ð+Ð+Ð+Ø!Ð(Ð! SÐ(Ð(Ð(Ð(Õ(Ô(Ð(Ð(Ð(Ð(Ð! SÐ(Ñ(Ô(Õ(Ô(Ð!Ñ(Ô(Ð(Õ(Ô(Ñ(Ô(Ð(Ð(Õ(Ô( SÑ(Ô(Ð(Õ(Ô( SÑ(Ô(Ð(Ð(Ð(Ð(Ñ(Ð(Ð(Ð(Ð(Ð(Ñ(Ð(Õ(Õ(Ô(Ð(Ñ(Ô(Ñ(Ô(Ð(Ð(Ð(Ð(Ð(Ø(Ð/Ð(¨CÐ/Ð/Ð/Ð/Õ/Ô/Ð/Ð/Ð/Ð/Ð(¨CÐ/Ñ/Ô/Õ/Ô/Ð(Ñ/Ô/Ð/Õ/Ô/Ñ/Ô/Ð/Ð/Õ/Ô/¨CÑ/Ô/Ð/Õ/Ô/¨CÑ/Ô/Ð/Ð/Ð/Ð/Ñ/Ð/Ð/Ð/Ð/Ð/Ñ/Ð/Õ/Õ/Ô/Ð/Ñ/Ô/Ñ/Ô/Ð/Ð/Ð/Ð/Ð/Ø#Ð*Ð# sÐ*Ð*Ð*Ð*Õ*Ô*Ð*Ð*Ð*Ð*Ð# sÐ*Ñ*Ô*Õ*Ô*Ð#Ñ*Ô*Ð*Õ*Ô*Ñ*Ô*Ð*Ð*Õ*Ô* sÑ*Ô*Ð*Õ*Ô* sÑ*Ô*Ð*Ð*Ð*Ð*Ñ*Ð*Ð*Ð*Ð*Ð*Ñ*Ð*Õ*Õ*Ô*Ð*Ñ*Ô*Ñ*Ô*Ð*Ð*Ð*Ð*Ð*ØÐ$Ô%ð 	
ÝÔ$Ô*ÝÔ'Ô-ÝÔ(Ô.ÝÔ+Ô1ð	*
ð 	
Ð%ð *
ð 
ð 	
ð 	
ð 	
õ 	
ì
ð	
ð 	
ð 	
ð 	
Ð%ð *
ð 	
ñ 	
ô 	
õ 	
ô
 
ð &ñ 	
ô 	
õ 	
ô
 
ð*
ñ 	
ô 	
ð 	
ð 	
ñ 	
ð 	
ð 	
ð 	
ð 	
ð 	
ñ 	
ð 	
õ 	
õ 	
ì
ð	
ñ 	
ô 	
ñ 	
ô 	
ð 	
ð 	
ð 	
ð 	
ð 	
ð 	
ð 	
ñ 	
ð
ð 
r   c                 ó   — ddl m}  ddlm} ddlm} ddlm}  | ¦   «         }|                     |¦  «         d„ |j	        |<    ||¦  «        }| 
                    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}||v }|s—t          j        d|fd||f¦  «        t          j        |¦  «        dt          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        nddœz  }dd|iz  }
t%          t          j        |
¦  «        ¦  «        ‚dx}}| 
                    d¦  «        }|j        }d}||k    }	|	sªt          j        d	|	fd
||f¦  «        dt          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        ndt          j        |¦  «        t          j        |¦  «        dœz  }
dd|
iz  }t%          t          j        |¦  «        ¦  «        ‚dx}x}	}|                     ¦   «         }|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}|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-          t/          j        ¦   «         ¦  «        dd$œ¬%¦  «        }|j        }d&}||k    }	|	sªt          j        d	|	fd
||f¦  «        d't          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        nd't          j        |¦  «        t          j        |¦  «        dœz  }
dd|
iz  }t%          t          j        |¦  «        ¦  «        ‚dx}x}	}dS )(uL   Kiá»ƒm tra há»£p Ä‘á»“ng API HTTP: GET /dispatches vÃ  GET /variance-report.r   )ÚFastAPI)Ú
TestClient)Úrouter)Úget_current_userc                 ó   — ddddœS )Nzadmin-test-idzadmin@dscons.vnÚ
superadmin)rC   ÚemailÚroler   r   r   r   ú<lambda>z.test_api_endpoints_contracts.<locals>.<lambda>½   s   € ØØ"Øð?ð ?€ r   z"/v1/erp/inventory-truth/dispatcheséÈ   r   )z3%(py2)s
{%(py2)s = %(py0)s.status_code
} == %(py5)sÚ	resp_disp)rS   r€   r   zassert %(py7)sr   NrN   ÚsuccessrH   rI   rK   rL   r}   ru   rw   Ú	data_dispry   rT   r   Útotal_countz'/v1/erp/inventory-truth/variance-reportÚresp_varrx   Údata_varrŠ   z /v1/erp/inventory-truth/dispatchr4   )Újsoni¦  Úresp_bad)Úfastapir“   Úfastapi.testclientr”   Ú9app.modules.inventory.presentation.inventory_truth_routesr•   Ú"app.modules.auth.presentation.authr–   Úinclude_routerÚdependency_overridesÚgetÚstatus_coder"   r#   r%   r&   r'   r$   r(   r)   r£   Úpostr;   r<   r=   )r“   r”   Úinventory_routerr–   Útest_appÚclientr�   rm   r+   rg   ro   r.   rŸ   r*   r-   rh   ri   rn   r¡   r¢   r¤   s                        r   Útest_api_endpoints_contractsr±   ´   sö  € àÐÐÐÐÐØ-Ð-Ð-Ð-Ð-Ð-ØdÐdÐdÐdÐdÐdØCÐCÐCÐCÐCÐCàˆw‰yŒy€HØ×ÒÐ,Ñ-Ô-Ð-ð7ð 7€HÔ!Ð"2Ñ3ð
 ˆZ˜Ñ!Ô!€Fð —
’
Ð?Ñ@Ô@€IØÔ Ð' CÐ'Ð  CÒ'Ð'Ð'Ð'Õ'Ô'Ð'Ð'Ð'Ð'Ð  CÐ'Ñ'Ô'Ð'Õ'Ô'Ñ'Ô'Ð'Ð'Õ'Ô'ˆ9Ñ'Ô'Ð'Õ'Ô'ˆ9Ñ'Ô'Ð'Ð'Õ'Ô'Ð Ñ'Ô'Õ'Ô' CÑ'Ô'Ð'Ð'Ñ'Ð'Ð'Ð'Ð'Ð'Ñ'Ð'Õ'Õ'Ô'Ð'Ñ'Ô'Ñ'Ô'Ð'Ð'Ð'Ð'Ð'Ð'Ð'Ø—’Ñ Ô €IØ�XÔÐ+ )Ð+Ð )Ò+Ð+Ð+Ð+Õ+Ô+Ð+Ð+Ð+Ð+Ð )Ð+Ñ+Ô+Õ+Ô+ÐÑ+Ô+Õ+Ô+ )Ñ+Ô+Ð+Ð+Ñ+Ð+Ð+Ð+Ð+Ð+Ñ+Ð+Õ+Õ+Ô+Ð+Ñ+Ô+Ñ+Ô+Ð+Ð+Ð+Ð+Ð+Ð+Ð+ØÐˆ7�iÐÐÐÐÕÔÐÐÐÐˆ7�iÐÑÔÕÔˆ7ÑÔÐÕÔÑÔÐÐÕÔ�iÑÔÐÕÔ�iÑÔÐÐÐÐÑÐÐÐÐÐÑÐÕÕÔÐÑÔÑÔÐÐÐÐÐØÐ%ˆ=˜IÐ%Ð%Ð%Ð%Õ%Ô%Ð%Ð%Ð%Ð%ˆ=˜IÐ%Ñ%Ô%Õ%Ô%ˆ=Ñ%Ô%Ð%Õ%Ô%Ñ%Ô%Ð%Ð%Õ%Ô%˜IÑ%Ô%Ð%Õ%Ô%˜IÑ%Ô%Ð%Ð%Ð%Ð%Ñ%Ð%Ð%Ð%Ð%Ð%Ñ%Ð%Õ%Õ%Ô%Ð%Ñ%Ô%Ñ%Ô%Ð%Ð%Ð%Ð%Ð%ð �zŠzÐCÑDÔD€HØÔÐ& 3Ð&Ð 3Ò&Ð&Ð&Ð&Õ&Ô&Ð&Ð&Ð&Ð&Ð 3Ð&Ñ&Ô&Ð&Õ&Ô&Ñ&Ô&Ð&Ð&Õ&Ô&ˆ8Ñ&Ô&Ð&Õ&Ô&ˆ8Ñ&Ô&Ð&Ð&Õ&Ô&ÐÑ&Ô&Õ&Ô& 3Ñ&Ô&Ð&Ð&Ñ&Ð&Ð&Ð&Ð&Ð&Ñ&Ð&Õ&Õ&Ô&Ð&Ñ&Ô&Ñ&Ô&Ð&Ð&Ð&Ð&Ð&Ð&Ð&Ø�}Š}‰Œ€HØ�HÔÐ* Ð*Ð Ò*Ð*Ð*Ð*Õ*Ô*Ð*Ð*Ð*Ð*Ð Ð*Ñ*Ô*Õ*Ô*ÐÑ*Ô*Õ*Ô* Ñ*Ô*Ð*Ð*Ñ*Ð*Ð*Ð*Ð*Ð*Ñ*Ð*Õ*Õ*Ô*Ð*Ñ*Ô*Ñ*Ô*Ð*Ð*Ð*Ð*Ð*Ð*Ð*ØÐˆ8�xÐÐÐÐÕÔÐÐÐÐˆ8�xÐÑÔÕÔˆ8ÑÔÐÕÔÑÔÐÐÕÔ�xÑÔÐÕÔ�xÑÔÐÐÐÐÑÐÐÐÐÐÑÐÕÕÔÐÑÔÑÔÐÐÐÐÐØÐ(�h˜xÔ(Ð(ˆ7Ð(Ð(Ð(Ð(Ð(Õ(Ô(Ð(Ð(Ð(Ð(ˆ7Ð(Ð(Ñ(Ô(Õ(Ô(ˆ7Ñ(Ô(Õ(Ô(Ð(Ñ(Ô(Ð(Ð(Ñ(Ð(Ð(Ð(Ð(Ð(Ñ(Ð(Õ(Õ(Ô(Ð(Ñ(Ô(Ñ(Ô(Ð(Ð(Ð(Ð(Ð(Ð(Ð(ð �{Š{Ø*Ý#&¥t¤z¡|¤|Ñ#4Ô#4ÈQÐOÐOð ñ ô €Hð ÔÐ& 3Ð&Ð 3Ò&Ð&Ð&Ð&Õ&Ô&Ð&Ð&Ð&Ð&Ð 3Ð&Ñ&Ô&Ð&Õ&Ô&Ñ&Ô&Ð&Ð&Õ&Ô&ˆ8Ñ&Ô&Ð&Õ&Ô&ˆ8Ñ&Ô&Ð&Ð&Õ&Ô&ÐÑ&Ô&Õ&Ô& 3Ñ&Ô&Ð&Ð&Ñ&Ð&Ð&Ð&Ð&Ð&Ñ&Ð&Õ&Õ&Ô&Ð&Ñ&Ô&Ñ&Ô&Ð&Ð&Ð&Ð&Ð&Ð&Ð&Ð&Ð&r   )Ú
__future__r   Úbuiltinsr%   Ú_pytest.assertion.rewriteÚ	assertionÚrewriter"   Údecimalr   r<   r7   Ú&app.core.postgres.base_pkg.base_clientr   Ú<app.modules.inventory.application.warehouse_dispatch_servicer   Ú.app.modules.inventory.domain.dispatch_entitiesr	   r
   Úfixturer   r   r0   r>   rA   rq   r‘   r±   r   r   r   ú<module>r¼      sK  ðØ "Ð "Ð "Ð "Ð "Ð "ðð
 € € € € € € € € € € € € Ð Ð Ð Ð Ð Ð Ø €€€Ø €€€Ø EÐ EÐ EÐ EÐ EÐ EØ aÐ aÐ aÐ aÐ aÐ aðð ð ð ð ð ð ð ð „ð ð  ñ „ð ð „ð?ð ?ñ „ð?ð?ð ?ð ?ð
ð 
ð 
ð
ð 
ð 
ðWð Wð Wðt
ð 
ð 
ð6%'ð %'ð %'ð %'ð %'r   