§
    s�’jÐ%  ã                  ót   — d dl mZ d dlZd dlZd dlmZ d dlmZ  ej        e	¦  «        Z
 G d„ d¦  «        ZdS )é    )ÚannotationsN)Údate)ÚAnyc                  ó&   — e Zd Zdd„Zdd	„Zdd„ZdS )ÚErpDocumentVersionMixinÚparent_doc_idÚstrÚpayloadúdict[str, Any]Úreturnc                ó2  — |                       |¦  «        }|st          d|› �¦  «        ‚|                     d¦  «        p|d         }|                     d¦  «        pddz   }|                     d¦  «        pd}|dk    rd	|› d
�}nd|dz
  › �}|                      ¦   «         5 }|                     ¦   «         5 }	|	                     d||f¦  «         i d|                     d¦  «        “d|                     d¦  «        p|                     d¦  «        “d|“d|“d|                     d¦  «        p|                     d¦  «        “d|                     d¦  «        p|                     d¦  «        “d|                     d¦  «        p|                     d¦  «        “d|                     d¦  «        p|                     d¦  «        “d|                     d¦  «        p|                     dd¦  «        “d|                     d¦  «        p'|                     d¦  «        pt          j        ¦   «         “d|                     d¦  «        p|                     d¦  «        “d|                     d¦  «        p|                     d¦  «        “d|                     d¦  «        p|                     d¦  «        “d|                     d¦  «        “d|                     dd¦  «        “d|                     dd¦  «        “d|                     d¦  «        p|                     d¦  «        “i d |                     d d!¦  «        “d"|                     d"d!¦  «        “d#|                     d#¦  «        p)|                     d$¦  «        p|                     d#¦  «        “d$|                     d$¦  «        p|                     d$¦  «        “d%|                     d%¦  «        p|                     d%¦  «        “d&t          |                     d&¦  «        t          t          f¦  «        r)t          j        |                     d&¦  «        pg ¦  «        n|                     d&¦  «        pd'“d(|                     d(d)¦  «        “d*|“d|“d+d,“d|“d-|                     d-¦  «        p|                     d-d¦  «        “d.|                     d.¦  «        p|                     d.¦  «        “d/|                     d/¦  «        p|                     d/¦  «        “d0|                     d0¦  «        p|                     d0d1¦  «        “d2|                     d2¦  «        pd3|› d4|                     d*d5¦  «        › �“d6t          j        |                     d6¦  «        pi ¦  «        “¥d7|                     d7d8¦  «        i¥}
d9}|	                     ||
¦  «         |	                     ¦   «         }|                     ¦   «          |cd:d:d:¦  «         cd:d:d:¦  «         S # 1 swxY w Y   	 d:d:d:¦  «         d:S # 1 swxY w Y   d:S );ul   Táº¡o phiÃªn báº£n má»›i (sá»­a Ä‘á»•i / báº£n Ä‘Ã£ kÃ½ Ä‘Ã³ng dáº¥u) cho má»™t vÄƒn báº£n Ä‘Ã£ tá»“n táº¡i.u+   KhÃ´ng tÃ¬m tháº¥y vÄƒn báº£n gá»‘c cÃ³ ID Úroot_document_idÚidÚversion_indexé   Úsignature_statusÚdraftÚfully_executedÚvz.0_Finalzv1.z¼
                    UPDATE erp_documents
                    SET is_active_version = FALSE, updated_at = NOW()
                    WHERE root_document_id = %s OR id = %s;
                Ú
