§
    ÔŸ’j  ã                   ó@  — d Z ddlZddlmZ ddlmZmZmZmZ ddl	m
Z
mZ ddlmZ ddlmZ  ej        d¦  «        Z ed	d
g¬¦  «        Z e¦   «         Z G d„ de
¦  «        Ze                     dd¬¦  «         e¦   «          ee¦  «        fdededeeef         fd„¦   «         Ze                     dd¬¦  «         edd¬¦  «         edd¬¦  «         edd¬¦  «         eddd¬¦  «         edd¬¦  «         ee¦  «        fd edz  d!edz  d"edz  d#ed$ededeeef         fd%„¦   «         Ze                     d&d'¬¦  «         ee¦  «        fdedeeef         fd(„¦   «         Ze                     d)d*¬¦  «         ee¦  «        fdedeeef         fd+„¦   «         ZdS ),z›FastAPI router for Invoice Item Recognition & Inventory / Equipment Truth Management.
Adheres strictly to Enterprise AEC DDD Architecture & RBAC controls.
é    N)ÚAny)Ú	APIRouterÚDependsÚHTTPExceptionÚQuery)Ú	BaseModelÚField)Úget_current_user)ÚInvoiceTruthExtractionServicezdscons.api.inventory_truthz/v1/erp/inventory-truthz,ERP - Inventory & Equipment Truth Extraction)ÚprefixÚtagsc                   óH   — e Zd ZU dZedz  ed<    edd¬¦  «        Zeed<   dS )ÚExtractTruthRequestNÚ
company_idTuD   XÃ³a cÃ¡c thiáº¿t bá»‹ nhÃ¡p cÅ© khÃ´ng rÃµ nguá»“n gá»‘c hÃ³a Ä‘Æ¡n)ÚdefaultÚdescriptionÚpurge_drafts)	Ú__name__Ú
__module__Ú__qualname__r   ÚstrÚ__annotations__r	   r   Úbool© ó    ú<C:\Projects\DSCons\app\api\routers\inventory_truth_routes.pyr   r      sW   € € € € € € Ø!€J��d‘
Ð!Ð!Ñ!Ø˜ØÐ"hðñ ô €L�$ð ð ñ ð ð r   r   z/extract-from-invoicesu@   QuÃ©t & TrÃ­ch xuáº¥t Dá»¯ liá»‡u Truth tá»« HÃ³a Ä�Æ¡n Mua VÃ o)ÚsummaryÚreqÚcurrent_userÚreturnc              ƒ   óâ   K  — 	 t                                | j        | j        ¬¦  «        }|S # t          $ r8}t
                               d|› �d¬¦  «         t          dd|›�¬¦  «        ‚d}~ww xY w)	uÂ  Tá»± Ä‘á»™ng nháº­n diá»‡n ná»™i dung hÃ ng hÃ³a tá»« hÃ³a Ä‘Æ¡n mua vÃ o:
    - MÃ¡y mÃ³c thiáº¿t bá»‹ (Ä�VT: Chiáº¿c/CÃ¡i/Bá»™) -> Nháº­p vÃ o Danh má»¥c Thiáº¿t bá»‹ Sá»Ÿ há»¯u (erp_equipment).
    - ThuÃª ca mÃ¡y (Ä�VT: Ca/Giá»�/NgÃ y) -> Ghi nháº­n chi phÃ­ thuÃª ca mÃ¡y, khÃ´ng thÃªm tÃ i sáº£n.
    - HÃ ng hÃ³a váº­t tÆ° khÃ¡c (ThÃ©p, Xi mÄƒng, BÃª tÃ´ng, CÃ¡t Ä‘Ã¡, XÄƒng dáº§u...) -> Nháº­p kho chá»� xuáº¥t (erp_warehouse_inventory).
    )r   r   z&Error extracting truth from invoices: T©Úexc_infoéô  u+   Lá»—i khi trÃ­ch xuáº¥t dá»¯ liá»‡u Truth: ©Ústatus_codeÚdetailN)ÚserviceÚextract_and_sync_all_truthr   r   Ú	ExceptionÚloggerÚerrorr   )r   r   ÚresÚes       r   Úextract_truth_from_invoicesr/      sš   è è € ð	
