§
    9ç™jZ‚  ã                  óÐ   — d Z ddlmZ ddlZddlZddlmZmZ ddlmZm	Z	 ddl
mZ ddlZddlmZmZmZmZmZ ddlmZ dd	lmZ  ej        e¦  «        Zdd„Z G d„ d¦  «        ZdS )u,  Treasury Settlement Service (Há»“ sÆ¡ Thanh toÃ¡n Kho báº¡c NhÃ  nÆ°á»›c Máº«u 03.a/TT & Máº«u 03.c/TT).
COMPLIANT WITH: Nghá»‹ Ä‘á»‹nh sá»‘ 254/2025/NÄ�-CP ngÃ y 26/9/2025 cá»§a ChÃ­nh phá»§ (thay tháº¿ Nghá»‹ Ä‘á»‹nh 99/2021/NÄ�-CP).
Strict Zero-Tolerance Synthetic Data & Decimal(18,4) COMPLIANT.
é    )ÚannotationsN)ÚdateÚdatetime)ÚDecimalÚROUND_HALF_UP)ÚAny)ÚFontÚ	AlignmentÚPatternFillÚBorderÚSide)Úget_column_letter)ÚProjectCrudRepositoryÚnumberúint | float | DecimalÚreturnÚstrc                óf  ‡— t          t          t          | ¦  «        ¦  «        ¦  «        }|dk    rdS g d¢Šddˆfd„}g d¢}g }d}|}|dk    r2|dz  }|dk    r|                     ||f¦  «         |dz  }|dz  }|dk    °2g }t	          t          |¦  «        ¦  «        D ]E\  }	\  }
}|	dk    } ||
|¦  «        }||         r|d||         z   z  }|                     |¦  «         ŒFd                     |¦  «                             ¦   «         }|d                              ¦   «         |dd…         z   dz   S )uh   Chuyá»ƒn Ä‘á»•i sá»‘ tiá»�n thÃ nh chá»¯ Tiáº¿ng Viá»‡t chuáº©n xÃ¡c cho há»“ sÆ¡ thanh toÃ¡n Kho báº¡c.r   u   KhÃ´ng Ä‘á»“ng)
u   khÃ´ngu   má»™tÚhaiÚbau   bá»‘nu   nÄƒmu   sÃ¡uu   báº£yu   tÃ¡mu   chÃ­nFÚnÚintÚ
is_highestÚboolr   r   c                óØ  •— | dz  }| dz  dz  }| dz  }g }|dk    s|s|                      ‰|         dz   ¦  «         |dk    rx|                      ‰|         dz   ¦  «         |dk    r|                      d¦  «         nÛ|dk    r|                      d	¦  «         n¿|dk    r|                      ‰|         ¦  «         n�|dk    rS|                      d
¦  «         |dk    r|                      d	¦  «         nf|dk    r|                      ‰|         ¦  «         nD|dk    r>|dk    r8|r|dk    r|                      d¦  «         |                      ‰|         ¦  «         d                     |¦  «        S )Néd   é
   r   u    trÄƒmé   u    mÆ°Æ¡iu   má»‘té   u   lÄƒmu   mÆ°á»�iu   láº»ú )ÚappendÚjoin)r   r   ÚhÚtÚuÚresÚdigitss         €úQC:\Projects\DSCons\app\modules\dossier\application\treasury_settlement_service.pyÚread_three_digitsz/vi_currency_to_words.<locals>.read_three_digits   s�  ø€ Ø�‰HˆØ�‰W˜‰OˆØ�‰FˆØˆØˆqŠ5ˆ5˜