company_idÚ
project_idÚparent_document_idÚdocument_codeÚdocument_titleÚdocument_groupÚdocument_typeÚcategoryÚincomingÚ
issue_dateÚissuer_nameÚsigner_nameÚ	file_pathÚfile_urlÚfile_formatÚpdfÚfile_size_bytesr   Ú	file_hashÚverification_statusÚverifiedÚstatusÚai_analysis_summaryÚsummary_contentÚai_risk_assessmentÚai_legal_referencesz[]Úis_gold_referenceFÚversion_numberÚis_active_versionTÚdocument_directionÚpartner_tax_codeÚpartner_nameÚproject_stageÚstage_01_initiationÚchange_summaryu   Báº£n cáº­p nháº­t u    thay tháº¿ cho zv1.0Údiff_analysisÚaudit_readiness_scoreéd   aç  
                    INSERT INTO erp_documents (
                        company_id, project_id, parent_document_id, root_document_id,
                        document_code, document_title, document_group, document_type, category,
                        issue_date, issuer_name, signer_name, file_path, file_url, file_format, file_size_bytes, file_hash,
                        verification_status, status, ai_analysis_summary, summary_content,
                        ai_risk_assessment, ai_legal_references, is_gold_reference,
                        version_number, version_index, is_active_version, signature_status,
                        document_direction, partner_tax_code, partner_name, project_stage,
                        change_summary, diff_analysis, audit_readiness_score
                    ) VALUES (
                        %(company_id)s, %(project_id)s, %(parent_document_id)s, %(root_document_id)s,
                        %(document_code)s, %(document_title)s, %(document_group)s, %(document_type)s, %(category)s,
                        %(issue_date)s, %(issuer_name)s, %(signer_name)s, %(file_path)s, %(file_url)s, %(file_format)s, %(file_size_bytes)s, %(file_hash)s,
                        %(verification_status)s, %(status)s, %(ai_analysis_summary)s, %(summary_content)s,
                        %(ai_risk_assessment)s, %(ai_legal_references)s::jsonb, %(is_gold_reference)s,
                        %(version_number)s, %(version_index)s, %(is_active_version)s, %(signature_status)s,
                        %(document_direction)s, %(partner_tax_code)s, %(partner_name)s, %(project_stage)s,
                        %(change_summary)s, %(diff_analysis)s::jsonb, %(audit_readiness_score)s
                    ) RETURNING *;
                N)Úget_documentÚ
ValueErrorÚgetÚget_connectionÚcursorÚexecuter   ÚtodayÚ
isinstanceÚlistÚdictÚjsonÚdumpsÚfetchoneÚcommit)Úselfr   r
   Ú