Ý×0Ò0Ø”~°CÔ4Dð 1ñ 
ô 
ˆð ˆ
øÝð 
ð 
ð 
Ý�ŠÐA¸aÐAÐAÈDˆÑQÔQÐQÝØÐ$WÐRSÐ$WÐ$Wð
ñ 
ô 
ð 	
øøøøð
øøøs   „', ¬
A.¶3A)Á)A.z
/warehouseu>   Danh SÃ¡ch Kho Váº­t TÆ° Nháº­p Tá»« HÃ³a Ä�Æ¡n (Chá»� Xuáº¥t)u‚   Lá»�c theo nhÃ³m váº­t tÆ°: STEEL, CEMENT, AGGREGATE, CONCRETE, BRICK, PIPES_FITTINGS, FINISHING_PAINT, FUEL_OIL, SAFETY_EQUIPMENT)r   uI   Tráº¡ng thÃ¡i tá»“n kho: CHá»œ_XUáº¤T_CÃ”NG_TRÆ¯á»œNG, Ä�Ãƒ_NHáº¬P_KHO...u?   TÃ¬m theo tÃªn váº­t tÆ°, mÃ£ hiá»‡u, nhÃ  cung cáº¥p, sá»‘ HÄ�é2   é   r$   )ÚgeÚle)r2   Úmaterial_groupÚstatusÚsearchÚlimitÚoffsetc              ƒ   óæ   K  — 	 t                                | ||||¬¦  «        \  }}d||||dœS # t          $ r8}t                               d|› �d¬¦  «         t          dd|›�¬	¦  «        ‚d
}~ww xY w)u]   Láº¥y danh sÃ¡ch váº­t tÆ° nháº­p kho Ä‘ang chá»� xuáº¥t / xá»­ lÃ½ tá»« hÃ³a Ä‘Æ¡n mua vÃ o.)r4   r5   r6   r7   r8   Úsuccess)r5   ÚitemsÚtotal_countr7   r8   z#Error listing warehouse inventory: Tr"   r$   u*   Lá»—i khi táº£i danh sÃ¡ch kho váº­t tÆ°: r%   N)r(   Úlist_warehouse_inventoryr*   r+   r,   r   )	r4   r5   r6   r7   r8   r   r;   r<   r.   s	            r   Úget_warehouse_inventoryr>   7   s¿   è è € ð"
Ý$×=Ò=Ø)ØØØØð >ñ 
ô 
Ñˆˆ{ð  ØØ&ØØð
ð 
ð 	
øõ ð 
ð 
ð 
Ý�ŠÐ>¸1Ð>Ð>ÈˆÑNÔNÐNÝØÐ$VÐQRÐ$VÐ$Vð
ñ 
ô 
ð 	
øøøøð
øøøs   „). ®
A0¸3A+Á+A0z/equipment-truthu@   Danh SÃ¡ch Thiáº¿t Bá»‹ Sá»Ÿ Há»¯u TrÃ­ch Xuáº¥t Tá»« HÃ³a Ä�Æ¡nc              ƒ   óê   K  — 	 t                                ¦   «         }d|t          |¦  «        dœS # t          $ r8}t                               d|› �d¬¦  «         t          dd|›�¬¦  «        ‚d	}~ww xY w)
ud   Láº¥y danh sÃ¡ch mÃ¡y mÃ³c, xe mÃ¡y cÃ´ng trÃ¬nh sá»Ÿ há»¯u thá»±c táº¿ cÃ³ chá»©ng tá»« hÃ³a Ä‘Æ¡n.r:   )r5   Ú	equipmentr<   z Error fetching truth equipment: Tr"   r$   u4   Lá»—i khi táº£i danh má»¥c thiáº¿t bá»‹ sá»Ÿ há»¯u: r%   N)r(   Úlist_truth_equipmentÚlenr*   r+   r,   r   )r   r@   r.   s      r   Úget_truth_equipmentrC   ^   s    è è € ð
Ý×0Ò0Ñ2Ô2ˆ	àØ"Ý˜y™>œ>ð
ð 
ð 	
øõ
 ð 
