§
    t�’j;  ã                  óÄ   — U d dl mZ 	 d dlZd dlmZ  ej        d¦  «        Z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ddœdœZded<    G d„ d¦  «        Z	dS )é    )ÚannotationsN)ÚAnyzdscons.takeoff.statutory_costu5   CÃ´ng trÃ¬nh DÃ¢n dá»¥ng (NhÃ  vÄƒn hÃ³a, Trá»¥ sá»Ÿ)g333333@g333333ó?g      @g      @g       @g      @g      @)Úproject_type_nameÚk_CÚk_tamÚk_TTÚk_TLÚk_VATÚk_DP1Úk_DP2uN   CÃ´ng trÃ¬nh NÃ´ng nghiá»‡p & PTNT / Thá»§y lá»£i (KÃ¨, Cá»‘ng, KÃªnh mÆ°Æ¡ng)g      ð?g       @uF   CÃ´ng trÃ¬nh Giao thÃ´ng / Háº¡ táº§ng ká»¹ thuáº­t (Ä�Æ°á»�ng, Cáº§u)gÍÌÌÌÌÌ@u5   CÃ´ng trÃ¬nh CÃ´ng nghiá»‡p (NhÃ  xÆ°á»Ÿng, Kho bÃ£i)g      @)Úcivil_buildingÚhydraulic_culvertÚinfrastructure_transportÚ
industrialzdict[str, dict[str, float]]ÚSTATUTORY_COEFFICIENTSc                  óL   — e Zd ZdZeddd„¦   «         Ze	 	 	 ddd„¦   «         ZdS )ÚStatutoryCostSummaryEnginezRCalculates full statutory general cost summary according to Decree 206/2026/ND-CP.r   Údrawing_typeÚstrÚreturnúdict[str, Any]c                ó  — t          |pd¦  «                             ¦   «         }d|v sd|v sd|v sd|v sd|v rt          d         S d|v sd	|v sd
|v sd|v rt          d         S d|v sd|v rt          d         S t          d         S )NÚ ÚculvertÚ	hydraulicÚkeÚkenhÚ	revetmentr   Ú	transportÚroadÚbridgeÚ
giao_thongr   r   Úfactoryr   )r   Úlowerr   )Úclsr   Údt_keys      úPC:\Projects\DSCons\app\modules\takeoff\application\boq_statutory_cost_service.pyÚget_coefficientsz+StatutoryCostSummaryEngine.get_coefficients?   sÅ   € å�\Ð' RÑ(Ô(×.Ò.Ñ0Ô0ˆà˜ÐÐØ˜fÐ$Ð$Ø�vˆ~ˆ~Ø˜ÐÐØ˜fÐ$Ð$å)Ð*=Ô>Ð>à˜6Ð!Ð!Ø˜ÐÐØ˜6Ð!Ð!Ø˜vÐ%Ð%å)Ð*DÔEÐEØ˜VÐ#Ð# y°FÐ':Ð':Ý)¨,Ô7Ð7Ý%Ð&6Ô7Ð7ó    NTÚitemsúlist[dict[str, Any]]Úvat_rateúfloat | NoneÚinclude_contingencyÚboolc                ó
  — |                       |¦  «        }|�|n|d         }d}d}d}	d}