parent_docÚroot_idÚ
next_indexr   r0   ÚconnÚcurÚnew_payloadÚsqlÚrows                úGC:\Projects\DSCons\app\core\postgres\clients\document_version_client.pyÚcreate_document_versionz/ErpDocumentVersionMixin.create_document_version   s¾  € ð ×&Ò& }Ñ5Ô5ˆ
Øð 	\ÝÐZÈ=ÐZÐZÑ[Ô[Ð[à—.’.Ð!3Ñ4Ô4ÐH¸
À4Ô8HˆØ —n’n _Ñ5Ô5Ð:¸¸aÑ?ˆ
ð #Ÿ;š;Ð'9Ñ:Ô:ÐE¸gÐØÐ/Ò/Ð/Ø5 Ð5Ð5Ð5ˆNˆNà3 :°¡>Ð3Ð3ˆNà× Ò Ñ"Ô"ð e	 dØ—’‘”ð d #à—’ðð
 ˜gÐ&ñô ð ð>Ø  *§.¢.°Ñ">Ô">ð>à  '§+¢+¨lÑ";Ô";ð #4Ø!—~’~ lÑ3Ô3ð>ð )¨-ð	>ð
 '¨ð>ð $ W§[¢[°Ñ%AÔ%Að &7Ø!—~’~ oÑ6Ô6ð>ð % g§k¢kÐ2BÑ&CÔ&Cð '8Ø!—~’~Ð&6Ñ7Ô7ð>ð % g§k¢kÐ2BÑ&CÔ&Cð '8Ø!—~’~Ð&6Ñ7Ô7ð>ð $ W§[¢[°Ñ%AÔ%Að &7Ø!—~’~ oÑ6Ô6ð>ð  §¢¨JÑ 7Ô 7ð !>Ø!—~’~ j°*Ñ=Ô=ð>ð  ! '§+¢+¨lÑ";Ô";ð #$Ø!—~’~ lÑ3Ô3ð#$å”z‘|”|ð%>ð& " 7§;¢;¨}Ñ#=Ô#=ð $5Ø!—~’~ mÑ4Ô4ð)>ð* " 7§;¢;¨}Ñ#=Ô#=ð $5Ø!—~’~ mÑ4Ô4ð->ð.   §¢¨[Ñ!9Ô!9Ð!T¸W¿[º[ÈÑ=TÔ=Tð/>ð0  §¢¨JÑ 7Ô 7ð1>ð2 " 7§;¢;¨}¸eÑ#DÔ#Dð3>ð4 & w§{¢{Ð3DÀaÑ'HÔ'Hð5>ð6   §¢¨[Ñ!9Ô!9ð "3Ø!—~’~ kÑ2Ô2ð9>ð >ð: *¨7¯;ª;Ø-¨zñ,ô ,ð;>ð@ ˜gŸkšk¨(°JÑ?Ô?ðA>ðB *¨7¯;ª;Ð7LÑ+MÔ+Mð ,=Ø—{’{Ð#4Ñ5Ô5ð,=à!—~’~Ð&;Ñ<Ô<ðG>ðH & w§{¢{Ð3DÑ'EÔ'Eð (9Ø!—~’~Ð&7Ñ8Ô8ðK>ðL )¨'¯+ª+Ð6JÑ*KÔ*Kð +<Ø!—~’~Ð&:Ñ;Ô;ðO>ðP *õ " '§+¢+Ð.CÑ"DÔ"DÅtÍTÀlÑSÔSð,F­4¬:ØŸšÐ$9Ñ:Ô:Ð@¸bñ,ô ,ð ,ð "Ÿ+š+Ð&;Ñ<Ô<ÐDÀðY>ðZ (¨¯ªÐ5HÈ%Ñ)PÔ)Pð[>ð\ % nð]>ð^ $ Zð_>ð` (¨ða>ðb 'Ð(8ðc>ðd )¨'¯+ª+Ð6JÑ*KÔ*Kð +HØ!—~’~Ð&:¸JÑGÔGðg>ðh '¨¯ªÐ4FÑ(GÔ(Gð ):Ø!—~’~Ð&8Ñ9Ô9ðk>ðl # G§K¢K°Ñ$?Ô$?ð %6Ø!—~’~ nÑ5Ô5ðo>ðp $ W§[¢[°Ñ%AÔ%Að &NØ!—~’~ oÐ7LÑMÔMðs>ðt % g§k¢kÐ2BÑ&CÔ&Cð 'xØw¨^ÐwÐwÈZÏ^Ê^Ð\lÐntÑMuÔMuÐwÐwðw>ðx $¥T¤Z°·²¸OÑ0LÔ0LÐ0RÐPRÑ%SÔ%Sðy>ð >ðz ,¨W¯[ª[Ð9PÐRUÑ-VÔ-Vð{>ð >�ð@�ð* —’˜C Ñ-Ô-Ð-Ø—l’l‘n”n�Ø—’‘”�ØðIdð dð dð dñ dô dð dðe	ð e	ð e	ð e	ñ e	ô e	ð e	ð e	ðdð dð dð døøøð dð dð dð dð dðe	ð e	ð e	ñ e	ô e	ð e	ð e	ð e	ð e	ð e	ð e	ð e	øøøð e	ð e	ð e	ð e	ð e	ð e	s7   Â!XÂ6T$W3×X×3W7	×7X×:W7	×;XØXØXÚdoc_idúlist[dict[str, Any]]c                ó˜  — |                       |¦  «        }|sg S |                     d¦  «        p|d         }d}|                      ¦   «         5 }|                     ¦   «         5 }|                     |||f¦  «         |                     ¦   «         cddd¦  «         cddd¦  «         S # 1 swxY w Y   ddd¦  «         dS # 1 swxY w Y   dS )uF   Láº¥y toÃ n bá»™ lá»‹ch sá»­ cÃ¡c phiÃªn báº£n trong chÃ¹m vÄƒn báº£n.r   r   zü
            SELECT d.*, p.project_name
            FROM erp_documents d
            LEFT JOIN projects p ON d.project_id = p.id
            WHERE d.root_document_id = %s OR d.id = %s
            ORDER BY d.version_index ASC, d.created_at ASC;
        N)r;   r=   r>   r?   r@   Úfetchall)rI   rT   ÚdocrK   rP   rM   rN   s          rR   Úlist_document_versionsz.ErpDocumentVersionMixin.list_document_versions…   sd  € à×Ò Ñ'Ô'ˆØð 	ØˆIØ—'’'Ð,Ñ-Ô-Ð:°°T´ˆðˆð × Ò Ñ"Ô"ð 	" d¨D¯KªK©M¬Mð 	"¸SØ�KŠK˜˜g wÐ/Ñ0Ô0Ð0Ø—<’<‘>”>ð	"ð 	"ð 	"ð 	"ñ 	"ô 	"ð 	"ð 	"ð 	"ð 	"ð 	"ñ 	"ô 	"ð 	"ð 	"ð 	"ð 	"ð 	"ð 	"øøøð 	"ð 	"ð 	"ð 	"ð 	"ð 	"ð 	"ñ 	"ô 	"ð 	"ð 	"ð 	"ð 	"ð 	"ð 	"ð 	"øøøð 	"ð 	"ð 	"ð 	"ð 	"ð 	"s6   ÁB?Á",B'ÂB?Â'B+	Â+B?Â.B+	Â/B?Â?CÃCÚupdatesc                ó4  — |s,|                       |¦  «        }|st          d|› d�¦  «        ‚|S g }i }|                     ¦   «         D ]x\  }}|dv rOt          |t          t
          f¦  «        r3|                     |› d|› d�¦  «         t          j        |¦  «        ||<   ŒX|                     |› d|› d�¦  «         |||<   Œy||d<   dd	 	                    |¦  «        › d
