§
     ’jœ  ã                  óÄ  — d Z ddlmZ ddlmZ ddlmZmZmZm	Z	m
Z
 ddlmZ ddlmZ ddlmZ ddlmZ dd	lmZmZmZmZmZ dd
lmZ ddlmZ ddlmZ ddlm Z   eddg¬¦  «        Z! e ¦   «         Z" e¦   «         Z# e¦   «         Z$ e¦   «         Z%e! &                    dee
j'         e eg d¢¦  «        ¦  «        g¬¦  «        dOd„¦   «         Z(e! )                    de*e          e eg d¢¦  «        ¦  «        g¬¦  «         e	dd¬¦  «        fdPd „¦   «         Z+e! &                    d!ee
j'         e eg d¢¦  «        ¦  «        g¬¦  «        dQd$„¦   «         Z,e! )                    d!e*e          e eg d¢¦  «        ¦  «        g¬¦  «         e	dd¬¦  «         e	dd%d&¬'¦  «        fdRd+„¦   «         Z-e! .                    d,e e eg d-¢¦  «        ¦  «        g¬¦  «         e	d.d/¬¦  «         e	dd0¬¦  «        fdSd6„¦   «         Z/e! )                    d7e e eg d8¢¦  «        ¦  «        g¬¦  «         e	dd9¬¦  «        fdTd=„¦   «         Z0e! )                    d>e e eg d?¢¦  «        ¦  «        g¬¦  «         e	dd@¬¦  «        fdUdB„¦   «         Z1e! )                    dCe e eg dD¢¦  «        ¦  «        g¬¦  «         e	dEdF¬¦  «         e	dGdH¬¦  «         e	ddI¬¦  «        fdVdN„¦   «         Z2dS )WzSFastAPI Router for Mobile Site Operations, MR, Telematics, 3-Way Matching, and IPC.é    )Úannotations)Údate)Ú	APIRouterÚDependsÚHTTPExceptionÚQueryÚstatus)Úrequire_role)ÚFuelTelematicsDashboardData)ÚIPCExport03aResponse)ÚMatchingDashboardResponse)Ú MaterialRequisitionCreateRequestÚMaterialRequisitionRecordÚMRStatusEnumÚSiteDiaryCreateRequestÚSiteDiaryRecord)ÚFuelTelematicsService)ÚIPCExporterService)ÚThreeWayMatchingService)ÚSiteOperationsServicez/v1z/Site Operations & Advanced Construction Modules)ÚprefixÚtagsz/site/diaries)Ú
superadminÚdirectorÚpmÚsite_engineer)Úresponse_modelÚstatus_codeÚdependenciesÚpayloadr   Úreturnr   c                ó6   — t                                | ¦  «        S )uW   Táº¡o nháº­t kÃ½ thi cÃ´ng hiá»‡n trÆ°á»�ng (Mobile PWA) kÃ¨m áº£nh GPS vÃ  giá»� mÃ¡y.)Úsite_serviceÚcreate_site_diary©r    s    úPC:\Projects\DSCons\app\modules\operations\presentation\site_operations_router.pyr$   r$   $   s   € õ ×)Ò)¨'Ñ2Ô2Ð2ó    )r   r   Nu   Lá»�c theo mÃ£ dá»± Ã¡n)ÚdescriptionÚproject_codeú
str | Noneúlist[SiteDiaryRecord]c                ó8   — t                                | ¬¦  «        S )u1   Danh sÃ¡ch nháº­t kÃ½ thi cÃ´ng hiá»‡n trÆ°á»�ng.©r)   )r#   Úlist_site_diariesr-   s    r&   r.   r.   1   s   € õ ×)Ò)°|Ð)ÑDÔDÐDr'   z/site/requisitionsr   r   c                ó6   — t                                | ¦  «        S )uK   Láº­p Phiáº¿u YÃªu Cáº§u Váº­t TÆ° (MR) trá»±c tiáº¿p tá»« cÃ´ng trÆ°á»�ng.)r#   Úcreate_material_requisitionr%   s    r&   r0   r0   @   s   € õ ×3Ò3°GÑ<Ô<Ð<r'   r	   u   Lá»�c theo tráº¡ng thÃ¡i)Úaliasr(   Ústatus_filterúMRStatusEnum | Noneúlist[MaterialRequisitionRecord]c                ó:   — t                                | |¬¦  «        S )u.   Danh sÃ¡ch Phiáº¿u YÃªu Cáº§u Cáº¥p Váº­t TÆ°.)r)   r	   )r#   Úlist_requisitions)r)   r2   s     r&   Úlist_material_requisitionsr7   O   s&   € õ ×)Ò)Ø!¨-ð *ñ ô ð r'   z!/site/requisitions/{mr_id}/status)r   r   r   .u   Tráº¡ng thÃ¡i má»›iu   NgÆ°á»�i phÃª duyá»‡tÚmr_idÚstrÚ
new_statusr   Úapprover_namec                ó–   — 	 t                                | ||¬¦  «        S # t          $ r t          t          j        d| › �¬¦  «        ‚w xY w)uB   PhÃª duyá»‡t hoáº·c tá»« chá»‘i Phiáº¿u YÃªu Cáº§u Váº­t TÆ° (MR).)r8   r	   r;   u   KhÃ´ng tÃ¬m tháº¥y phiáº¿u MR )r   Údetail)r#   Úupdate_mr_statusÚKeyErrorr   r	   ÚHTTP_404_NOT_FOUND)r8   r:   r;   s      r&   Úupdate_requisition_statusrA   b   sp   € ð
Ý×,Ò,Ø 
¸-ð -ñ 
ô 
ð 	
øõ ð 
ð 
ð 
ÝÝÔ1Ø;°EÐ;Ð;ð
ñ 
ô 
ð 	
ð
øøøs	   ‚ Ÿ)Az/telematics/summary)r   r   r   ÚmechanicÚ
accountantu   NgÃ y chá»‘t dá»¯ liá»‡uÚ
as_of_dateúdate | Noner   c                ó8   — t                                | ¬¦  «        S )u]   Theo dÃµi Ä‘á»‹nh má»©c tiÃªu hao xÄƒng dáº§u ca mÃ¡y vÃ  lá»‹ch báº£o dÆ°á»¡ng thiáº¿t bá»‹.©rD   )Úfuel_serviceÚget_dashboard_summaryrG   s    r&   Úget_fuel_telematics_summaryrJ   y   s   € õ ×-Ò-¸Ð-ÑDÔDÐDr'   z/matching/summary)r   r   rC   u   NgÃ y chá»‘t Ä‘á»‘i soÃ¡tr   c                ó8   — t                                | ¬¦  «        S )uu   BÃ¡o cÃ¡o Ä‘á»‘i soÃ¡t 3 chiá»�u: Ä�Æ¡n Ä‘áº·t hÃ ng (PO) âŸ· VÃ© cÃ¢n / Phiáº¿u nháº­p kho (GRN) âŸ· HÃ³a Ä‘Æ¡n VAT.rG   )Úmatch_servicerI   rG   s    r&   Úget_matching_summaryrM   Š   s   € õ ×.Ò.¸*Ð.ÑEÔEÐEr'   z/ipc/03a)r   r   r   rC   zDA-KM-BENKEM-2025-2026u   MÃ£ dá»± Ã¡n xÃ¢y dá»±ngé   u   Ä�á»£t thanh toÃ¡n sá»‘u   NgÃ y chá»‘t khá»‘i lÆ°á»£ngÚperiod_numberÚintÚcutoff_dater   c                ó<   — t                                | ||¬¦  «        S )up   Xuáº¥t Báº£ng XÃ¡c Ä�á»‹nh GiÃ¡ Trá»‹ Khá»‘i LÆ°á»£ng HoÃ n ThÃ nh (Máº«u 03a theo NÄ� 206/2026/NÄ�-CP & FIDIC).©r)   rO   rQ   )Úipc_serviceÚgenerate_ipc_03arS   s      r&   rU   rU   —   s(   € õ ×'Ò'Ø!°ÈKð (ñ ô ð r'   )r    r   r!   r   )r)   r*   r!   r+   )r    r   r!   r   )r)   r*   r2   r3   r!   r4   )r8   r9   r:   r   r;   r*   r!   r   )rD   rE   r!   r   )rD   rE   r!   r   )r)   r9   rO   rP   rQ   rE   r!   r   )3Ú__doc__Ú
__future__r   Údatetimer   Úfastapir   r   r   r   r	   Ú"app.modules.auth.presentation.authr
   Ú"app.models.fuel_telematics_schemasr   Úapp.models.ipc_export_schemasr   Úapp.models.matching_schemasr   Ú"app.models.site_operations_schemasr   r   r   r   r   Ú:app.modules.operations.application.fuel_telematics_servicer   Ú1app.modules.core.application.ipc_exporter_servicer   Ú-app.modules.core.application.matching_servicer   Ú:app.modules.operations.application.site_operations_servicer   Úrouterr#   rH   rL   rT   ÚpostÚHTTP_201_CREATEDr$   ÚgetÚlistr.   r0   r7   ÚpatchrA   rJ   rM   rU   © r'   r&   ú<module>rj      s®  ðØ YÐ Yà "Ð "Ð "Ð "Ð "Ð "à Ð Ð Ð Ð Ð à DÐ DÐ DÐ DÐ DÐ DÐ DÐ DÐ DÐ DÐ DÐ DÐ DÐ Dà ;Ð ;Ð ;Ð ;Ð ;Ð ;Ø JÐ JÐ JÐ JÐ JÐ JØ >Ð >Ð >Ð >Ð >Ð >Ø AÐ AÐ AÐ AÐ AÐ Aðð ð ð ð ð ð ð ð ð ð ð ð ð ð ]Ð \Ð \Ð \Ð \Ð \Ø PÐ PÐ PÐ PÐ PÐ PØ QÐ QÐ QÐ QÐ QÐ QØ \Ð \Ð \Ð \Ð \Ð \à	ˆØÐIÐJð
ñ 
ô 
€ð %Ð$Ñ&Ô&€Ø$Ð$Ñ&Ô&€Ø'Ð'Ñ)Ô)€Ø Ð Ñ"Ô"€ð ‡‚ØØ"ØÔ'àˆ��ÐNÐNÐNÑOÔOÑPÔPðð	 ñ ô ð3ð 3ð 3ñô ð3ð
 ‡‚ØØ˜Ô(àˆ��ÐNÐNÐNÑOÔOÑPÔPðð ñ ô ð  %˜u TÐ7PÐQÑQÔQðEð Eð Eð Eñô ðEð ‡‚ØØ,ØÔ'àˆ��ÐNÐNÐNÑOÔOÑPÔPðð	 ñ ô ð=ð =ð =ñô ð=ð ‡‚ØØÐ1Ô2àˆ��ÐNÐNÐNÑOÔOÑPÔPðð ñ ô ð  %˜u TÐ7PÐQÑQÔQØ).¨Ø�HÐ*Dð*ñ *ô *ð	ð 	ð 	ð 	ñô ð	ð ‡‚Ø'Ø,Ø�'˜,˜,Ð'GÐ'GÐ'GÑHÔHÑIÔIÐJð ñ ô ð  %˜u SÐ6KÐLÑLÔLØ %  dÐ8OÐ PÑ PÔ Pð
ð 
ð 
ð 
ñô ð

ð$ ‡‚ØØ.àˆØˆLÐSÐSÐSÑTÔTñ	
ô 	
ðð ñ ô ð $˜e DÐ6PÐQÑQÔQðEð Eð Eð Eñô ðEð ‡‚ØØ,Ø�'˜,˜,Ð'OÐ'OÐ'OÑPÔPÑQÔQÐRð ñ ô ð $˜e DÐ6QÐRÑRÔRðFð Fð Fð Fñô ð
Fð ‡‚ØØ'àˆ��ÐKÐKÐKÑLÔLÑMÔMðð ñ ô ð ˜Ø Ð.Hðñ ô ð ˜˜qÐ.GÐHÑHÔHØ$˜u TÐ7UÐVÑVÔVð
ð 
ð 
ð 
ñô ð
ð 
ð 
r'   