ˆ5Ø�JŠJ�v˜a”y 8Ñ+Ñ,Ô,Ð,àˆqŠ5ˆ5Ø�JŠJ�v˜a”y 9Ñ,Ñ-Ô-Ð-Ø�AŠvˆvØ—
’
˜7Ñ#Ô#Ð#Ð#Ø�a’�Ø—
’
˜6Ñ"Ô"Ð"Ð"Ø�Q’�Ø—
’
˜6 !œ9Ñ%Ô%Ð%øØ�!ŠVˆVØ�JŠJ�yÑ!Ô!Ð!Ø�AŠvˆvØ—
’
˜6Ñ"Ô"Ð"Ð"Ø�Q’�Ø—
’
˜6 !œ9Ñ%Ô%Ð%øØ�!ŠVˆV˜˜Aš˜Øð #  Q¢ Ø—
’
˜6Ñ"Ô"Ð"Ø�JŠJ�v˜a”yÑ!Ô!Ð!Ø�xŠx˜‰}Œ}Ðó    )Ú u   nghÃ¬nu   triá»‡uu   tá»·u   nghÃ¬n tá»·u   triá»‡u tá»·iè  r   r    Nu    Ä‘á»“ng cháºµn.)F)r   r   r   r   r   r   )	r   ÚroundÚfloatr!   Ú	enumerateÚreversedr"   ÚstripÚupper)r   Únumr)   ÚunitsÚpartsÚunit_idxÚtempÚ	remainderÚwordsÚidxÚvalÚu_idxÚis_firstÚpart_strr&   r'   s                  @r(   Úvi_currency_to_wordsr>      sƒ  ø€ å
�e•E˜&‘M”MÑ"Ô"Ñ
#Ô
#€CØ
ˆa‚x€xØÐà`Ð`Ð`€Fðð ð ð ð ð ð ð8 MÐLÐL€EØ€EØ€HØ€DØ
�Š(ˆ(Ø˜4‘Kˆ	Ø�qŠ=ˆ=Ø�LŠL˜) XÐ.Ñ/Ô/Ð/Ø�‰ˆØ�A‰ˆð �Š(ˆ(ð €EÝ&¥x°¡¤Ñ7Ô7ð ð Ñˆ‰\ˆc�5Ø˜1’HˆØ$Ð$ S¨(Ñ3Ô3ˆØ�Œ<ð 	+Ø˜˜e EœlÑ*Ñ*ˆHØ�Š�XÑÔÐÐà
�(Š(�5‰/Œ/×
Ò
Ñ
!Ô
!€CØˆqŒ6�<Š<‰>Œ>˜C   œGÑ#Ð&8Ñ8Ð8r*   c                  óp   — e Zd ZdZddd„Zdd	 ed
¦  «        fdd„Zddd„Zdd d„Zdd!d„Z	dd"d„Z
dd#d„ZdS )$ÚTreasurySettlementServiceut   Dá»‹ch vá»¥ xuáº¥t Há»“ sÆ¡ thanh toÃ¡n Kho báº¡c Máº«u 03.a/TT & Máº«u 03.c/TT theo Nghá»‹ Ä‘á»‹nh 254/2025/NÄ�-CP.NÚrepoúProjectCrudRepository | Noner   ÚNonec                ó0   — |pt          ¦   «         | _        d S ©N)r   rA   )ÚselfrA   s     r(   Ú__init__z"TreasurySettlementService.__init__U   s   € ØÐ3Õ1Ñ3Ô3ˆŒ	ˆ	ˆ	r*   r   Ú03az20.0Úproject_id_or_coder   Ústage_numberr   Ú	form_typeÚadvance_recovery_pctr   údict[str, Any]c                ó  — | j                              ¦   «         5 }|                     ¦   «         5 }|                     d||f¦  «         |                     ¦   «         }|st          d|› �¦  «        ‚t          |d         ¦  «        }|d         }	|d         }
t          t          |d         pd¦  «        ¦  «        }|d         pd	}|d
         pd}|d         pd|	› d�}|d         pt          ddd¦  «        }|                     d|f¦  «         | 	                    ¦   «         }|s=|d|
ddt          d¦  «        |||dk    rt          d¦  «        nt          d¦  «        ddœ
g}| 
                    ¦   «         dv }g }t          d¦  «        }t          d¦  «        }t          d¦  «        }t          d¦  «        }|�r³d}d}t          d¦  «        }t          |¦  «        D �]m\  }}t          t          |d         pd¦  «        ¦  «        }t          t          |d          pd¦  «        ¦  «        }t          t          |d!         p||z  ¦  «        ¦  «        }t          ||z  d"¦  «        }|dk    r|dk    rt          d#¦  «        }t          ||z  ¦  «        } ||z  }|| z  }|| z  }|                     t          |dz   ¦  «        |d$         d%|d&         › �|d'         pd(t          |¦  «        t          |¦  «        t          |¦  «        d)t          |¦  «        t          |¦  «        d)t          | ¦  «        t          | ¦  «        d*|› �d+œ¦  «         �Œot          d¦  «        }!t          d¦  «        }"|}#�nŸd,}d-}|dk    rt          d.¦  «        }$t          d/¦  «        }%nC|d"k    rt          d0¦  «        }$t          d.¦  «        }%nt          d1¦  «        }$t          d2¦  «        }%t          |¦  «        D �]™\  }}t          t          |d         pd¦  «        ¦  «        }t          t          |d          pd¦  «        ¦  «        }t          t          |d!         p||z  ¦  «        ¦  «        }||z  }t          ||%z  d"¦  «        }&t          ||$z  d"¦  «        }'|&|'z   }(t          |&|z  ¦  «        })t          |'|z  ¦  «        }*|)|*z   }+||)z  }||*z  }||+z  }|                     t          |dz   ¦  «        |d$         |d&         |d'         pd(t          |¦  «        t          |¦  «        t          |¦  «        t          |&¦  «        t          |'¦  «        t          |(¦  «        t          |)¦  «        t          |*¦  «        t          |+¦  «        d3œ¦  «         �Œ›t          d4¦  «        },t          ||,z  ¦  «        }-t          ||z  t          d5¦  «        z  ¦  «        }!|!|-k    r|-}!|d6k    rt          d7¦  «        nt          d/¦  «        }.t          ||.z  ¦  «        }"||!z
  |"z
  }#t          |#¦  «        }/i d8|“d9|“d:|rd;nd<“d=d>“d?|“d@dA|› dBt!          j        ¦   «                              dC¦  «        › dD�“d|	“d|
“d|“dt'          |t          t           f¦  «        r|                     dE¦  «        nt          |¦  «        “d|“dFdG“dHdI“dJdK“d
|“dLdM“dNdO“|t          |¦  «        t          |¦  «        t          |¦  «        t          |¦  «        t          |¦  «        t          |s|-nd¦  «        t          |!¦  «        t          |"¦  «        t          |#¦  «        |/dPœ
dQdRdS|dTœdUœcdVdVdV¦  «         cdVdVdV¦  «         S # 1 swxY w Y   dVdVdV¦  «         dVS # 1 swxY w Y   dVS )Wut   TrÃ­ch xuáº¥t vÃ  tÃ­nh toÃ¡n dá»¯ liá»‡u Máº«u 03.a/TT hoáº·c Máº«u 03.c/TT chuáº©n Nghá»‹ Ä‘á»‹nh 254/2025/NÄ�-CP.a/  
                SELECT id, project_code, project_name, contract_value, budget_amount,
                       client_name, location, contract_number, contract_signing_date,
                       status
                FROM projects
                WHERE id::text = %s OR project_code = %s;
            u   KhÃ´ng tÃ¬m tháº¥y dá»± Ã¡n: ÚidÚproject_codeÚproject_nameÚcontract_valuer   Úclient_nameu&   Ban Quáº£n lÃ½ Dá»± Ã¡n & UBND Huyá»‡nÚlocationu   Háº£i PhÃ²ngÚcontract_numberu   HÄ�-z
/2026/TCXDÚcontract_signing_dateiê  r   é   a(  
                SELECT id, wbs_code, task_name, task_type, unit, quantity,
                       unit_price_vnd, total_amount_vnd, progress_percent, sort_order
                FROM erp_project_wbs
                WHERE project_id = %s
                ORDER BY sort_order, wbs_code;
            z1.0Útasku   gÃ³iz100.0z50.0)
rO   Úwbs_codeÚ	task_nameÚ	task_typeÚunitÚquantityÚunit_price_vndÚtotal_amount_vndÚprogress_percentÚ
sort_order)Ú03cÚ3cÚ	variationÚ0u   Báº¢NG XÃ�C Ä�á»ŠNH GIÃ� TRá»Š KHá»�I LÆ¯á»¢NG CÃ”NG VIá»†C PHÃ�T SINH NGOÃ€I Há»¢P Ä�á»’NG BAN Ä�áº¦U Ä�á»€ NGHá»Š THANH TOÃ�Nue   Máº«u sá»‘ 03.c/TT (KÃ¨m theo Nghá»‹ Ä‘á»‹nh sá»‘ 254/2025/NÄ�-CP ngÃ y 26/9/2025 cá»§a ChÃ­nh phá»§)z0.065r]   r^   r_   é   z1.00rY   u   [PhÃ¡t sinh ngoÃ i HÄ�] rZ   r\   u   cÃ´ng viá»‡cg        u   PLHÄ�-01/2026 ngÃ y )ÚsttrY   rZ   r\   Úcontract_qtyÚ
unit_priceÚcontract_amountÚprev_qtyÚcurr_qtyÚ	total_qtyÚprev_amountÚcurr_amountÚtotal_amountÚappendix_refut   Báº¢NG XÃ�C Ä�á»ŠNH GIÃ� TRá»Š KHá»�I LÆ¯á»¢NG CÃ”NG VIá»†C HOÃ€N THÃ€NH THEO Há»¢P Ä�á»’NG Ä�á»€ NGHá»Š THANH TOÃ�Nue   Máº«u sá»‘ 03.a/TT (KÃ¨m theo Nghá»‹ Ä‘á»‹nh sá»‘ 254/2025/NÄ�-CP ngÃ y 26/9/2025 cá»§a ChÃ­nh phá»§)z0.50z0.00z0.35z0.15z0.85)rg   rY   rZ   r\   rh   ri   rj   rk   rl   rm   rn   ro   rp   z0.20Ú100é   z0.05Údoc_nameÚ	form_coderK   rb   rH   Ú
decree_refuF   Nghá»‹ Ä‘á»‹nh sá»‘ 254/2025/NÄ�-CP ngÃ y 26/9/2025 cá»§a ChÃ­nh phá»§rJ   Ú
stage_textu   Ä�á»£t z (z%m/%Yú)z%d/%m/%YÚcontractor_nameõ&   CÃ”NG TY TNHH XÃ‚Y Dá»°NG Ä�á»ŠNH SÆ NÚcontractor_tax_codeÚ
0202111150Úcontractor_addressu2   ThÃ´n Kim SÆ¡n, XÃ£ Kiáº¿n HÆ°ng, TP. Háº£i PhÃ²ngÚtreasury_nameu=   Kho báº¡c NhÃ  nÆ°á»›c Khu vá»±c Kiáº¿n Thá»¥y - Háº£i PhÃ²ngÚbank_accountu;   118002938888 táº¡i NgÃ¢n hÃ ng VietinBank - CN Háº£i PhÃ²ng)
rR   Úsum_contract_itemsÚprev_completed_valueÚcurr_completed_valueÚtotal_completed_valueÚadvance_amountÚadvance_recoveryÚretention_amountÚnet_paymentÚnet_payment_in_wordsu   Nguyá»…n SÄ© SÆ¡nu   Pháº¡m VÄƒn TÃ¹ngu   Ä�Æ¡n vá»‹ TÆ° váº¥n GiÃ¡m sÃ¡t)ÚdirectorÚchief_engineerÚconsultant_supervisorÚinvestor_rep)ÚheaderÚitemsÚfinancial_summaryÚsignatoriesN)rA   Úget_connectionÚcursorÚexecuteÚfetchoneÚ
ValueErrorr   r   r   ÚfetchallÚlowerr.   r,   r!   r-   r>   r   ÚnowÚstrftimeÚ
isinstance)0rF   rI   rJ   rK   rL   ÚconnÚcurÚprojÚp_idÚp_codeÚp_nameÚcontract_valrS   rT   Úcontract_noÚ	sign_dateÚwbs_rowsÚis_variation_03crŽ   Úsum_contractÚsum_prev_valÚsum_curr_valÚsum_total_valÚ	doc_titleru   Úvariation_ratior9   ÚrÚqty_hdÚpriceÚamt_hdÚq_varÚamt_varr…   r†   r‡   Ú
curr_ratioÚ
prev_ratioÚq_prevÚq_currÚq_totalÚv_prevÚv_currÚv_totalÚadvance_rater„   Úretention_rater8   s0                                                   r(   Úget_treasury_dataz+TreasurySettlementService.get_treasury_dataX   sV	  € ð ŒY×%Ò%Ñ'Ô'ð A	¨4°·²±´ð A	À#à�KŠKð ð %Ð&8Ð9ñ;ô ;ð ;ð —<’<‘>”>ˆDØð WÝ Ð!UÐASÐ!UÐ!UÑVÔVÐVå�t˜D”z‘?”?ˆDØ˜.Ô)ˆFØ˜.Ô)ˆFÝ"¥3 tÐ,<Ô'=Ð'BÀÑ#CÔ#CÑDÔDˆLØ˜}Ô-ÐYÐ1YˆKØ˜JÔ'Ð9¨>ˆHØÐ0Ô1ÐNÐ5N¸FÐ5NÐ5NÐ5NˆKØÐ4Ô5ÐJ½¸dÀAÀrÑ9JÔ9JˆIð �KŠKð ð �ñô ð ð —|’|‘~”~ˆHàð àØ %Ø!'Ø!'Ø"Ý '¨¡¤Ø&2Ø(4Ø<HÈAÒ<MÐ<M­°Ñ(8Ô(8Ð(8ÕSZÐ[aÑSbÔSbØ"#ðð ð �ð !*§¢Ñ 1Ô 1Ð5OÐ OÐàˆEÝ" 3™<œ<ˆLÝ" 3™<œ<ˆLÝ" 3™<œ<ˆLÝ# C™LœLˆMàñ _Qð ^�	ð D�	Ý")¨'Ñ"2Ô"2�Ý'¨Ñ1Ô1ð ñ ‘F�C˜Ý$¥S¨¨:¬Ð);¸!Ñ%<Ô%<Ñ=Ô=�FÝ#¥C¨Ð*:Ô(;Ð(@¸qÑ$AÔ$AÑBÔB�EÝ$¥S¨Ð+=Ô)>Ð)RÀ6ÈEÁ>Ñ%SÔ%SÑTÔT�Få! &¨?Ñ":¸AÑ>Ô>�EØ ’z�z f¨q¢j jÝ '¨¡¤˜Ý# E¨E¡MÑ2Ô2�Gà  FÑ*�LØ  GÑ+�LØ! WÑ,�Mà—L’LÝ" 3¨¡7™|œ|Ø$% j¤MØ%PÀÀ+ÄÐ%PÐ%PØ ! &¤	Ð ;¨^Ý(-¨f©¬Ý&+¨E¡l¤lÝ+0°©=¬=Ø$'Ý$)¨%¡L¤LÝ%*¨5¡\¤\Ø'*Ý',¨W¡~¤~Ý(-¨g©¬Ø(J¸yÐ(JÐ(Jð"ð "ñ ô ð ñ õ  $+¨3¡<¤<Ð Ý#*¨3¡<¤<Ð Ø*�‘ð S�	ð D�	à 1Ò$Ð$Ý!(¨¡¤�JÝ!(¨¡¤�J�JØ! QÒ&Ð&Ý!(¨¡¤�JÝ!(¨¡¤�J�Jå!(¨¡¤�JÝ!(¨¡¤�Jå'¨Ñ1Ô1ð  ñ  ‘F�C˜Ý$¥S¨¨:¬Ð);¸!Ñ%<Ô%<Ñ=Ô=�FÝ#¥C¨Ð*:Ô(;Ð(@¸qÑ$AÔ$AÑBÔB�EÝ$¥S¨Ð+=Ô)>Ð)RÀ6ÈEÁ>Ñ%SÔ%SÑTÔT�FØ  FÑ*�Lå" 6¨JÑ#6¸Ñ:Ô:�FÝ" 6¨JÑ#6¸Ñ:Ô:�FØ$ v™o�Gå" 6¨E¡>Ñ2Ô2�FÝ" 6¨E¡>Ñ2Ô2�FØ$ v™o�Gà  FÑ*�LØ  FÑ*�LØ! WÑ,�Mà—L’LÝ" 3¨¡7™|œ|Ø$% j¤MØ%& {¤^Ø ! &¤	Ð ;¨^Ý(-¨f©¬Ý&+¨E¡l¤lÝ+0°©=¬=Ý$)¨&¡M¤MÝ$)¨&¡M¤MÝ%*¨7¡^¤^Ý',¨V¡}¤}Ý',¨V¡}¤}Ý(-¨g©¬ð"ð "ñ ô ð ñ õ   ' v™œ�Ý!& |°lÑ'BÑ!CÔ!C�Ý#(¨Ð8LÑ)LÍwÐW\É~Ì~Ñ)]Ñ#^Ô#^Ð Ø# nÒ4Ð4Ø'5Ð$à4@ÀAÒ4EÐ4E¥¨¡¤ Í7ÐSYÉ?Ì?�Ý#(¨¸Ñ)FÑ#GÔ#GÐ Ø*Ð-=Ñ=Ð@PÑP�å(¨Ñ5Ô5ˆEðØ 	ðà ðð  Ð*:Ð!E  Àðð !Ð"jð	ð
 # Lðð !Ð"_¨LÐ"_Ð"_½H¼L¹N¼N×<SÒ<SÐT[Ñ<\Ô<\Ð"_Ð"_Ð"_ðð # Fðð # Fðð & {ðð ,ÍzÐZcÕfjÕltÐeuÑOvÔOvð  .K¨Y×-?Ò-?À
Ñ-KÔ-KÐ-KÕ|ð  AJñ  }Kô  }Kðð " ;ðð &Ð'Oðð *¨<ðð )Ð*^ðð  ðð  $Ð%dð!ð" #Ð$að#ð& å&+¨LÑ&9Ô&9Ý*/°Ñ*=Ô*=Ý,1°,Ñ,?Ô,?Ý,1°,Ñ,?Ô,?Ý-2°=Ñ-AÔ-AÝ&+ÐBRÐ,Y¨N¨NÐXYÑ&ZÔ&ZÝ(-Ð.>Ñ(?Ô(?Ý(-Ð.>Ñ(?Ô(?Ý#(¨Ñ#5Ô#5Ø,1ð&ð &ð !4Ø&9Ø-NØ$/ð	 ð  ðC'ð 'ðu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	ð A	ð A	øøøð A	ð A	ð A	ð A	ð A	ð A	s5   š]6¯\]Ý]6Ý]"	Ý"]6Ý%]"	Ý&]6Ý6]:Ý=]:c                ó2   — |                       ||d¬¦  «        S )u=   HÃ m tÆ°Æ¡ng thÃ­ch ngÆ°á»£c vá»›i get_treasury_02a_data cÅ©.rH   ©rJ   rK   )r¼   ©rF   rI   rJ   s      r(   Úget_treasury_02a_dataz/TreasurySettlementService.get_treasury_02a_data#  s   € à×%Ò%Ð&8À|Ð_dÐ%ÑeÔeÐer*   c                óP  — |                       |||¦  «        }|d         }|d         }|d         }g }|D ]ƒ}	|                     d|	d         › d|	d         › d|	d	         › d
|	d         d›d
|	d         d›d|	d         d›d
|	d         d›d|	d         d›d
|	d         d›d|	d         d›d|	d         d›d�¦  «         Œ„|d         dk    rdnd}
|d         dk    rdnd}d                     g d ‘|d                              ¦   «         › ‘d!‘|d"         › ‘d!‘|d#         › ‘d$‘|› ‘d%‘|
› ‘d&‘t	          j        ¦   «                              d'¦  «        › ‘d(‘t	          j        ¦   «                              d)¦  «        › ‘d*‘t	          j        ¦   «                              d+¦  «        › ‘d,‘|d-         › ‘d.‘|d/         › ‘d0‘|d#         › ‘d1‘|d2         › ‘d3‘|d4         › ‘d5‘|d6         › ‘d7‘|d8         › ‘d9‘|d:         › ‘d;‘|d<         › ‘d=‘|d>         › ‘d?‘|d@         › ‘dA‘d                     |¦  «        › ‘dB‘|dC         d›‘dD‘|dE         d›‘dF‘|dG         d›‘dH‘|dI         d›‘dJ‘|dE         d›‘dK‘|dL         d›‘dM‘|dN         d›‘dO‘|dP         › ‘dQ‘|dR         dS         › ‘dT‘¦  «        S )Uu_   Render giao diá»‡n HTML sá»‘ng Ä‘á»™ng, há»— trá»£ in A4 ngang chuáº©n vÄƒn báº£n hÃ nh chÃ­nh.r�   r�   rŽ   zL
                <tr>
                    <td class="text-center font-mono">rg   z:</td>
                    <td class="text-left font-bold">rZ   z2</td>
                    <td class="text-center">r\   z;</td>
                    <td class="text-right font-mono">rh   z,.2fri   z,.0fzE</td>
                    <td class="text-right font-mono font-bold">rj   rk   zE</td>
                    <td class="text-right font-mono text-cyan">rl   rm   zP</td>
                    <td class="text-right font-mono text-green font-bold">ro   rp   z(</td>
                </tr>
            rK   rb   u%   MáºªU 03.C/TT (PHÃ�T SINH NGOÃ€I HÄ�)u"   MáºªU 03.A/TT (THEO Há»¢P Ä�á»’NG)z#dc2626z#0284c7r+   zN<!DOCTYPE html>
<html lang="vi">
<head>
    <meta charset="UTF-8">
    <title>z - rP   rw   uÎ  </title>
    <style>
        @page {
            size: A4 landscape;
            margin: 10mm 12mm 10mm 12mm;
        }
        body {
            font-family: 'Times New Roman', Times, serif;
            font-size: 11pt;
            line-height: 1.35;
            color: #1e293b;
            background: #ffffff;
            margin: 0;
            padding: 20px;
        }
        .header-grid {
            display: grid;
            grid-template-columns: 1fr 1.2fr;
            margin-bottom: 12px;
            border-bottom: 1px solid #cbd5e1;
            padding-bottom: 10px;
        }
        .header-left {
            text-align: left;
            font-size: 10pt;
        }
        .header-right {
            text-align: center;
        }
        .national-title {
            font-weight: bold;
            font-size: 11.5pt;
        }
        .national-sub {
            border-bottom: 1px solid #000;
            display: inline-block;
            padding-bottom: 3px;
            margin-bottom: 6px;
            font-weight: bold;
        }
        .doc-title {
            text-align: center;
            font-weight: bold;
            font-size: 13.5pt;
            margin: 12px 0 4px;
            text-transform: uppercase;
            color: #0f172a;
        }
        .doc-subtitle {
            text-align: center;
            font-style: italic;
            font-size: 10pt;
            margin-bottom: 14px;
            color: #475569;
        }
        .meta-box {
            background: #f8fafc;
            border: 1px solid #e2e8f0;
            border-radius: 6px;
            padding: 10px 14px;
            margin-bottom: 14px;
            display: grid;
            grid-template-columns: 1fr 1fr;
            gap: 6px 20px;
            font-size: 10.5pt;
        }
        .meta-box p {
            margin: 2px 0;
        }
        table.treasury-table {
            width: 100%;
            border-collapse: collapse;
            font-size: 9.5pt;
            margin-bottom: 14px;
        }
        table.treasury-table th, table.treasury-table td {
            border: 1px solid #475569;
            padding: 5px 6px;
            vertical-align: middle;
        }
        table.treasury-table th {
            background: #f1f5f9;
            text-align: center;
            font-weight: bold;
            color: #0f172a;
        }
        .text-center { text-align: center; }
        .text-left { text-align: left; }
        .text-right { text-align: right; }
        .font-mono { font-family: 'Courier New', Courier, monospace; }
        .font-bold { font-weight: bold; }
        .text-cyan { color: #0284c7; }
        .text-green { color: #16a34a; }

        .summary-box {
            background: #f0fdf4;
            border: 1px solid #86efac;
            border-radius: 6px;
            padding: 12px 16px;
            margin-bottom: 16px;
            font-size: 11pt;
        }
        .summary-grid {
            display: grid;
            grid-template-columns: repeat(3, 1fr);
            gap: 10px;
            margin-bottom: 8px;
        }
        .summary-card {
            background: #ffffff;
            border: 1px solid #bbf7d0;
            border-radius: 4px;
            padding: 8px 10px;
        }
        .summary-card-label {
            font-size: 9pt;
            color: #4b5563;
            text-transform: uppercase;
        }
        .summary-card-val {
            font-size: 12pt;
            font-weight: bold;
            font-family: 'Courier New', Courier, monospace;
            color: #15803d;
        }
        .signatures {
            display: grid;
            grid-template-columns: repeat(4, 1fr);
            text-align: center;
            margin-top: 25px;
            page-break-inside: avoid;
        }
        .sig-role {
            font-weight: bold;
            margin-bottom: 4px;
            font-size: 10.5pt;
        }
        .sig-sub {
            font-style: italic;
            font-size: 8.5pt;
            color: #64748b;
            margin-bottom: 50px;
        }
        .sig-name {
            font-weight: bold;
            font-size: 10.5pt;
        }
        @media print {
            body { padding: 0; }
            .no-print { display: none !important; }
            table.treasury-table th { background-color: #f1f5f9 !important; -webkit-print-color-adjust: exact; }
            .summary-box { background-color: #f0fdf4 !important; -webkit-print-color-adjust: exact; }
        }
    </style>
</head>
<body>
    <div class="header-grid">
        <div class="header-left">
            <strong>CÃ”NG TY TNHH XÃ‚Y Dá»°NG Ä�á»ŠNH SÆ N</strong><br>
            MST: 0202111150<br>
            Sá»‘: ...... /Ä�S-Ä�NTT<br>
            <span style="display:inline-block; margin-top:4px; padding:2px 6px; background:zV; color:#fff; font-size:8.5pt; font-weight:bold; border-radius:3px;">
                u  
            </span>
        </div>
        <div class="header-right">
            <div class="national-title">Cá»˜NG HÃ’A XÃƒ Há»˜I CHá»¦ NGHÄ¨A VIá»†T NAM</div>
            <div class="national-sub">Ä�á»™c láº­p - Tá»± do - Háº¡nh phÃºc</div><br>
            <i>Háº£i PhÃ²ng, ngÃ y z%du    thÃ¡ng z%mu    nÄƒm z%Yz;</i>
        </div>
    </div>

    <div class="doc-title">rt   z%</div>
    <div class="doc-subtitle">ru   u    â€” <strong>uf   </strong></div>

    <div class="meta-box">
        <p><strong>TÃªn dá»± Ã¡n / CÃ´ng trÃ¬nh:</strong> rQ   u=   </p>
        <p><strong>Ä�á»‹a Ä‘iá»ƒm xÃ¢y dá»±ng:</strong> rT   u>   </p>
        <p><strong>Chá»§ Ä‘áº§u tÆ° / Ban QLDA:</strong> rS   u?   </p>
        <p><strong>CÄƒn cá»© Há»£p Ä‘á»“ng sá»‘:</strong> rU   õ    ngÃ y rV   u8   </p>
        <p><strong>NhÃ  tháº§u thi cÃ´ng:</strong> ry   z (MST: r{   u<   )</p>
        <p><strong>TÃ i khoáº£n thanh toÃ¡n:</strong> r   uC  </p>
    </div>

    <table class="treasury-table">
        <thead>
            <tr>
                <th rowspan="2" style="width: 35px;">STT</th>
                <th rowspan="2" style="width: 280px;">Ná»™i Dung CÃ´ng Viá»‡c (Háº¡ng Má»¥c WBS)</th>
                <th rowspan="2" style="width: 50px;">Ä�VT</th>
                <th colspan="3">Theo Há»£p Ä�á»“ng</th>
                <th colspan="3">Khá»‘i LÆ°á»£ng Thá»±c Hiá»‡n</th>
                <th colspan="2">GiÃ¡ Trá»‹ Ä�á»� Nghá»‹ Thanh ToÃ¡n (Ä‘)</th>
            </tr>
            <tr>
                <th style="width: 70px;">Khá»‘i LÆ°á»£ng</th>
                <th style="width: 75px;">Ä�Æ¡n GiÃ¡</th>
                <th style="width: 95px;">ThÃ nh Tiá»�n</th>
                <th style="width: 65px;">Ká»³ TrÆ°á»›c</th>
                <th style="width: 65px;">Ká»³ NÃ y</th>
                <th style="width: 65px;">LÅ©y Káº¿</th>
                <th style="width: 95px;">Ká»³ NÃ y</th>
                <th style="width: 100px;">LÅ©y Káº¿ Háº¿t Ká»³</th>
            </tr>
            <tr style="background:#e2e8f0; font-size: 8pt; color:#475569;">
                <th>(1)</th><th>(2)</th><th>(3)</th><th>(4)</th><th>(5)</th><th>(6=4x5)</th><th>(7)</th><th>(8)</th><th>(9=7+8)</th><th>(10=8x5)</th><th>(11=9x5)</th>
            </tr>
        </thead>
        <tbody>
            uû   
            <tr style="background: #f8fafc; font-weight: bold;">
                <td colspan="3" class="text-center">Tá»”NG Cá»˜NG KHá»�I LÆ¯á»¢NG HOÃ€N THÃ€NH:</td>
                <td></td><td></td>
                <td class="text-right font-mono">r€   zn</td>
                <td></td><td></td><td></td>
                <td class="text-right font-mono text-green">r‚   z7</td>
                <td class="text-right font-mono">rƒ   uÅ  </td>
            </tr>
        </tbody>
    </table>

    <div class="summary-box">
        <div style="font-weight: bold; margin-bottom: 8px; text-transform: uppercase;">Tá»”NG Há»¢P GIÃ� TRá»Š Ä�á»€ NGHá»Š THANH TOÃ�N KHO Báº C NHÃ€ NÆ¯á»šC:</div>
        <div class="summary-grid">
            <div class="summary-card">
                <div class="summary-card-label">1. GiÃ¡ Trá»‹ Há»£p Ä�á»“ng</div>
                <div class="summary-card-val">rR   uæ    â‚«</div>
            </div>
            <div class="summary-card">
                <div class="summary-card-label">2. GiÃ¡ Trá»‹ HoÃ n ThÃ nh Ká»³ NÃ y</div>
                <div class="summary-card-val" style="color: #0284c7;">uæ    â‚«</div>
            </div>
            <div class="summary-card">
                <div class="summary-card-label">3. Thu Há»“i Táº¡m á»¨ng Ká»³ NÃ y</div>
                <div class="summary-card-val" style="color: #dc2626;">- r…   ur   â‚«</div>
            </div>
        </div>
        <div style="margin-top: 6px; font-size: 11.5pt;">
            <strong>ðŸ‘‰ Sá»� TIá»€N THá»°C NHáº¬N Ä�á»€ NGHá»Š KHO Báº C THANH TOÃ�N Ká»² NÃ€Y:</strong>
            <span style="font-size: 14pt; color: #16a34a; font-weight: bold; font-family: 'Courier New', Courier, monospace; margin-left: 8px;">
                r‡   u‡    VNÄ�
            </span>
        </div>
        <div style="margin-top: 4px; font-style: italic;">
            (Báº±ng chá»¯: <strong>rˆ   uç  </strong>)
        </div>
    </div>

    <div class="signatures">
        <div>
            <div class="sig-role">NGÆ¯á»œI Láº¬P BIá»‚U</div>
            <div class="sig-sub">(KÃ½ vÃ  ghi rÃµ há»� tÃªn)</div>
            <div class="sig-name">Ká»¹ sÆ° QS Hiá»‡n trÆ°á»�ng</div>
        </div>
        <div>
            <div class="sig-role">Ä�Æ N Vá»Š TÆ¯ Váº¤N GIÃ�M SÃ�T</div>
            <div class="sig-sub">(KÃ½, Ä‘Ã³ng dáº¥u vÃ  ghi rÃµ há»� tÃªn)</div>
            <div class="sig-name">TrÆ°á»Ÿng Ä‘oÃ n TVGS</div>
        </div>
        <div>
            <div class="sig-role">Ä�áº I DIá»†N NHÃ€ THáº¦U THI CÃ”NG</div>
            <div class="sig-sub">(KÃ½, Ä‘Ã³ng dáº¥u vÃ  ghi rÃµ há»� tÃªn)</div>
            <div class="sig-name">r�   r‰   u�  <br><span style="font-weight:normal; font-size:9pt;">GiÃ¡m Ä‘á»‘c CÃ´ng ty Ä�á»‹nh SÆ¡n</span></div>
        </div>
        <div>
            <div class="sig-role">Ä�áº I DIá»†N CHá»¦ Ä�áº¦U TÆ¯</div>
            <div class="sig-sub">(KÃ½, Ä‘Ã³ng dáº¥u vÃ  ghi rÃµ há»� tÃªn)</div>
            <div class="sig-name">GiÃ¡m Ä‘á»‘c Ban QLDA</div>
        </div>
    </div>
</body>
</html>)r¼   r!   r"   r1   r   r˜   r™   )rF   rI   rJ   rK   Údatar#   ÚsrŽ   Ú	rows_htmlÚitÚ	tag_badgeÚ	tag_colors               r(   Úrender_treasury_htmlz.TreasurySettlementService.render_treasury_html'  s†  € à×%Ò%Ð&8¸,È	ÑRÔRˆØ�ŒNˆØÐ$Ô%ˆØ�W”ˆàˆ	Øð 	ð 	ˆBØ×Òð à79¸%´yðð ð 68¸´_ðð ð .0°¬Zð	ð ð
 79¸Ô6Hðð ð ð 79¸Ô6Fðð ð ð ACÐCTÔ@Uðð ð ð 79¸´nðð ð ð ACÀ:Äðð ð ð 79¸´oðð ð ð LNÈmÔK\ðð ð ð ACÀ>Ô@Rðð ð ð ñ ô ð ð ð  @AÀ¼~ÐQVÒ?VÐ?VÐ;Ð;ð  ]Aˆ	Ø!" ;¤°5Ò!8Ð!8�I�I¸iˆ	ðS÷ Sò Sð Sð Sð Sð ˆkŒN× Ò Ñ"Ô"ð	Sð Sð Sð Sð ()¨Ô'8ð	Sð Sð Sð Sð >?¸|¼_ð	Sð Sð Sð SðJ ]fðKSð Sð Sð SðL ðMSð Sð Sð SõX %-¤L¡N¤N×$;Ò$;¸DÑ$AÔ$AðYSð Sð Sð SõX LTÌ<É>Ì>×KbÒKbÐcgÑKhÔKhðYSð Sð Sð SõX qyÔp|Ñp~Ôp~÷  qHò  qHð  IMñ  qNô  qNðYSð Sð Sð Sð` ˜jœMðaSð Sð Sð Sðb  ! œ~ðcSð Sð Sð Sðb =>¸l¼OðcSð Sð Sð Sðh <=¸^Ô;LðiSð Sð Sð Sðj :;¸:¼ðkSð Sð Sð Sðl ;<¸MÔ:JðmSð Sð Sð Sðn <=Ð=NÔ;OðoSð Sð Sð Sðn YZÐZqÔXrðoSð Sð Sð Sðp 56Ð6GÔ4HðqSð Sð Sð Sðp RSÐShÔQiðqSð Sð Sð Sðr 89¸Ô7HðsSð Sð Sð Sðj �WŠW�YÑÔðkSð Sð Sð Sðr 34Ð4HÔ2IðsSð Sð Sð Sð Sðv >?Ð?UÔ=VðwSð Sð Sð Sð Sðx 34Ð4KÔ2LðySð Sð Sð Sð SðL 01Ð1AÔ/BðMSð Sð Sð Sð SðT HIÐI_ÔG`ðUSð Sð Sð Sð Sð\ JKÐK]ÔI^ð]Sð Sð Sð Sð Sðh �=Ô!ðiSð Sð Sð Sð Sðp %&Ð&<Ô$=ðqSð Sð Sð SðT $(¨Ô#6°zÔ#BðUSð Sð Sð Sñ Sô Sð S	r*   c                ó2   — |                       ||d¬¦  «        S ©u   HÃ m tÆ°Æ¡ng thÃ­ch ngÆ°á»£c.rH   r¾   )rÉ   r¿   s      r(   Úrender_treasury_02a_htmlz2TreasurySettlementService.render_treasury_02a_htmlX  s   € à×(Ò(Ð);È,ÐbgÐ(ÑhÔhÐhr*   Úbytesc                ó*  — |                       |||¦  «        }|d         }|d         }|d         }t          j        ¦   «         }|j        }	|d         dk    rdnd}
|
› d|› �|	_        d	}t          |d
d¬¦  «        }t          |dd¬¦  «        }t          |d¬¦  «        }t          |dd¬¦  «        }t          ddd¬¦  «        }t          dd¬¦  «        }t          dd¬¦  «        }t          t          dd¬¦  «        t          dd¬¦  «        t          dd¬¦  «        t          dd¬¦  «        ¬¦  «        }t          ddd¬¦  «        }d|	d<   ||	d         _
        d |	d!<   ||	d!         _
        d"|	d#<   ||	d#         _
        ||	d#         _        |	                     d$¦  «         d%|	d&<   ||	d&         _
        ||	d&         _        |	                     d'¦  «         |d(         |	d)<   ||	d)         _
        ||	d)         _        |	                     d*¦  «         |d+         › d,|d-         › �|	d.<   ||	d.         _
        ||	d.         _        |	                     d/¦  «         d0|d1         › �|	d2<   ||	d2         _
        |	                     d3¦  «         d4|d5         › �|	d6<   ||	d6         _
        |	                     d7¦  «         d8|d9         › �|	d:<   ||	d:         _
        |	                     d;¦  «         d<|d=         › d>|d?         › �|	d@<   ||	d@         _
        |	                     dA¦  «         dBdCdDdE|d         dk    rdFndGfdH|d         dk    rdIndJfdKg}|D ]8\  }}||	|                     dL¦  «        dM         <   |	                     |¦  «         Œ9g dN¢}|D ]
\  }}||	|<   Œg dO¢}t          |dP¦  «        D ]<\  }}t          |¦  «        }||	|› dQ�<   ||	|› dQ�         _
        ||	|› dQ�         _        Œ=t!          dd
¦  «        D ]P}t!          dPdR¦  «        D ]=}|	                     ||¬S¦  «        }|dRk     r|n||_
        ||_        ||_        ||_        Œ>ŒQd
} |D �]Š}!|!dT         |	dU| › �<   ||	dU| › �         _        |!dV         |	dW| › �<   ||	dW| › �         _        |!dX         |	dY| › �<   ||	dY| › �         _        |!dZ         |	d[| › �<   d\|	d[| › �         _        |!d]         |	d^| › �<   d_|	d^| › �         _        d`| › da| › �|	db| › �<   d_|	db| › �         _        |!dc         |	dd| › �<   d\|	dd| › �         _        |!de         |	df| › �<   d\|	df| › �         _        dg| › dh| › �|	di| › �<   d\|	di| › �         _        dj| › da| › �|	dk| › �<   d_|	dk| › �         _        dl| › da| › �|	dm| › �<   d_|	dm| › �         _        t!          dPdR¦  «        D ]'}"|	                     | |"¬S¦  «        }||_
        ||_        Œ(| dPz  } �ŒŒ| }#dn|	dU|#› �<   |	                     dU|#› do|#› �¦  «         dp|#dPz
  › dq�|	db|#› �<   d_|	db|#› �         _        dr|#dPz
  › dq�|	dk|#› �<   d_|	dk|#› �         _        ds|#dPz
  › dq�|	dm|#› �<   d_|	dm|#› �         _        t!          dPdR¦  «        D ]>}"|	                     |#|"¬S¦  «        }||_
        ||_        t          dtdtd¬¦  «        |_        Œ?dudvddwdwdxdRdRdRdxdxdyœ}$|$                     ¦   «         D ]\  }%}&|&|	j        |%         _        Œt1          j        ¦   «         }'|                     |'¦  «         |'                     ¦   «         S )zum   Xuáº¥t file Excel .xlsx chuáº©n má»±c Máº«u 03.a/TT hoáº·c Máº«u 03.c/TT theo Nghá»‹ Ä‘á»‹nh 254/2025/NÄ�-CP.r�   r�   rŽ   rK   rb   u   Máº«u 03.c (PhÃ¡t sinh)u
   Máº«u 03.au
    - Ä�á»£t zTimes New Romané   T)ÚnameÚsizeÚboldg      %@r   )rÐ   rÑ   g      #@)rÐ   rÑ   ÚitalicÚcenter)Ú
