§
    t�’ji  ã                  ór   — d dl mZ d dlmZ d dlmZmZmZmZm	Z	m
Z
mZmZmZmZmZmZmZmZ ddlmZ dd
„ZdS )é    )Úannotations)ÚAny)ÚALIGN_CENTERÚ
ALIGN_LEFTÚALIGN_RIGHTÚ
BORDER_BOXÚBORDER_TOTALÚFILL_HEADERÚ
FILL_TOTALÚFMT_CURRENCY_VNDÚFMT_INTEGERÚ	FONT_DATAÚFONT_HEADERÚ	FONT_MONOÚ
FONT_TITLEÚ
FONT_TOTALé   )ÚBoqRateBreakdownEngineÚtakeoffúdict[str, Any]Úitemsúlist[dict[str, Any]]c                óØ  — d| _         d| j        j        d         _        |                      d¦  «         d| d<   t
          | d         _        t          | d         _        g d¢}|D ]R\  }}|| |<   t          | |         _        t          | |         _        t          | |         _        t          | |         _        ŒSd| j        d	         _        d
}t!          |d¦  «        D �]¹\  }}t#          |                     d¦  «        p|                     d¦  «        pd¦  «        }	t'          j        |                     dd¦  «        |                     dd¦  «        |                     dd¦  «        |	|                     dd¦  «        ¬¦  «        }
t#          |
                     d¦  «        pd¦  «        }t#          |
                     d¦  «        pd¦  «        }t#          |
                     d¦  «        pd¦  «        }||z   |z   }d|› �|t*          t          t,          fd|› �|                     d¦  «        pd|d›�t.          t          d fd|› �|                     d¦  «        p|
                     dd ¦  «        t.          t          d fd!|› �|                     d¦  «        pdt*          t0          d fd"|› �|                     d¦  «        pdt*          t          d fd#|› �|t.          t2          t4          fd$|› �|t.          t2          t4          fd%|› �|t.          t2          t4          fd&|› �d'|› d(|› d)|› �t6          t2          t4          fg	}|D ]H\  }}}}}|| |<   || |         _        || |         _        t          | |         _        |r|| |         _        ŒId*| j        |         _        |dz  }�Œ»|}|                      d|› d+|› �¦  «         d,| d|› �<   t6          | d|› �         _        t2          | d|› �         _        t:          | d|› �         _        d-|dz
  › d.�| d#|› �<   t6          | d#|› �         _        t2          | d#|› �         _        t:          | d#|› �         _        t4          | d#|› �         _        d/|dz
  › d.�| d$|› �<   t6          | d$|› �         _        t2          | d$|› �         _        t:          | d$|› �         _        t4          | d$|› �         _        d0|dz
  › d.�| d%|› �<   t6          | d%|› �         _        t2          | d%|› �         _        t:          | d%|› �         _        t4          | d%|› �         _        d1|dz
  › d.�| d&|› �<   t6          | d&|› �         _        t2          | d&|› �         _        t:          | d&|› �         _        t4          | d&|› �         _        d2D ]}t<          | |› |› �         _        Œd3| j        |         _        d4d5d6d7d4d8d8d8d3d2œ	}|                     ¦   «         D ]\  }}|| j         |         _!        Œd S )9Nu"   3. Ä�Æ¡n GiÃ¡ Chi Tiáº¿t (VL+NC+M)Tr   zA2:I2uM   Báº¢NG PHÃ‚N RÃƒ Ä�Æ N GIÃ� CHI TIáº¾T (Váº¬T LIá»†U + NHÃ‚N CÃ”NG + CA MÃ�Y)ÚA2)	)ÚA4ÚSTT)ÚB4u   MÃ£ WBS)ÚC4u   MÃ£ Ä�á»‹nh Má»©c)ÚD4u   TÃªn Háº¡ng Má»¥c / CÃ´ng TÃ¡c)ÚE4u   Ä�VT)ÚF4u   Chi PhÃ­ Váº­t Liá»‡u (VL))ÚG4u   Chi PhÃ­ NhÃ¢n CÃ´ng (NC))ÚH4u   Chi PhÃ­ MÃ¡y Thi CÃ´ng (M))ÚI4u   Ä�Æ¡n GiÃ¡ Dá»± ToÃ¡n (VL+NC+M)é   é   é   r   Úunit_price_vndÚ
unit_priceg        Ú	item_nameÚ ÚcategoryÚunitÚm3Ú	norm_codezAF.11110)r*   r,   r-   Útotal_unit_pricer/   Úmaterial_cost_vndÚlabor_cost_vndÚequipment_cost_vndÚAÚBÚwbs_codezWBS-Ú02dÚCu   Ä�M-2026ÚDÚEÚFÚGÚHÚIz=Fz+Gz+Hé   z:Eu=   Tá»”NG Cá»˜NG Ä�Æ N GIÃ� Tá»”NG Há»¢P CÃ�C CÃ”NG TÃ�C (VNÄ�):z	=SUM(F5:Fú)z	=SUM(G5:Gz	=SUM(H5:Hz	=SUM(I5:I)	r4   r5   r8   r9   r:   r;   r<   r=   r>   é   é   é
   é   é-   é   )"ÚtitleÚviewsÚ	sheetViewÚshowGridLinesÚmerge_cellsr   Úfontr   Ú	alignmentr   r
   Úfillr   ÚborderÚrow_dimensionsÚheightÚ	enumerateÚfloatÚgetr   Úbreakdown_item_rater   r   r   r   r   r   r   Únumber_formatr   r	   r   Úcolumn_dimensionsÚwidth)Úwsr   r   ÚheadersÚcell_refÚtextÚcurrent_rowÚidxÚitemÚu_priceÚ	breakdownÚvlÚncÚmÚtotÚrow_dataÚvalÚfntÚalgÚnum_fmtÚ	total_rowÚcolÚwidthsÚ
