§
    ÔŸ’jã  ã                  óØ   — d dl mZ d dlZd dlmZ d dlmZ ddlmZ ddl	m
Z
 ddlmZ dd	lmZ dd
lmZ ddlmZ ddlmZ ddlmZ ddlmZ  ej        d¦  «        Z G d„ d¦  «        ZdS )é    )ÚannotationsN)Údate)ÚDecimalé   )Úround_decimal)ÚCATALOG_SAND)ÚCATALOG_STONE)ÚCATALOG_EQUIPMENT_FUEL)ÚCATALOG_BRICK_INFRA)ÚCATALOG_LABOR_ARTISANS)ÚCATALOG_LABOR_WAGES)ÚCATALOG_PRECAST)ÚCATALOG_STEELzdscons.state_price_sync.seederc                  ó   — e Zd ZdZdd„ZdS )ÚStatePriceSeederMixinuA   Mixin for seeding official SXD Háº£i PhÃ²ng state price database.ÚreturnÚintc                óZ  — t           t          z   t          z   t          z   t          z   t
          z   t          z   t          z   }g }|D ]^}t          |¦  «        }d|d<   |d         dvr)t          |d         t          d¦  «        z  d¦  «        |d<   |                     |¦  «         Œ_|                     |¦  «         dt          d	d
d¦  «        dt          d¦  «        fdt          d	dd¦  «        dt          d¦  «        fdt          d	dd¦  «        dt          d¦  «        fdt          ddd¦  «        dt          d¦  «        fg}|D ]Ú\  }}}}	t          |d d…         ¦  «        D ]»}t          |¦  «        }
||
d<   ||
d<   ||
d<   |d         dk    r^|dk    rt          d ¦  «        |
d<   na|dk    rt          d!¦  «        |
d<   nH|dk    rt          d"¦  «        |
d<   n/t          d#¦  «        |
d<   nt          |d         |	z  d¦  «        |
d<   |                     |
¦  «         Œ¼ŒÛd$}|                      ¦   «         5 }|                     ¦   «         5 }|D ]„}|                     d%|d         |d         |d         |d&         |d'         |                     d(¦  «        |d)         |d         |d         |d         |                     d*¦  «        f¦  «         |dz  }Œ…|                     ¦   «          d d d ¦  «         n# 1 swxY w Y   d d d ¦  «         n# 1 swxY w Y   t(                               d+|¦  «         |S ),NÚHAI_PHONG_KHU_VUC_1Úregion_codeÚmaterial_group)ÚFUEL_OILÚLABORÚstate_unit_price_vndz1.035é   z2026-07iê  é   r   u@   ThÃ´ng bÃ¡o giÃ¡ sá»‘ 15/TB-LS TC-XD Háº£i PhÃ²ng thÃ¡ng 07/2026z0.985z2026-06é   u@   ThÃ´ng bÃ¡o giÃ¡ sá»‘ 12/TB-LS TC-XD Háº£i PhÃ²ng thÃ¡ng 06/2026z0.970z2026-05é   u@   ThÃ´ng bÃ¡o giÃ¡ sá»‘ 10/TB-LS TC-XD Háº£i PhÃ²ng thÃ¡ng 05/2026z0.965z2025-12ié  é   u@   ThÃ´ng bÃ¡o giÃ¡ sá»‘ 24/TB-LS TC-XD Háº£i PhÃ²ng thÃ¡ng 12/2025z0.940é7   Úpublish_periodÚeffective_dateÚdocument_referencer   z20500.00z20100.00z19800.00z19200.00r   aÁ  
                        INSERT INTO erp_state_published_prices (
                            id, publish_period, region_code, material_group, material_code,
                            material_name, specifications, unit, state_unit_price_vnd,
                            document_reference, effective_date, notes, created_at, updated_at
                        ) VALUES (
                            gen_random_uuid(), %s, %s, %s, %s,
                            %s, %s, %s, %s,
                            %s, %s, %s, NOW(), NOW()
                        )
                        ON CONFLICT (publish_period, region_code, material_code)
                        DO UPDATE SET
                            material_name = EXCLUDED.material_name,
                            specifications = EXCLUDED.specifications,
                            unit = EXCLUDED.unit,
                            state_unit_price_vnd = EXCLUDED.state_unit_price_vnd,
                            document_reference = EXCLUDED.document_reference,
                            effective_date = EXCLUDED.effective_date,
                            notes = EXCLUDED.notes,
                            updated_at = NOW();
                    Úmaterial_codeÚmaterial_nameÚspecificationsÚunitÚnotesz<Successfully seeded/synced %d State published price records.)r   r	   r   r   r   r
   r   r   Údictr   r   ÚappendÚextendr   ÚlistÚget_connectionÚcursorÚexecuteÚgetÚcommitÚloggerÚinfo)ÚselfÚofficial_catalogÚregion_1_catalogÚitemÚr1_itemÚperiods_configÚp_codeÚp_dateÚp_docÚp_factorÚnew_itemÚinserted_countÚconnÚcurÚrows                  ú:C:\Projects\DSCons\app\services\state_price_sync\seeder.pyÚseed_official_state_pricesz0StatePriceSeederMixin.seed_official_state_prices   sg  € åÝñåñõ ñõ "ñ	"õ
 %ñ%õ "ñ"õ %ñ%ð 	ð ÐØ$ð 	-ð 	-ˆDÝ˜4‘j”jˆGØ%:ˆG�MÑ"ØÐ$Ô%Ð-BÐBÐBÝ2?ØÐ/Ô0µ7¸7Ñ3CÔ3CÑCÀQñ3ô 3�Ð.Ñ/ð ×#Ò# GÑ,Ô,Ð,Ð,à×ÒÐ 0Ñ1Ô1Ð1ð
 Ý�T˜1˜aÑ Ô ØRÝ˜Ñ Ô ð	ð Ý�T˜1˜aÑ Ô ØRÝ˜Ñ Ô ð	ð Ý�T˜1˜aÑ Ô ØRÝ˜Ñ Ô ð	ð Ý�T˜2˜qÑ!Ô!ØRÝ˜Ñ Ô ð	ð'