|D �]4}t          |                     d¦  «        pd¦  «        }t          |                     d¦  «        p|                     d¦  «        pd¦  «        }t          |                     d¦  «        p'|                     d¦  «        pt          ||z  d	¦  «        ¦  «        }t          |                     d
¦  «        pd¦  «        }t          |                     d¦  «        pd¦  «        }t          |                     d¦  «        pd¦  «        }||z   |z   d	k    r|||z  z  }|||z  z  }|	||z  z  }	nôddlm} |                     |                     dd¦  «        |                     dd¦  «        |                     dd¦  «        ||                     dd¦  «        ¬¦  «        }t          |                     d
¦  «        pd¦  «        }t          |                     d¦  «        pd¦  «        }t          |                     d¦  «        pd¦  «        }|||z  z  }|||z  z  }|	||z  z  }	|
|z  }
�Œ6t          |
d	¦  «        }
t          |d	¦  «        }t          |d	¦  «        }t          |	d	¦  «        }	t          |
|d         dz  z  d	¦  «        }t          |
|d         dz  z  d	¦  «        }t          |
|d         dz  z  d	¦  «        }||z   |z   }|
|z   }t          ||d         dz  z  d	¦  «        }|
|z   |z   }t          ||dz  z  d	¦  «        }||z   }|rt          ||d         dz  z  d	¦  «        nd} |rt          ||d         dz  z  d	¦  «        nd}!| |!z   }"||"z   }#ddd d!d"|
d#d$d%œd&d'd(d)|
d	k    r||
z  d*z  nd+d,›d-�|d.d/d%œd0d1d2d3|
d	k    r||
z  d*z  nd4d,›d-�|d.d5d%œd6d7d8d9|
d	k    r|	|
z  d*z  nd:d,›d-�|	d.d;d%œd<d=d>d?|d         |d         z   |d         z   d,›d@�|d#dAd%œdBdCdDdE|d         › d-�|d         › d-�|d.dFd%œdGdHdIdE|d         › d-�|d         › d-�|d.dJd%œdKdLdMdE|d         › d-�|d         › d-�|d.dNd%œdOdPdQdR|d         › d-�|d         › d-�|d#dSd%œdTdUdVdWdX|d#dYd%œdZd[d\d]|› d-�|› d-�|d#d^d%œd_d`dadbdX|d#dcd%œdddedfdg|d         |d         z   › d-�|d         |d         z   › d-�|"d#dh|d         › di|d         › dj�d%œdkdldmdndX|#d#d#dodpœ	g}$dq||dr         ds||
||||||"|#|$dtœS )uu\   Compute the full 9-row Statutory General Cost Summary Table (TH Kinh PhÃ­ XÃ¢y Dá»±ng 2026).Nr
   g        ÚquantityÚunit_price_vndÚ
