§
     ’jS!  ã                  ób   — d dl mZ 	 d dlZd dlmZ  ej        e¦  «        Z G d„ d¦  «        ZdS )é    )ÚannotationsN)ÚAnyc                  ó   — e Zd ZdZdd„ZdS )	ÚInvoiceAnalyticsEquipmentMixinz;Mixin for syncing invoices to machinery and equipment logs.Ú
invoice_idÚstrÚreturnúdict[str, Any]c                óÒ  ‡— ddl m}  |¦   «         }|                      |¦  «        }|st          d¦  «        ‚|                     dg ¦  «        }|                     dd¦  «        }|                     dd¦  «        }|                     dd¦  «        }|                     d	d¦  «        }	|                     d
¦  «        }
d}g }|                      ¦   «         5 }|                     ¦   «         5 }|                     d¦  «         |                     ¦   «         }|rt          |d         ¦  «        nd}|r|nH|                     d¦  «        pd|› �dd|                     dd¦  «        |                     dd¦  «        dœg}t          |d¦  «        D �]\  }}|                     dd¦  «        Š|                     ‰|                     dd¦  «        |                     dd¦  «        |                     dd¦  «        |                     dd¦  «        |¬¦  «        }|d         dv st          ˆfd„dD ¦   «         ¦  «        �r_|                     d¦  «        pd }|d!v rd"nd#}|                     d$|f¦  «         |                     ¦   «         d%         dz   }|› d&|                     ¦   «         dd'…         › d&|d(›�}d)d*d+d,d-d.d/d0d1d2d3d4d1d/d4d5œ}d6d7d8d9d:d;œ}|                     d<||‰||                     d=‰dd>…         ¦  «        |                     |d4¦  «        |                     |d?¦  «        |
d@|› d&|› dA|	› dB|› dC�	||› d&|› �t          |                     d¦  «        p|                     dd¦  «        ¦  «        |f¦  «         |dz  }|                     |‰|dDœ¦  «         �Œ|                     ¦   «          ddd¦  «         n# 1 swxY w Y   ddd¦  «         n# 1 swxY w Y   dEdF|› dG|› d&|› dH�||dIœS )Juy   Ä�á»“ng bá»™ cÃ¡c máº·t hÃ ng mÃ¡y mÃ³c / thiáº¿t bá»‹ trong hÃ³a Ä‘Æ¡n sang phÃ¢n há»‡ quáº£n lÃ½ ca mÃ¡y erp_equipment.r   )ÚInvoiceTruthExtractionServiceu1   KhÃ´ng tÃ¬m tháº¥y hÃ³a Ä‘Æ¡n cáº§n Ä‘á»“ng bá»™.ÚitemsÚseller_nameÚ Úinvoice_seriesÚinvoice_numberÚ
issue_dateÚmatched_project_idz SELECT id FROM companies LIMIT 1ÚidNÚnotesu   HÃ ng hÃ³a thiáº¿t bá»‹ tá»« u   Chiáº¿cé   Úsubtotal_amount_vndÚtotal_amount_vnd)Ú	item_nameÚunitÚquantityÚunit_price_vndÚtotal_item_amount_vndr   r   r   r   r   )r   r   r   Ú
unit_priceÚtotal_amountr   Úclassification)ÚOWNED_EQUIPMENTÚ
POWER_TOOLc              3  óD   •K  — | ]}|‰                      ¦   «         v V — Œd S )N)Úlower)Ú.0ÚkÚit_names     €ú]C:\Projects\DSCons\app\modules\invoices\application\invoice_processing\analytics_equipment.pyú	<genexpr>zKInvoiceAnalyticsEquipmentMixin.sync_invoice_to_equipment.<locals>.<genexpr>H   sD   øè è € ð ð àð ˜WŸ]š]™_œ_Ð,ðð ð ð ð ð ó    )u   mÃ¡yÚxeÚthacoÚvolvoÚkomatsuÚhowou   hÃ nÚkhoanu   cáº¯tu   Ä‘áº§mu	   nÃ©n khÃ­u   phÃ¡t Ä‘iá»‡nÚequipment_typeÚother)Úconcrete_cutterÚsteel_benderÚwelderÚdrillÚ	compactorÚ
compressorÚ	generatorzEQ-TOOLzEQ-TRUTHzCSELECT count(*) as cnt FROM erp_equipment WHERE equipment_type = %sÚcntú-é   Ú03di S i`Ì i â i h iÀ'	 i�Ð iðI i0W i ¿ i q ià" i@ )Ú	excavatorÚ	bulldozerÚrollerÚtruckÚcraner9   ÚmixerÚpumpr3   r4   r5   r6   r7   r8   r2   g     €0@g      (@g      @gÍÌÌÌÌÌü?g      @)r>   rA   r3   r7   r9   aX  
                            INSERT INTO erp_equipment (
                                company_id, equipment_code, equipment_name, equipment_type,
                                brand_model, ownership_type, hourly_rate_standard, fuel_norm_per_hour,
                                current_project_id, status, notes,
                                purchase_invoice_id, purchase_invoice_series_number,
                                purchase_cost_vnd, supplier_name, created_at, updated_at
                            ) VALUES (
                                %s, %s, %s, %s,
                                %s, 'owned', %s, %s,
                                %s, 'available', %s,
                                %s, %s,
                                %s, %s, NOW(), NOW()
                            )
                            ON CONFLICT (equipment_code) DO UPDATE
                            SET equipment_name = EXCLUDED.equipment_name,
                                purchase_cost_vnd = EXCLUDED.purchase_cost_vnd,
                                purchase_invoice_id = EXCLUDED.purchase_invoice_id,
                                purchase_invoice_series_number = EXCLUDED.purchase_invoice_series_number,
                                supplier_name = EXCLUDED.supplier_name,
                                updated_at = NOW();
                        Úbrand_modelé2   g        u   Ä�á»“ng bá»™ tá»« HÄ� u    ngÃ y u    tá»« ú.)ÚcodeÚnameÚtypeÚsuccessu   Ä�Ã£ Ä‘á»“ng bá»™ u(    mÃ¡y mÃ³c/thiáº¿t bá»‹ tá»« hÃ³a Ä‘Æ¡n u,    sang phÃ¢n há»‡ Ca MÃ¡y & Thiáº¿t Bá»‹ ERP.)ÚstatusÚmessageÚsynced_countÚ	equipment)ÚAapp.modules.invoices.application.invoice_truth_extraction_servicer   Úget_invoice_detailÚ
ValueErrorÚgetÚget_connectionÚcursorÚexecuteÚfetchoner   Ú	enumerateÚclassify_itemÚanyÚupperÚfloatÚappendÚcommit)Úselfr   r   Útruth_serviceÚdetailr   ÚsellerÚseriesÚinv_numr   Úproj_idrN   Úequipment_createdÚconnÚcurÚc_rowÚcomp_idÚitems_to_checkÚidxÚitr    Úeq_typeÚprefixr:   Úeq_codeÚrate_mapÚfuel_mapr'   s                              @r(   Úsync_invoice_to_equipmentz8InvoiceAnalyticsEquipmentMixin.sync_invoice_to_equipment   sÖ  ø€ ð	
ð 	
ð 	
ð 	
ð 	
ð 	
ð 6Ð5Ñ7Ô7ˆà×(Ò(¨Ñ4Ô4ˆØð 	RÝÐPÑQÔQÐQà—
’
˜7 BÑ'Ô'ˆØ—’˜M¨2Ñ.Ô.ˆØ—’Ð,¨bÑ1Ô1ˆØ—*’*Ð-¨rÑ2Ô2ˆØ—Z’Z ¨bÑ1Ô1ˆ
Ø—*’*Ð1Ñ2Ô2ˆàˆØÐà× Ò Ñ"Ô"ð S	 dØ—’‘”ð R #Ø—’Ð>Ñ?Ô?Ð?ØŸš™œ�Ø.3Ð=�#˜e DœkÑ*Ô*Ð*¸�ð ð�E�Eð *0¯ª°GÑ)<Ô)<ð *HØG¸vÐGÐGØ$-Ø()Ø.4¯jªjÐ9NÐPQÑ.RÔ.RØ5;·Z²ZÐ@RÐTUÑ5VÔ5Vðð ð	ð õ  )¨¸Ñ;Ô;ð |ñ |‘G�C˜Ø Ÿfšf [°"Ñ5Ô5�GØ%2×%@Ò%@Ø")ØŸVšV F¨IÑ6Ô6Ø!#§¢¨
°AÑ!6Ô!6Ø#%§6¢6Ð*:¸AÑ#>Ô#>Ø%'§V¢VÐ,CÀQÑ%GÔ%GØ$*ð &Añ &ô &�Nð &Ð&6Ô7ð <ð ð õ ð ð ð ð ð"ðñ ô ñ ô ñð( #1×"4Ò"4Ð5EÑ"FÔ"FÐ"QÈ'˜ð  'ð ð	 ð 	 ð &˜Ið ",ð ð ŸšØaØ$˜Jñô ð ð "Ÿlšl™nœn¨UÔ3°aÑ7˜Ø%+Ð"MÐ"M¨g¯mªm©o¬o¸b¸q¸bÔ.AÐ"MÐ"MÀCÐ"MÐ"MÐ"M˜ð *0Ø)/Ø&,Ø%+Ø%+Ø)/Ø%+Ø$*Ø/5Ø,2Ø&,Ø%+Ø)/Ø*0Ø%+ð$ð $˜ð$ *.Ø%)Ø/2Ø),Ø),ð$ð $˜ð Ÿšðð. !(Ø 'Ø 'Ø 'Ø .× 2Ò 2°=À'È#È2È#Ä,Ñ OÔ OØ (§¢¨W°fÑ =Ô =Ø (§¢¨W°cÑ :Ô :Ø 'Ø m¸Ð mÐ mÀ'Ð mÐ mÐR\Ð mÐ mÐdjÐ mÐ mÐ mØ *Ø#)Ð 5Ð 5¨GÐ 5Ð 5Ý %Ø$&§F¢FÐ+BÑ$CÔ$Cð %IØ'-§z¢zÐ2DÀaÑ'HÔ'Hñ!"ô !"ð !'ð!ñ/)ô )ð )ðT %¨Ñ)˜Ø)×0Ò0Ø%,°gÀwÐOÐOñô ð ùð —’‘”�ðeRð Rð Rñ Rô Rð Rð Rð Rð Rð Rð Røøøð Rð Rð Rð RðS	ð S	ð S	ñ S	ô S	ð S	ð S	ð S	ð S	ð S	ð S	øøøð S	ð S	ð S	ð S	ðl  ð a¨Lð  að  aÐbhð  að  aÐkrð  að  að  aØ(Ø*ð	
ð 
ð 	
s7   ÃOÃ(KN6Î*OÎ6N:	Î:OÎ=N:	Î>OÏOÏON)r   r   r	   r
   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__rs   © r*   r(   r   r      s4   € € € € € ØEÐEðp
ð p
ð p
ð p
ð p
ð p
r*   r   )	Ú
__future__r   ÚloggingÚtypingr   Ú	getLoggerrt   Úloggerr   rx   r*   r(   ú<module>r~      s…   ðØ "Ð "Ð "Ð "Ð "Ð "à 2ð €€€Ø Ð Ð Ð Ð Ð à	ˆÔ	˜8Ñ	$Ô	$€ðs
ð s
ð s
ð s
ð s
ñ s
ô s
ð s
ð s
ð s
r*   