ˆð6 0>ð 	2ð 	2Ñ+ˆF�F˜E 8ÝÐ-¨c¨r¨cÔ2Ñ3Ô3ð 2ð 2�Ý ™:œ:�Ø-3�Ð)Ñ*Ø-3�Ð)Ñ*Ø16�Ð-Ñ.ØÐ(Ô)¨ZÒ7Ð7Ø Ò*Ð*Ý;BÀ:Ñ;NÔ;N˜Ð!7Ñ8Ð8Ø 9Ò,Ð,Ý;BÀ:Ñ;NÔ;N˜Ð!7Ñ8Ð8Ø 9Ò,Ð,Ý;BÀ:Ñ;NÔ;N˜Ð!7Ñ8Ð8å;BÀ:Ñ;NÔ;N˜Ð!7Ñ8Ð8å7DØÐ3Ô4°xÑ?Àñ8ô 8�HÐ3Ñ4ð !×'Ò'¨Ñ1Ô1Ð1Ð1ð%2ð( ˆØ× Ò Ñ"Ô"ð (	 dØ—’‘”ð ' #Ø+ð %(ð %(�CØ—K’Kðð,  Ð 0Ô1Ø Ô.ØÐ 0Ô1Ø Ô0Ø Ô0ØŸGšGÐ$4Ñ5Ô5Ø œKØÐ 6Ô7ØÐ 4Ô5ØÐ 0Ô1ØŸGšG GÑ,Ô,ðñ-#ô #ð #ðH # aÑ'�N�NØ—’‘”�ðO'ð 'ð 'ñ 'ô 'ð 'ð 'ð 'ð 'ð 'ð 'øøøð 'ð 'ð 'ð 'ð(	ð (	ð (	ñ (	ô (	ð (	ð (	ð (	ð (	ð (	ð (	øøøð (	ð (	ð (	ð (	õR 	�ŠØJØñ	
ô 	
ð 	
ð Ðs7   È1LÉBK.Ë"LË.K2	Ë2LË5K2	Ë6LÌL	ÌL	N)r   r   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__rD   © ó    rC   r   r      s4   € € € € € ØKÐKðxð xð xð xð xð xrJ   r   )Ú
__future__r   ÚloggingÚdatetimer   Údecimalr   Ú
comparisonr   Úseed_data_aggregates_sandr   Úseed_data_aggregates_stoner	   Úseed_data_equipment_fuelr
   Úseed_data_infra_brickr   Úseed_data_labor_artisansr   Úseed_data_labor_wagesr   Úseed_data_precastr   Úseed_data_steelr   Ú	getLoggerr2   r   rI   rJ   rC   ú<module>rY      s5  ðØ "Ð "Ð "Ð "Ð "Ð "à €€€Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð à %Ð %Ð %Ð %Ð %Ð %Ø 3Ð 3Ð 3Ð 3Ð 3Ð 3Ø 5Ð 5Ð 5Ð 5Ð 5Ð 5Ø <Ð <Ð <Ð <Ð <Ð <Ø 6Ð 6Ð 6Ð 6Ð 6Ð 6Ø <Ð <Ð <Ð <Ð <Ð <Ø 6Ð 6Ð 6Ð 6Ð 6Ð 6Ø .Ð .Ð .Ð .Ð .Ð .Ø *Ð *Ð *Ð *Ð *Ð *à	ˆÔ	Ð;Ñ	<Ô	<€ð{ð {ð {ð {ð {ñ {ô {ð {ð {ð {rJ   