unit_priceÚtotal_amount_vndÚtotalr   Úmaterial_cost_vndÚlabor_cost_vndÚequipment_cost_vndé   )ÚBoqRateBreakdownEngineÚ	item_namer   ÚcategoryÚunitÚm3Ú	norm_codezAF.11110)r;   r<   r=   Útotal_unit_pricer?   r   g      Y@r   r   r	   r   r   ÚIÚTu   CHI PHÃ� TRá»°C TIáº¾PzVL + NC + Mz100.0%TuT   Tá»•ng chi phÃ­ Váº­t liá»‡u, NhÃ¢n cÃ´ng, MÃ¡y thi cÃ´ng tá»« báº£ng bÃ³c tÃ¡ch BoQ)ÚindexÚcodeÚtitleÚcalculation_formulaÚcoefficient_strÚ
amount_vndÚ	is_headerÚnotesz1.1ÚVLu   Chi phÃ­ Váº­t liá»‡uu6   Theo Ä‘Æ¡n giÃ¡ TBG Sá»Ÿ XÃ¢y Dá»±ng Háº£i PhÃ²ng 2026éd   éA   z.1fú%Fu8   CÃ¡t vÃ ng 710k, Ä�Ã¡ 1x2 320k, Xi mÄƒng, ThÃ©p CB400...z1.2ÚNCu   Chi phÃ­ NhÃ¢n cÃ´ngu?   Theo Ä‘Æ¡n giÃ¡ nhÃ¢n cÃ´ng XD Háº£i PhÃ²ng (Thá»£ báº­c 3.5/7)é   u"   325.000 Ä‘/cÃ´ng thá»£ xÃ¢y dá»±ngz1.3ÚMu   Chi phÃ­ MÃ¡y thi cÃ´ngu6   Theo báº£ng giÃ¡ ca mÃ¡y & thiáº¿t bá»‹ thi cÃ´ng 2026é
   u;   MÃ¡y Ä‘Ã o 0.8m3, BÃºa rung, MÃ¡y lu, MÃ¡y trá»™n bÃª tÃ´ngÚIIÚGTu   CHI PHÃ� GIÃ�N TIáº¾Pu   C + T_táº¡m + TTz% TuD   Quy Ä‘á»‹nh táº¡i Nghá»‹ Ä‘á»‹nh 206/2026/NÄ�-CP & TT 38/2026/TT-BXDz2.1ÚCu   Chi phÃ­ chungzT * uE   Chi phÃ­ quáº£n lÃ½ doanh nghiá»‡p, ban Ä‘iá»�u hÃ nh cÃ´ng trÆ°á»�ngz2.2u   T_táº¡mu9   Chi phÃ­ nhÃ  táº¡m Ä‘á»ƒ á»Ÿ vÃ  Ä‘iá»�u hÃ nh thi cÃ´nguB   LÃ¡n tráº¡i, nhÃ  táº¡m chá»‰ huy, kho bÃ£i táº¡i hiá»‡n trÆ°á»�ngz2.3ÚTTuF   Chi phÃ­ má»™t sá»‘ cÃ´ng viá»‡c khÃ´ng xÃ¡c Ä‘á»‹nh tá»« thiáº¿t káº¿uK   Di chuyá»ƒn mÃ¡y mÃ³c, an toÃ n lao Ä‘á»™ng, thÃ­ nghiá»‡m hiá»‡n trÆ°á»�ngÚIIIÚTLu7   THU NHáº¬P CHá»ŠU THUáº¾ TÃ�NH TRÆ¯á»šC (Lá»¢I NHUáº¬N)z(T + GT) * u?   Lá»£i nhuáº­n Ä‘á»‹nh má»©c theo quy Ä‘á»‹nh cá»§a NhÃ  nÆ°á»›cÚIVÚGu$   CHI PHÃ� XÃ‚Y Dá»°NG TRÆ¯á»šC THUáº¾zT + GT + TLú-uM   Tá»•ng chi phÃ­ trá»±c tiáº¿p, giÃ¡n tiáº¿p vÃ  lá»£i nhuáº­n trÆ°á»›c thuáº¿ÚVÚVATu   THUáº¾ GIÃ� TRá»Š GIA TÄ‚NGzG * u<   Thuáº¿ suáº¥t GTGT theo quy Ä‘á»‹nh tÃ i chÃ­nh hiá»‡n hÃ nhÚVIÚG_xdu   CHI PHÃ� XÃ‚Y Dá»°NG SAU THUáº¾zG + VATu<   GiÃ¡ trá»‹ há»£p Ä‘á»“ng thi cÃ´ng xÃ¢y dá»±ng chÃ­nh thá»©cÚVIIÚG_dpu   CHI PHÃ� Dá»° PHÃ’NGzG_xd * u   Dá»± phÃ²ng phÃ¡t sinh (u    %) + Dá»± phÃ²ng trÆ°á»£t giÃ¡ (z%)ÚVIIIÚTOTALu+   Tá»”NG Dá»° TOÃ�N GÃ“I THáº¦U (GRAND TOTAL)zG_xd + G_dpu=   Tá»•ng má»©c Ä‘áº§u tÆ° gÃ³i tháº§u xÃ¢y dá»±ng hoÃ n chá»‰nh)	rC   rD   rE   rF   rG   rH   rI   Úis_grand_totalrJ   Úsuccessr   u:   Nghá»‹ Ä‘á»‹nh 206/2026/NÄ�-CP & ThÃ´ng tÆ° 38/2026/TT-BXD)ÚstatusÚproject_typer   Úlegal_basisÚvat_rate_pctÚtotal_direct_tÚtotal_indirect_gtÚstatutory_profit_tlÚcost_before_tax_gÚ