horizontalÚverticalÚ	wrap_textÚleft)rÕ   rÖ   ÚrightÚthinÚ000000)ÚstyleÚcolor)rØ   rÙ   ÚtopÚbottomÚF1F5F9Úsolid)Ústart_colorÚ	end_colorÚ	fill_typerz   ÚA1zMST: 0202111150ÚA2u-   Cá»˜NG HÃ’A XÃƒ Há»˜I CHá»¦ NGHÄ¨A VIá»†T NAMÚG1zG1:K1u%   Ä�á»™c láº­p - Tá»± do - Háº¡nh phÃºcÚG2zG2:K2rt   ÚA4zA4:K4ru   u    â€” rw   ÚA5zA5:K5u   TÃªn cÃ´ng trÃ¬nh: rQ   ÚA7zA7:F7u   Ä�á»‹a Ä‘iá»ƒm: rT   ÚG7zG7:K7u   Chá»§ Ä‘áº§u tÆ°: rS   ÚA8zA8:F8u   CÄƒn cá»© HÄ� sá»‘: rU   rÂ   rV   ÚG8zG8:K8)zA10:A11ÚSTT)zB10:B11u*   Ná»™i Dung CÃ´ng Viá»‡c (Háº¡ng Má»¥c WBS))zC10:C11u   Ä�VTzD10:F10u   Theo Há»£p Ä�á»“ng Ban Ä�áº§uu   Theo Há»£p Ä�á»“ngzG10:I10u   Khá»‘i LÆ°á»£ng PhÃ¡t Sinhu   Khá»‘i LÆ°á»£ng Thá»±c Hiá»‡n)zJ10:K10u*   GiÃ¡ Trá»‹ Ä�á»� Nghá»‹ Thanh ToÃ¡n (VNÄ�)ú:r   ))ÚD11u   Khá»‘i lÆ°á»£ng)ÚE11u
   Ä�Æ¡n giÃ¡)ÚF11u   ThÃ nh tiá»�n)ÚG11u   Ká»³ trÆ°á»›c)ÚH11õ	   Ká»³ nÃ y)ÚI11u	   LÅ©y káº¿)ÚJ11rö   )ÚK11u   LÅ©y káº¿ háº¿t ká»³)z(1)z(2)z(3)z(4)z(5)z(6=4x5)z(7)z(8)z(9=7+8)z(10=8x5)z(11=9x5)r   Ú12é   )ÚrowÚcolumnrg   ÚArZ   ÚBr\   ÚCrh   ÚDz#,##0.00ri   ÚEz#,##0z=Dz*EÚFrk   ÚGrl   ÚHz=Gz+HÚIz=HÚJz=IÚKu   Tá»”NG Cá»˜NGz:Cz