ð 
ð 
Ý�ŠÐ;¸Ð;Ð;ÀdˆÑKÔKÐKÝØÐ$`Ð[\Ð$`Ð$`ð
ñ 
ô 
ð 	
øøøøð
øøøs   „+0 °
A2º3A-Á-A2z/summaryu9   Tá»•ng Há»£p Thá»‘ng KÃª TÃ i Sáº£n & Kho Váº­t TÆ° Truthc              ƒ   óÎ   K  — 	 t                                ¦   «         }d|dœS # t          $ r8}t                               d|› �d¬¦  «         t          dd|›�¬¦  «        ‚d	}~ww xY w)
uj   Thá»‘ng kÃª tá»•ng há»£p sá»‘ lÆ°á»£ng thiáº¿t bá»‹ sá»Ÿ há»¯u, giÃ¡ trá»‹ tá»“n kho theo nhÃ³m váº­t tÆ°.r:   )r5   r   zError fetching truth summary: Tr"   r$   u7   Lá»—i khi tá»•ng há»£p thá»‘ng kÃª kho & thiáº¿t bá»‹: r%   N)r(   Úget_truth_summaryr*   r+   r,   r   )r   r   r.   s      r   Úget_inventory_truth_summaryrF   s   sŽ   è è € ð

Ý×+Ò+Ñ-Ô-ˆØ#°Ð8Ð8Ð8øÝð 
ð 
ð 
Ý�ŠÐ9°aÐ9Ð9ÀDˆÑIÔIÐIÝØÐ$cÐ^_Ð$cÐ$cð
ñ 
ô 
ð 	
øøøøð
øøøs   „" ¢
A$¬3AÁA$)Ú__doc__ÚloggingÚtypingr   Úfastapir   r   r   r   Úpydanticr   r	   Úapp.api.routers.authr
   Ú-app.services.invoice_truth_extraction_servicer   Ú	getLoggerr+   Úrouterr(   r   ÚpostÚdictr   r/   ÚgetÚintr>   rC   rF   r   r   r   ú<module>rT      sa  ððð ð €€€Ø Ð Ð Ð Ð Ð à <Ð <Ð <Ð <Ð <Ð <Ð <Ð <Ð <Ð <Ð <Ð <Ø %Ð %Ð %Ð %Ð %Ð %Ð %Ð %à 1Ð 1Ð 1Ð 1Ð 1Ð 1Ø WÐ WÐ WÐ WÐ WÐ Wà	ˆÔ	Ð7Ñ	8Ô	8€à	ˆØ$Ø
8Ð	9ð
ñ 
ô 
€ð (Ð
'Ñ
)Ô
)€ðð ð ð ð ˜)ñ ô ð ð ‡‚ØØNð ñ ô ð
  3Ð2Ñ4Ô4Ø ˜Ð!1Ñ2Ô2ð
ð 
Ø	ð
àð
ð 
ˆ#ˆsˆ(„^ð
ð 
ð 
ñ	ô ð
ð* ‡‚ˆLÐ"b€ÑcÔcà!& Øð Yð"ñ "ô "ð ˜ØÐeðñ ô ð ˜ØÐ[ðñ ô ð ��r˜a CÐ(Ñ(Ô(Ø�%˜˜a�.‘.”.Ø ˜Ð!1Ñ2Ô2ð#
ð #
Ø˜$‘Jð#
ð
 �$‰Jð#
ð �$‰Jð#
ð ð#
ð ð#
ð ð#
ð 
ˆ#ˆsˆ(„^ð#
ð #
ð #
ñ dÔcð#
ðL ‡‚ØÐ bð ñ ô ð !˜Ð!1Ñ2Ô2ð
ð 
Øð
à	ˆ#ˆsˆ(„^ð
ð 
ð 
ñô ð
ð$ ‡‚ˆJÐ [€Ñ\Ô\à ˜Ð!1Ñ2Ô2ð
ð 
Øð
à	ˆ#ˆsˆ(„^ð
ð 
ð 
ñ ]Ô\ð
ð 
ð 
r   