§
    ùž’jz  ã                  óà  — d dl m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mZmZmZ  ej        d	¦  «        Z e¦   «         Z e¦   «         Ze                     d
¦  «        dddddddd ee¦  «        f	d>d„¦   «         Ze                     d¦  «        d ee¦  «        fd?d„¦   «         Ze                     d¦  «         e	dd¬ ¦  «         e	dd!¬ ¦  «         ee¦  «        fd@d&„¦   «         Ze                     d'¦  «         ee¦  «        fdAd)„¦   «         Ze                     d
¦  «         e eg d*¢¦  «        ¦  «        fdBd-„¦   «         Ze                     d.¦  «         e ed/g¦  «        ¦  «        fdCd1„¦   «         Ze                     d2¦  «         e eg d*¢¦  «        ¦  «        fdDd4„¦   «         Z e !                    d'¦  «         e eg d*¢¦  «        ¦  «        fdEd6„¦   «         Z"e                     d7¦  «        d e eg d*¢¦  «        ¦  «        fdFd9„¦   «         Z#e $                    d'¦  «         e	d:d;¬ ¦  «         e eg d*¢¦  «        ¦  «        fdGd=„¦   «         Z%dS )Hé    )ÚannotationsN)ÚAny)Ú	APIRouterÚDependsÚHTTPExceptionÚQuery)Úget_current_userÚrequire_role)ÚErpDatabaseClienté   )ÚDocumentApproveRequestÚDocumentCreateRequestÚDocumentUpdateRequestÚSignatureStatusUpdateRequestzdscons.api.erp.documents_crudz
/documentsTÚcategoryú
str | NoneÚdocument_typeÚ
project_idÚsearchÚproject_stageÚsignature_statusÚquarantine_statusÚactive_onlyÚboolÚcurrent_userúdict[str, Any]Úreturnúlist[dict[str, Any]]c	           
     óF   — t                                | |||||||¬¦  «        S )u^   Tra cá»©u vÄƒn báº£n Ä‘áº¿n, vÄƒn báº£n Ä‘i, vÄƒn báº£n ná»™i bá»™ vÃ  phÃ¡p lÃ½ cÃ´ng trÃ¬nh.)r   r   r   r   r   r   r   r   )Ú
erp_clientÚlist_documents)	r   r   r   r   r   r   r   r   r   s	            úIC:\Projects\DSCons\app\modules\core\presentation\documents_crud_routes.pyr!   r!      s9   € õ ×$Ò$ØØ#ØØØ#Ø)Ø+Øð %ñ 	ô 	ð 	ó    z/documents/audit-readinessc                ó8   — t                                | ¬¦  «        S )ue   BÃ¡o cÃ¡o cháº¥m Ä‘iá»ƒm vÃ  phÃ¢n tÃ­ch má»©c Ä‘á»™ sáºµn sÃ ng kiá»ƒm toÃ¡n/quyáº¿t toÃ¡n há»“ sÆ¡.)r   )r    Úget_audit_readiness_report)r   r   s     r"   Úget_audit_readiness_endpointr&   0   s   € õ ×0Ò0¸JÐ0ÑGÔGÐGr#   z/documents/next-numberÚCVu*   Loáº¡i vÄƒn báº£n: CV, TTr, QD, BB, TB, HD)Údescriptionu   NÄƒm quáº£n lÃ½Údoc_typeÚstrÚyearú
int | Nonec                ó:   — t                                | |¬¦  «        S )uO   Láº¥y sá»‘ thá»© tá»± vÄƒn báº£n tiáº¿p theo Ä‘Æ°á»£c cáº¥p phÃ¡t tá»± Ä‘á»™ng.)r)   r+   )r    Úget_next_document_code)r)   r+   r   s      r"   Úget_next_document_numberr/   9   s   € õ ×,Ò,°hÀTÐ,ÑJÔJÐJr#   z/documents/{doc_id}Údoc_idc                ó`   — t                                | ¦  «        }|st          dd¬¦  «        ‚|S )uI   Láº¥y chi tiáº¿t vÄƒn báº£n theo ID phá»¥c vá»¥ real-time status watcher.é”  u   KhÃ´ng tÃ¬m tháº¥y vÄƒn báº£n.©Ústatus_codeÚdetail)r    Úget_documentr   )r0   r   Údocs      r"   Úget_document_endpointr8   C   s9   € õ
 ×