=SUM(F13:Frx   z
=SUM(J13:Jz
=SUM(K13:KÚF8FAFCé   é*   é   é   )rþ   rÿ   r   r  r  r  r  r  r  r  r  )r¼   ÚopenpyxlÚWorkbookÚactiveÚtitler	   r
   r   r   r   ÚfontÚ	alignmentÚmerge_cellsÚsplitr.   r   ÚrangeÚcellÚfillÚborderÚnumber_formatrŽ   Úcolumn_dimensionsÚwidthÚioÚBytesIOÚsaveÚgetvalue)(rF   rI   rJ   rK   rÃ   r#   rÄ   rŽ   ÚwbÚwsÚ
form_labelÚfont_familyÚ
font_titleÚ	font_boldÚfont_regularÚfont_italicÚalign_centerÚ
align_leftÚalign_rightÚthin_borderÚheader_fillÚheaders_row1Ú
cell_ranger  Úheaders_row2r  Úcol_numsÚc_idxÚtextÚc_letterrü   ÚcolÚcurr_rowrÆ   ÚcÚtot_rowÚwidthsÚcol_lÚwÚouts(                                           r(   Úexport_treasury_excelz/TreasurySettlementService.export_treasury_excel\  sÕ  € à×%Ò%Ð&8¸,È	ÑRÔRˆØ�ŒNˆØÐ$Ô%ˆØ�W”ˆåÔÑ Ô ˆØŒYˆØ23°K´.ÀEÒ2IÐ2IÐ.Ð.È|ˆ
Ø Ð:Ð:¨LÐ:Ð:ˆŒà'ˆÝ˜{°¸$Ð?Ñ?Ô?ˆ
Ý˜k°¸4Ð@Ñ@Ô@ˆ	Ý °2Ð6Ñ6Ô6ˆÝ °#¸dÐCÑCÔCˆå ¨H¸xÐSWÐXÑXÔXˆÝ¨&¸8ÐDÑDÔDˆ
Ý¨7¸XÐFÑFÔFˆåÝ˜F¨(Ð3Ñ3Ô3Ý˜V¨8Ð4Ñ4Ô4Ý˜6¨Ð2Ñ2Ô2Ý˜f¨HÐ5Ñ5Ô5ð	
ñ 
ô 
ˆõ "¨hÀ(ÐV]Ð^Ñ^Ô^ˆà;ˆˆ4‰Ø!ˆˆ4ŒŒØ$ˆˆ4‰Ø$ˆˆ4ŒŒàBˆˆ4‰Ø!ˆˆ4ŒŒØ)ˆˆ4ŒÔØ
�Š�wÑÔÐà:ˆˆ4‰Ø!ˆˆ4ŒŒØ)ˆˆ4ŒÔØ
�Š�wÑÔÐà�Z”=ˆˆ4‰Ø"ˆˆ4ŒŒØ)ˆˆ4ŒÔØ
�Š�wÑÔÐà˜”nÐ<Ð<¨1¨\¬?Ð<Ð<ˆˆ4‰Ø#ˆˆ4ŒŒØ)ˆˆ4ŒÔØ
�Š�wÑÔÐà<¨¨>Ô):Ð<Ð<ˆˆ4‰Ø!ˆˆ4ŒŒØ
�Š�wÑÔÐØ5 a¨
¤mÐ5Ð5ˆˆ4‰Ø$ˆˆ4ŒŒØ
�Š�wÑÔÐà:¨¨-Ô(8Ð:Ð:ˆˆ4‰Ø$ˆˆ4ŒŒØ
�Š�wÑÔÐØc¨!Ð,=Ô*>ÐcÐcÀqÐI`ÔGaÐcÐcˆˆ4‰Ø!ˆˆ4ŒŒØ
�Š�wÑÔÐð ØEØØ¸1¸[¼>ÈUÒ;RÐ;RÐ7Ð7ÐXlÐmØ¸¸+¼È%Ò8OÐ8OÐ4Ð4ÐUtÐuØEð
ˆð ".ð 	'ð 	'ÑˆJ˜Ø+0ˆBˆz×Ò Ñ$Ô$ QÔ'Ñ(Ø�NŠN˜:Ñ&Ô&Ð&Ð&ð	
ð 	
ð 	
ˆð (ð 	ð 	‰KˆD�%ØˆBˆt‰HˆHàrÐrÐrˆÝ$ X¨qÑ1Ô1ð 	9ð 	9‰KˆE�4Ý(¨Ñ/Ô/ˆHØ"&ˆB�(ˆˆˆÑØ'2ˆB�(ˆˆˆÔÔ$Ø,8ˆB�(ˆˆˆÔÔ)Ð)å˜˜R‘=”=ð 	*ð 	*ˆCÝ˜Q ‘|”|ð *ð *�Ø—w’w 3¨s�wÑ3Ô3�Ø),¨rª¨˜I˜I°{�”	Ø!-�”Ø'�”	Ø)�”�ð*ð ˆØð 	ñ 	ˆBØ!# E¤ˆBˆ~�8ˆ~ˆ~ÑØ+7ˆBˆ~�8ˆ~ˆ~ÔÔ(Ø!# K¤ˆBˆ~�8ˆ~ˆ~ÑØ+5ˆBˆ~�8ˆ~ˆ~ÔÔ(Ø!# F¤ˆBˆ~�8ˆ~ˆ~ÑØ+7ˆBˆ~�8ˆ~ˆ~ÔÔ(à!# NÔ!3ˆBˆ~�8ˆ~ˆ~ÑØ/9ˆBˆ~�8ˆ~ˆ~ÔÔ,Ø!# LÔ!1ˆBˆ~�8ˆ~ˆ~ÑØ/6ˆBˆ~�8ˆ~ˆ~ÔÔ,Ø!< hÐ!<Ð!<°(Ð!<Ð!<ˆBˆ~�8ˆ~ˆ~ÑØ/6ˆBˆ~�8ˆ~ˆ~ÔÔ,à!# J¤ˆBˆ~�8ˆ~ˆ~ÑØ/9ˆBˆ~�8ˆ~ˆ~ÔÔ,Ø!# J¤ˆBˆ~�8ˆ~ˆ~ÑØ/9ˆBˆ~�8ˆ~ˆ~ÔÔ,Ø!< hÐ!<Ð!<°(Ð!<Ð!<ˆBˆ~�8ˆ~ˆ~ÑØ/9ˆBˆ~�8ˆ~ˆ~ÔÔ,à!< hÐ!<Ð!<°(Ð!<Ð!<ˆBˆ~�8ˆ~ˆ~ÑØ/6ˆBˆ~�8ˆ~ˆ~ÔÔ,Ø!< hÐ!<Ð!<°(Ð!<Ð!<ˆBˆ~�8ˆ~ˆ~ÑØ/6ˆBˆ~�8ˆ~ˆ~ÔÔ,å˜1˜b‘\”\ð *ð *�Ø—w’w 8°A�wÑ6Ô6�Ø(�”	Ø)�”�Ø˜‰MˆH‰HàˆØ+ˆˆ=ˆwˆ=ˆ=ÑØ
�ŠÐ/˜7Ð/Ð/ gÐ/Ð/Ñ0Ô0Ð0Ø7¨°1©Ð7Ð7Ð7ˆˆ=ˆwˆ=ˆ=ÑØ*1ˆˆ=ˆwˆ=ˆ=ÔÔ'Ø7¨°1©Ð7Ð7Ð7ˆˆ=ˆwˆ=ˆ=ÑØ*1ˆˆ=ˆwˆ=ˆ=ÔÔ'Ø7¨°1©Ð7Ð7Ð7ˆˆ=ˆwˆ=ˆ=ÑØ*1ˆˆ=ˆwˆ=ˆ=ÔÔ'å�q˜"‘”ð 	að 	aˆAØ—7’7˜w¨q�7Ñ1Ô1ˆDØ!ˆDŒIØ%ˆDŒKÝ#°ÀHÐX_Ð`Ñ`Ô`ˆDŒIˆIà˜r¨°¸"À2ÈBÐUWÐ^`ÐgiÐprÐsÐsˆØŸš™œð 	2ð 	2‰HˆE�1Ø01ˆBÔ  Ô'Ô-Ð-åŒj‰lŒlˆØ
�Š�‰ŒˆØ�|Š|‰~Œ~Ðr*   c                ó2   — |                       ||d¬¦  «        S rË   )r=  r¿   s      r(   Úexport_treasury_02a_excelz3TreasurySettlementService.export_treasury_02a_excel  s   € à×)Ò)Ð*<È<ÐchÐ)ÑiÔiÐir*   rE   )rA   rB   r   rC   )
rI   r   rJ   r   rK   r   rL   r   r   rM   )r   )rI   r   rJ   r   r   rM   )r   rH   )rI   r   rJ   r   rK   r   r   r   )rI   r   rJ   r   r   r   )rI   r   rJ   r   rK   r   r   rÍ   )rI   r   rJ   r   r   rÍ   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__rG   r   r¼   rÀ   rÉ   rÌ   r=  r?  © r*   r(   r@   r@   R   sÿ   € € € € € Ø~Ð~ð4ð 4ð 4ð 4ð 4ð ØØ(/¨°©¬ðIð Ið Ið Ið IðVfð fð fð fð fðoð oð oð oð oðb	ið ið ið ið iðeð eð eð eð eðNjð jð jð jð jð jð jr*   r@   )r   r   r   r   )rC  Ú
__future__r   r  Úloggingr   r   Údecimalr   r   Útypingr   r  Úopenpyxl.stylesr	   r
   r   r   r   Úopenpyxl.utilsr   Ú)app.core.postgres.project_crud_repositoryr   Ú	getLoggerr@  Úloggerr>   r@   rD  r*   r(   ú<module>rN     s;  ððð ð
 #Ð "Ð "Ð "Ð "Ð "à 	€	€	€	Ø €€€Ø #Ð #Ð #Ð #Ð #Ð #Ð #Ð #Ø *Ð *Ð *Ð *Ð *Ð *Ð *Ð *Ø Ð Ð Ð Ð Ð à €€€Ø FÐ FÐ FÐ FÐ FÐ FÐ FÐ FÐ FÐ FÐ FÐ FÐ FÐ FØ ,Ð ,Ð ,Ð ,Ð ,Ð ,à KÐ KÐ KÐ KÐ KÐ Kà	ˆÔ	˜8Ñ	$Ô	$€ð89ð 89ð 89ð 89ðvs
jð s
jð s
jð s
jð s
jñ s
jô s
jð s
jð s
jð s
jr*   