col_letterrX   s                            úPC:\Projects\DSCons\app\modules\takeoff\application\excel_sheet_rate_breakdown.pyÚbuild_rate_breakdown_sheetrp      s‰  € ð 4€B„HØ*.€B„HÔ�qÔÔ'ð ‡N‚N�7ÑÔÐØ^€B€t�HÝ€B€t„H„MÝ%€B€t„HÔð
ð 
ð 
€Gð "ð )ð )‰ˆ�$Øˆˆ8‰Ý'ˆˆ8ŒÔÝ'ˆˆ8ŒÔÝ!-ˆˆ8ŒÔÝ(ˆˆ8ŒÔÐØ"$€BÔ�aÔÔà€KÝ˜u aÑ(Ô(ð Bñ B‰	ˆˆTÝ˜ŸšÐ!1Ñ2Ô2ÐS°d·h²h¸|Ñ6LÔ6LÐSÐPSÑTÔTˆÝ*Ô>Ø—h’h˜{¨BÑ/Ô/Ø—X’X˜j¨"Ñ-Ô-Ø—’˜& $Ñ'Ô'Ø$Ø—h’h˜{¨JÑ7Ô7ð
ñ 
ô 
ˆ	õ �9—=’=Ð!4Ñ5Ô5Ð<¸Ñ=Ô=ˆÝ�9—=’=Ð!1Ñ2Ô2Ð9°cÑ:Ô:ˆÝ�)—-’-Ð 4Ñ5Ô5Ð<¸Ñ=Ô=ˆØ�2‰g˜‰kˆð �ÐÐ ¥Yµ½kÐJà!�KÐ!Ð!Ø—’˜Ñ$Ô$Ð8Ð(8¨sÐ(8Ð(8Ð(8ÝÝØðð "�KÐ!Ð!Ø—’˜Ñ%Ô%ÐO¨¯ª°{ÀJÑ)OÔ)OÝÝØðð "�KÐ!Ð!Ø—’˜Ñ%Ô%Ð+¨ÝÝØðð "�KÐ!Ð!Ø—’˜Ñ Ô Ð( DÝÝØðð �ÐÐ ¥I­{Õ<LÐMØ�ÐÐ ¥I­{Õ<LÐMØ�ÐÐ ¥9­kÕ;KÐLà!�KÐ!Ð!Ø@�[Ð@Ð@ KÐ@Ð@°;Ð@Ð@ÝÝÝ ððC(
ˆðT 19ð 	5ð 	5Ñ,ˆH�c˜3  WØˆBˆx‰LØ #ˆBˆxŒLÔØ%(ˆBˆxŒLÔ"Ý",ˆBˆxŒLÔØð 5Ø-4��8”Ô*øà02ˆÔ˜+Ô&Ô-Ø�qÑˆ‰ð €IØ‡N‚NÐ/�yÐ/Ð/ IÐ/Ð/Ñ0Ô0Ð0ØY€B€ˆ9€€ÑÝ)€B€ˆ9€€ÔÔÝ$/€B€ˆ9€€ÔÔ!Ý)€B€ˆ9€€ÔÔà6 i°!¡mÐ6Ð6Ð6€B€ˆ9€€ÑÝ)€B€ˆ9€€ÔÔÝ$/€B€ˆ9€€ÔÔ!Ý)€B€ˆ9€€ÔÔÝ(8€B€ˆ9€€ÔÔ%à6 i°!¡mÐ6Ð6Ð6€B€ˆ9€€ÑÝ)€B€ˆ9€€ÔÔÝ$/€B€ˆ9€€ÔÔ!Ý)€B€ˆ9€€ÔÔÝ(8€B€ˆ9€€ÔÔ%à6 i°!¡mÐ6Ð6Ð6€B€ˆ9€€ÑÝ)€B€ˆ9€€ÔÔÝ$/€B€ˆ9€€ÔÔ!Ý)€B€ˆ9€€ÔÔÝ(8€B€ˆ9€€ÔÔ%à6 i°!¡mÐ6Ð6Ð6€B€ˆ9€€ÑÝ)€B€ˆ9€€ÔÔÝ$/€B€ˆ9€€ÔÔ!Ý)€B€ˆ9€€ÔÔÝ(8€B€ˆ9€€ÔÔ%à<ð 6ð 6ˆÝ)5ˆˆcÐ�9ÐÐÔÔ&Ð&Ø*,€BÔ�iÔ Ô'ð ØØØØØØØØð
ð 
€Fð $Ÿ\š\™^œ^ð 7ð 7Ñˆ
�EØ16ˆÔ˜ZÔ(Ô.Ð.ð7ð 7ó    N)r   r   r   r   )Ú
__future__r   Útypingr   Úapp.common.excel_stylerr   r   r   r   r	   r
   r   r   r   r   r   r   r   r   Úboq_rate_breakdown_servicer   rp   © rq   ro   ú<module>rw      s  ðØ "Ð "Ð "Ð "Ð "Ð "à Ð Ð Ð Ð Ð ðð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð" ?Ð >Ð >Ð >Ð >Ð >ðT7ð T7ð T7ð T7ð T7ð T7rq   