!Ò
! &Ñ
)Ô
)€CØð VÝ¨Ð4TÐUÑUÔUÐUØ€Jr#   )Ú
superadminÚdirectorÚpmÚsite_engineerÚ
accountantÚreqr   c                ó¼   — 	 t                                |                      ¦   «         ¦  «        S # t          $ r#}t	          dt          |¦  «        ¬¦  «        ‚d}~ww xY w)u`   Táº¡o má»›i vÄƒn báº£n (tá»± cáº¥p sá»‘ tiáº¿p theo hoáº·c yÃªu cáº§u chÃ¨n sá»‘ chá»� duyá»‡t).é�  r3   N)r    Úcreate_documentÚ
model_dumpÚ	Exceptionr   r*   )r>   r   Úes      r"   rA   rA   N   s]   € ð<Ý×)Ò)¨#¯.ª.Ñ*:Ô*:Ñ;Ô;Ð;øÝð <ð <ð <Ý¨µC¸±F´FÐ;Ñ;Ô;Ð;øøøøð<øøøs   ‚+. ®
A¸AÁAz%/documents/{doc_id}/approve-insertionr9   r   c                óÐ   — 	 t                                | |j        |                     dd¦  «        ¬¦  «        S # t          $ r#}t          dt          |¦  «        ¬¦  «        ‚d}~ww xY w)uH   Super Admin duyá»‡t hoáº·c tá»« chá»‘i yÃªu cáº§u chÃ¨n sá»‘ vÄƒn báº£n.Úemailzunknown_admin@dscons.vn)r0   ÚapprovedÚadmin_emailr@   r3   N)r    Úapprove_document_insertionrG   ÚgetrC   r   r*   )r0   r>   r   rD   s       r"   rI   rI   \   sz   € ð<Ý×4Ò4ØØ”\Ø$×(Ò(¨Ð2KÑLÔLð 5ñ 
ô 
ð 	
øõ
 ð <ð <ð <Ý¨µC¸±F´FÐ;Ñ;Ô;Ð;øøøøð<øøøs   ‚58 ¸
A%ÁA Á A%z$/documents/{doc_id}/signature-statusr   c                óâ   — 	 |j         dk    rdn|j         dk    rdnd}t                               | |j         |dœ¦  «        S # t          $ r#}t	          dt          |¦  «        ¬¦  «        ‚d	}~ww xY w)
uL   Cáº­p nháº­t nhanh tráº¡ng thÃ¡i kÃ½ & con dáº¥u phÃ¡p lÃ½ cá»§a vÄƒn báº£n.Úfully_executedéd   Úsigned_unsigned_sealéK   é2   )r   Úaudit_readiness_scorer@   r3   N)r   r    Úupdate_documentrC   r   r*   )r0   r>   r   Úaudit_scorerD   s        r"   Ú update_signature_status_endpointrT   m   s£   € ð<ð Ô#Ð'7Ò7Ð7ð ˆCàÔ,Ð0FÒFÐF�"�"ÈBð 	õ
 ×)Ò)Øà$'Ô$8Ø)4ðð ñ
ô 
ð 	
øõ ð <ð <ð <Ý¨µC¸±F´FÐ;Ñ;Ô;Ð;øøøøð<øøøs   ‚>A Á
A.ÁA)Á)A.r   c                óÆ   — 	 |                      d¬¦  «        }t                               | |¦  «        S # t          $ r#}t	          dt          |¦  «        ¬¦  «        ‚d}~ww xY w)ub   Cáº­p nháº­t thÃ´ng tin vÄƒn báº£n thá»§ cÃ´ng (nhÃ¢n viÃªn Ä‘iá»�u chá»‰nh trÆ°á»›c khi duyá»‡t).T©Úexclude_noner@   r3   N)rB   r    rR   rC   r   r*   )r0   r>   r   ÚpayloadrD   s        r"   Úupdate_document_endpointrY   ‡   sh   € ð<Ø—.’.¨d�.Ñ3Ô3ˆÝ×)Ò)¨&°'Ñ:Ô:Ð:øÝð <ð <ð <Ý¨µC¸±F´FÐ;Ñ;Ô;Ð;øøøøð<øøøs   ‚03 ³
A ½AÁA z/documents/{doc_id}/approveúDocumentUpdateRequest | Nonec                ó¨  — 	 ddl m } |r|                     d¬¦  «        ni }d|d<   d|d<   d	|d
<   |                     d¦  «        p|                     d¦  «        pd|d<   |                     ¦   «                              ¦   «         |d<   t
                               | |¦  «        S # t          $ r#}t          dt          |¦  «        ¬¦  «        ‚d}~ww xY w)u}   PhÃª duyá»‡t káº¿t quáº£ phÃ¢n loáº¡i vÄƒn báº£n cá»§a AI, giáº£i tá»�a cÃ¡ch ly vÃ  ghi nháº­n dáº¥u váº¿t ngÆ°á»�i duyá»‡t.r   )ÚdatetimeTrV   ÚvalidÚstatusÚverifiedÚverification_statusrG   r   rF   Úuser_idu   CÃ¡n bá»™ tháº©m duyá»‡tÚverified_by_user_idÚverified_atr@   r3   N)
r\   rB   rJ   ÚnowÚ	isoformatr    rR   rC   r   r*   )r0   r>   r   r\   rX   rD   s         r"   Úapprove_document_endpointrf   —   sþ   € ð<Ø%Ð%Ð%Ð%Ð%Ð%à7:ÐB�#—.’.¨d�.Ñ3Ô3Ð3ÀˆØ#ˆ�ÑØ)3ˆÐ%Ñ&Ø'1ˆÐ#Ñ$à×Ò˜WÑ%Ô%ð *Ø×Ò 	Ñ*Ô*ð*à)ð 	Ð%Ñ&ð
 "*§¢¡¤×!9Ò!9Ñ!;Ô!;ˆ�ÑÝ×)Ò)¨&°'Ñ:Ô:Ð:øÝð <ð <ð <Ý¨µC¸±F´FÐ;Ñ;Ô;Ð;øøøøð<øøøs   ‚B!B$ Â$