�}|  
                    ¦   «         5 }	|	                     ¦   «         5 }
|
                     ||¦  «         |	                     ¦   «          |
                     ¦   «         }|st          d|› d�¦  «        ‚|cddd¦  «         cddd¦  «         S # 1 swxY w Y   ddd¦  «         dS # 1 swxY w Y   dS )u3   Cáº­p nháº­t thÃ´ng tin / tráº¡ng thÃ¡i vÄƒn báº£n.z	Document z
 not found)r.   r8   Úaudit_check_notesÚocr_validation_flagsz = %(z	)s::jsonbz)srT   z2
            UPDATE erp_documents
            SET z, zX, updated_at = NOW()
            WHERE id = %(doc_id)s
            RETURNING *;
        N)r;   r<   ÚitemsrB   rC   rD   ÚappendrE   rF   Újoinr>   r?   r@   rH   rG   )rI   rT   rZ   rX   Úset_clausesÚparamsÚkeyÚvalrP   rM   rN   rQ   s               rR   Úupdate_documentz'ErpDocumentVersionMixin.update_document—   s}  € àð 	Ø×#Ò# FÑ+Ô+ˆCØð AÝ Ð!?¨VÐ!?Ð!?Ð!?Ñ@Ô@Ð@ØˆJàˆØ!#ˆØŸš™œð 	"ð 	"‰HˆC�Øð ð ð õ
 ˜S¥4­ ,Ñ/Ô/ðð ×"Ò" cÐ#>Ð#>°Ð#>Ð#>Ð#>Ñ?Ô?Ð?Ý"œj¨™oœo��s‘�à×"Ò" cÐ#7Ð#7°Ð#7Ð#7Ð#7Ñ8Ô8Ð8Ø!��s‘�Ø!ˆˆxÑðà—’˜;Ñ'Ô'ðð ð ˆð × Ò Ñ"Ô"ð 	 d¨D¯KªK©M¬Mð 	¸SØ�KŠK˜˜VÑ$Ô$Ð$Ø�KŠK‰MŒMˆMØ—,’,‘.”.ˆCØð AÝ Ð!?¨VÐ!?Ð!?Ð!?Ñ@Ô@Ð@Øð	ð 	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	ð 	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	ð 	ð 	s7   Ã2FÄAE5ÅFÅ5E9	Å9FÅ<E9	Å=FÆFÆFN)r   r	   r
   r   r   r   )rT   r	   r   rU   )rT   r	   rZ   r   r   r   )Ú__name__Ú
__module__Ú__qualname__rS   rY   re   © ó    rR   r   r      sU   € € € € € ðwð wð wð wðr"ð "ð "ð "ð$$ð $ð $ð $ð $ð $rj   r   )Ú
__future__r   rE   ÚloggingÚdatetimer   Útypingr   Ú	getLoggerrf   Úloggerr   ri   rj   rR   ú<module>rq      s›   ðØ "Ð "Ð "Ð "Ð "Ð "à €€€Ø €€€Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð à	ˆÔ	˜8Ñ	$Ô	$€ðpð pð pð pð pñ pô pð pð pð prj   