vat_amountÚcost_after_tax_gxdÚtotal_contingency_dpÚgrand_total_budgetÚ
table_rows)r(   ÚfloatÚgetÚroundÚboq_rate_breakdown_servicer:   Úbreakdown_item_rate)%r%   r*   r   r,   r.   ÚcoeffsÚactual_vat_rateÚtotal_vlÚtotal_ncÚtotal_mrj   ÚitmÚqtyÚu_priceÚtot_itemÚvl_itemÚnc_itemÚm_itemr:   ÚbrkÚvl_valÚnc_valÚm_valÚ
c_overheadÚt_tam_officeÚtt_unspecifiedrk   Útotal_t_plus_gtrl   rm   rn   ro   Úcontingency_dp1Úcontingency_dp2rp   rq   rr   s%                                        r'   Úcalculate_statutory_summaryz6StatutoryCostSummaryEngine.calculate_statutory_summaryU   sÅ  € ð ×%Ò% lÑ3Ô3ˆØ&.Ð&:˜(˜(ÀÀwÄˆð ˆØˆØˆØˆàð #	'ñ #	'ˆCÝ˜Ÿš 
Ñ+Ô+Ð2¨sÑ3Ô3ˆCÝ˜CŸGšGÐ$4Ñ5Ô5ÐU¸¿ºÀÑ9NÔ9NÐUÐRUÑVÔVˆGÝØ—’Ð*Ñ+Ô+ð +Ø—7’7˜7Ñ#Ô#ð+å˜˜w™¨Ñ*Ô*ñô ˆHõ ˜CŸGšGÐ$7Ñ8Ô8Ð?¸CÑ@Ô@ˆGÝ˜CŸGšGÐ$4Ñ5Ô5Ð<¸Ñ=Ô=ˆGÝ˜3Ÿ7š7Ð#7Ñ8Ô8Ð?¸CÑ@Ô@ˆFà˜Ñ  6Ñ)¨AÒ-Ð-Ø˜G c™MÑ)�Ø˜G c™MÑ)�Ø˜6 C™<Ñ'��àNÐNÐNÐNÐNÐNà,×@Ò@Ø!Ÿgšg k°2Ñ6Ô6Ø ŸWšW Z°Ñ4Ô4ØŸš ¨Ñ.Ô.Ø%,Ø!Ÿgšg k°:Ñ>Ô>ð Añ ô �õ ˜sŸwšwÐ':Ñ;Ô;ÐB¸sÑCÔC�Ý˜sŸwšwÐ'7Ñ8Ô8Ð?¸CÑ@Ô@�Ý˜cŸgšgÐ&:Ñ;Ô;ÐB¸sÑCÔC�Ø˜F S™LÑ(�Ø˜F S™LÑ(�Ø˜5 3™;Ñ&�à˜hÑ&ˆN‰Nå˜~¨qÑ1Ô1ˆÝ˜ 1Ñ%Ô%ˆÝ˜ 1Ñ%Ô%ˆÝ˜ Ñ#Ô#ˆõ ˜>¨V°E¬]¸UÑ-BÑCÀQÑGÔGˆ
Ý˜^¨v°g¬ÀÑ/FÑGÈÑKÔKˆÝ˜~°¸´À%Ñ1GÑHÈ!ÑLÔLˆØ&¨Ñ5¸ÑFÐð )Ð+<Ñ<ˆÝ# O°v¸f´~ÈÑ7MÑ$NÐPQÑRÔRÐð +Ð->Ñ>ÐATÑTÐõ Ð,°À%Ñ0GÑHÈ!ÑLÔLˆ
ð /°Ñ;Ðð
 #ð�EÐ$¨¨w¬¸%Ñ(?Ñ@À!ÑDÔDÐDàð 	ð #ð�EÐ$¨¨w¬¸%Ñ(?Ñ@À!ÑDÔDÐDàð 	ð
  /°Ñ@Ðð 0Ð2FÑFÐð
 ØØ1Ø'4Ø#+Ø,Ø!Øoð	ð 	ð ØØ0Ø'_ØJXÐ[\ÒJ\ÐJ\ x°.Ñ'@À3Ñ'FÐ'FÐbdÐ#lÐ#lÐ#lÐ#lØ&Ø"ØSð	ð 	ð ØØ/Ø'hØJXÐ[\ÒJ\ÐJ\ x°.Ñ'@À3Ñ'FÐ'FÐbdÐ#lÐ#lÐ#lÐ#lØ&Ø"Ø=ð	ð 	ð ØØ2Ø'_ØIWÐZ[ÒI[ÐI[ w°Ñ'?À#Ñ'EÐ'EÐacÐ#kÐ#kÐ#kÐ#kØ%Ø"ØVð	ð 	ð ØØ0Ø'9Ø&,¨U¤m°f¸W´oÑ&EÈÈvÌÑ&VÐ#_Ð#_Ð#_Ð#_Ø/Ø!Ø_ð	ð 	ð ØØ)Ø'>¨f°U¬mÐ'>Ð'>Ð'>Ø&,¨U¤mÐ#6Ð#6Ð#6Ø(Ø"Ø`ð	ð 	ð Ø!ØTØ'@¨f°W¬oÐ'@Ð'@Ð'@Ø&,¨W¤oÐ#8Ð#8Ð#8Ø*Ø"Ø]ð	ð 	ð ØØaØ'?¨f°V¬nÐ'?Ð'?Ð'?Ø&,¨V¤nÐ#7Ð#7Ð#7Ø,Ø"Øfð	ð 	ð ØØRØ'F°V¸F´^Ð'FÐ'FÐ'FØ&,¨V¤nÐ#7Ð#7Ð#7Ø1Ø!ØZð	ð 	ð ØØ?Ø'4Ø#&Ø/Ø!Øhð	ð 	ð ØØ6Ø'@¨oÐ'@Ð'@Ð'@Ø&5Ð#8Ð#8Ð#8Ø(Ø!ØWð	ð 	ð ØØ:Ø'0Ø#&Ø0Ø!ØWð	ð 	ð ØØ/Ø'U°¸´À6È'Ä?Ñ1RÐ'UÐ'UÐ'UØ&,¨W¤o¸¸w¼Ñ&GÐ#JÐ#JÐ#JØ2Ø!Øx°F¸7´OÐxÐxÐekÐlsÔetÐxÐxÐxð	ð 	ð  ØØFØ'4Ø#&Ø0Ø!Ø"&ØXð
ð 
ðGN
ˆ
ðb  Ø(Ø!'Ð(;Ô!<ØWØ+Ø,Ø!2Ø#6Ø!2Ø$Ø"4Ø$8Ø"4Ø$ð
ð 
ð 	
r)   )r   )r   r   r   r   )r   NT)
r*   r+   r   r   r,   r-   r.   r/   r   r   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__Úclassmethodr(   rŽ   © r)   r'   r   r   <   st   € € € € € Ø\Ð\àð8ð 8ð 8ð 8ñ „[ð8ð* ð -Ø!%Ø$(ð~
ð ~
ð ~
ð ~
ñ „[ð~
ð ~
ð ~
r)   r   )
Ú
__future__r   ÚloggingÚtypingr   Ú	getLoggerÚloggerr   Ú__annotations__r   r”   r)   r'   ú<module>r›      sA  ðØ "Ð "Ð "Ð "Ð "Ð "Ð "ðð €€€Ø Ð Ð Ð Ð Ð à	ˆÔ	Ð:Ñ	;Ô	;€ð UØØØØØØØð	ð 	ð nØØØØØØØð	ð 	ð fØØØØØØØð	!ð 	!ð UØØØØØØØð	ð 	ð?)7ð )7Ð ð )ð )ð )ñ )ðXX
ð X
ð X
ð X
ð X
ñ X
ô X
ð X
ð X
ð X
r)   