CÂ.CÃCFuV   XÃ³a toÃ n bá»™ chÃ¹m phiÃªn báº£n (Root + Sub-versions) hay chá»‰ xÃ³a báº£n ghi nÃ yÚdelete_all_versionsc                óò   — 	 t                                | |¬¦  «        S # t          $ r#}t          dt	          |¦  «        ¬¦  «        ‚d}~wt
          $ r#}t          dt	          |¦  «        ¬¦  «        ‚d}~ww xY w)u<   XÃ³a vÄƒn báº£n sai hoáº·c trÃ¹ng láº·p khá»�i há»‡ thá»‘ng.)rg   r2   r3   Nr@   )r    Údelete_documentÚ
ValueErrorr   r*   rC   )r0   rg   r   ÚverD   s        r"   Údelete_document_endpointrl   ²   s“   € ð<Ý×)Ò)ØÐ(;ð *ñ 
ô 
ð 	
øõ ð =ð =ð =Ý¨µC¸±G´GÐ<Ñ<Ô<Ð<øøøøÝð <ð <ð <Ý¨µC¸±F´FÐ;Ñ;Ô;Ð;øøøøð<øøøs    ‚ ž
A6¨AÁA6ÁA1Á1A6)r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   )r   r   r   r   r   r   )r)   r*   r+   r,   r   r   r   r   )r0   r*   r   r   r   r   )r>   r   r   r   r   r   )r0   r*   r>   r   r   r   r   r   )r0   r*   r>   r   r   r   r   r   )r0   r*   r>   r   r   r   r   r   )r0   r*   r>   rZ   r   r   r   r   )r0   r*   rg   r   r   r   r   r   )&Ú
__future__r   ÚloggingÚtypingr   Úfastapir   r   r   r   Ú"app.modules.auth.presentation.authr	   r
   Úapp.core.postgres.erp_clientr   Úschemasr   r   r   r   Ú	getLoggerÚloggerÚrouterr    rJ   r!   r&   r/   r8   ÚpostrA   rI   rT   ÚputrY   rf   Údeleterl   © r#   r"   ú<module>r{      sf  ðØ "Ð "Ð "Ð "Ð "Ð "à €€€Ø Ð Ð Ð Ð Ð à <Ð <Ð <Ð <Ð <Ð <Ð <Ð <Ð <Ð <Ð <Ð <à MÐ MÐ MÐ MÐ MÐ MÐ MÐ MØ :Ð :Ð :Ð :Ð :Ð :ðð ð ð ð ð ð ð ð ð ð ð ð 
ˆÔ	Ð:Ñ	;Ô	;€Ø	ˆ‰Œ€ØÐÑ Ô €
ð ‡‚ˆLÑÔàØ $Ø!ØØ $Ø#'Ø$(ØØ#* 7Ð+;Ñ#<Ô#<ðð ð ð ñ Ôðð0 ‡‚Ð(Ñ)Ô)à!Ø#* 7Ð+;Ñ#<Ô#<ðHð Hð Hð Hñ *Ô)ðHð ‡‚Ð$Ñ%Ô%à�E˜$Ð,XÐYÑYÔYØ�u˜TÐ/@ÐAÑAÔAØ#* 7Ð+;Ñ#<Ô#<ðKð Kð Kð Kñ &Ô%ðKð ‡‚Ð!Ñ"Ô"à07°Ð8HÑ0IÔ0Iðð ð ð ñ #Ô"ðð ‡‚ˆ\ÑÔð $+ 7ØˆÐTÐTÐTÑUÔUñ$ô $ð
<ð 
<ð 
<ð 
<ñ Ôð
<ð ‡‚Ð4Ñ5Ô5ð $+ 7¨<¨<¸¸Ñ+GÔ+GÑ#HÔ#Hð<ð <ð <ð <ñ 6Ô5ð<ð  ‡‚Ð3Ñ4Ô4ð $+ 7ØˆÐTÐTÐTÑUÔUñ$ô $ð<ð <ð <ð <ñ 5Ô4ð<ð2 ‡‚Ð!Ñ"Ô"ð $+ 7ØˆÐTÐTÐTÑUÔUñ$ô $ð<ð <ð <ð <ñ #Ô"ð<ð ‡‚Ð*Ñ+Ô+ð )-Ø#* 7ØˆÐTÐTÐTÑUÔUñ$ô $ð<ð <ð <ð <ñ ,Ô+ð<ð4 ‡‚Ð$Ñ%Ô%ð !& ØØlð!ñ !ô !ð $+ 7ØˆÐTÐTÐTÑUÔUñ$ô $ð<ð <ð <ð <ñ &Ô%ð<ð <ð <r#   