+
    `Øj[  ã                   óâ   € ^ RI t ^ RIHt ^ RIHt ^ RIHt ^ RIHt ^ RI	H
t
 ^ RIHt ^ RIHtHt ^ R	IHtHtHtHtHtHtHt ^ R
IHtHtHt ^ RIHtHt ^ RIH t H!t!H"t" ^ RI#H$t$  ! R R4      t%R# )é    N)ÚDecimal)Údefaultdict©ÚAsyncSession)Úselect)Úselectinload)ÚHTTPException)ÚChassisMasterÚVehicleModelMaster)ÚRmInventoryÚRmMasterÚRmVendorMappingÚStationMasterÚRmPurchaseOrderÚ
RmPoDetailÚVendorMaster)ÚRmPurchaseRequestÚRmPurchaseRequestDetailÚChassisBomSnapshot)ÚDealerOrderVehicleÚDealerOrderVehicleFeature)ÚProductMasterÚ	BomMasterÚSpecialFeatureBom)ÚBulkEngineRunRequestc                   óh   a € ] tR t^t o V 3R lR ltV 3R lR ltV 3R lR ltV 3R lR ltR	tV t	R
# )ÚBulkProcurementEngineServicec                ó    <€ V ^8„  d   QhRS[ /# )é   Údbr   )ÚformatÚ__classdict__s   "€ÚM/var/www/html/audi_dev/backend/app/modules/procurement/bulk_engine_service.pyÚ__annotate__Ú)BulkProcurementEngineService.__annotate__   s   ø€ ÷ ñ ™<ñ ó    c                ó   € Wn         R # ©N©r    )Úselfr    s   &&r#   Ú__init__Ú%BulkProcurementEngineService.__init__   s   € ØŽr&   c                ó:   <€ V ^8„  d   QhRS[ P                  RS[/# )r   Ú
chassis_idÚreturn)ÚuuidÚUUIDÚdict)r!   r"   s   "€r#   r$   r%      s#   ø€ ÷ Jñ J¹T¿Y¹Yð JÉ4ñ Jr&   c              ƒ  óZ  "  € V P                   P                  \        V4      G Rj  x€L
 pV'       d   VP                  '       g%   \	        RRV'       d   VP
                  MT R24      hV P                   P                  \        VP                  4      G Rj  x€L
 pV'       g   \	        RRVP
                   R24      h^ RIHpH	p V P                   P                  \        VP                  4      G Rj  x€L
 pV P                   P                  WCP                  4      G Rj  x€L
 pV P                   P                  WSP                  4      G Rj  x€L
 pV'       d   V'       d	   V'       g   \	        RRVP
                   R	24      h/ p	\        \        4      P!                  \        P"                  P%                  R
VP"                   R
24      4      P!                  \        P"                  P%                  R
VP"                   R
24      4      P!                  \        P"                  P%                  R
VP&                   R
24      4      p
V P                   P)                  V
4      G Rj  x€L
 pVP+                  4       P-                  4       pV'       gB   \	        RRVP"                   RVP"                   RVP&                   RVP
                   R2	4      h\        \.        4      P!                  \.        P0                  VP0                  8H  4      P3                  \5        \.        P6                  4      4      pV P                   P)                  V4      G Rj  x€L
 pVP+                  4       P-                  4       pV'       g(   \	        RRVP"                   RVP
                   R24      hVP6                   F@  pVP8                  R3pV	P                  V\;        R4      4      VP<                  ,           V	V&   KB  	  \        \>        4      P!                  \>        P@                  VP@                  8H  4      pV P                   P)                  V4      G Rj  x€L
 pVP+                  4       PC                  4        EF  pVPD                  '       Ed   ^ RIH#p V P                   P                  VVPD                  4      G Rj  x€L
 pV'       d   RVPH                   2MRp\        \J        4      P!                  \J        PL                  VPD                  8H  4      pV P                   P)                  V4      G Rj  x€L
 pVP+                  4       PC                  4        F@  pVP8                  V3pV	P                  V\;        R4      4      VP<                  ,           V	V&   KB  	  EK%  \O        VRR4      '       g   EK;  ^ RIH(pH#p VPR                  '       d/   V P                   P                  VVPR                  4      G Rj  x€L
 MRpV'       d   \O        VR\O        VRR4      4      MRpRV 2pV P                   P)                  \        VPL                  4      P!                  VPR                  VPR                  8H  4      P!                  VPH                  PU                  . RO4      4      4      G Rj  x€L
 P+                  4       PC                  4       pV'       g   EKY  \        \J        4      P!                  \J        PL                  PU                  V4      4      pV P                   P)                  V4      G Rj  x€L
 pVP+                  4       PC                  4        F@  pVP8                  V3pV	P                  V\;        R4      4      VP<                  ,           V	V&   KB  	  EK  	  V	#  EL_ ELò EL™ ELo ELE EL4 ELN ELX ELò EL€ ELÀ EL L‘5i)z_Explodes the BOM for a single chassis. Returns a dict of (rm_id, category) -> Decimal quantity.Né�  zChassis z) is not linked to a Dealer Order Vehicle.z)Dealer Order Vehicle missing for Chassis Ú.)ÚBodyTypeMasterÚCustomerSegmentMasterz#Incomplete master data for Chassis z( (Model, Body Type, or Segment missing).Ú%zNo Product Match found for z - z on Chassis zNo BOM defined for product z
 (Chassis z).zBase BOMÚ0)ÚSpecialFeatureOptionMasterz	Feature: zSpecial FeatureÚ
bool_value)ÚSpecialFeatureMasterr:   Úfeature_nameÚname)ÚRequiredÚYesÚTrueÚ1)+r    Úgetr
   Údealer_order_vehicle_idr	   Ú
chassis_nor   Úapp.models.dealer_modelsr6   r7   r   Úmodel_idÚbody_type_idÚ
segment_idr   r   Úwherer>   ÚilikeÚmodel_numberÚexecuteÚscalarsÚfirstr   Ú
product_idÚoptionsr   ÚdetailsÚrm_idr   Úquantityr   Úorder_vehicle_idÚallÚfeature_option_idr:   Úoption_valuer   Ú	option_idÚgetattrr<   Ú
feature_idÚin_)r*   r.   ÚchassisÚdovr6   r7   ÚmodelÚ	body_typeÚsegmentÚrequired_bomsÚ	prod_stmtÚprod_resÚproductÚbom_stmtÚbom_resÚbase_bomÚdetÚkeyÚ	feat_stmtÚfeat_resÚfeatr:   ÚoptionÚcat_nameÚsf_stmtÚsf_resÚsfr<   Úfeature_masterr=   Úopt_idss   &&                             r#   Úget_chassis_bom_requirementsÚ9BulkProcurementEngineService.get_chassis_bom_requirements   s  é € àŸ™Ÿ™¤M°:Ó>×>ˆß˜g×=×=Ð=Ü  xÇg°×0BÒ0BÐS]Ð/^ð  _Hð  &Ió  Jð  Jà—G‘G—K‘KÔ 2°G×4SÑ4SÓT×TˆßÜ Ð'PÐQX×QcÑQcÐPdÐdeÐ%fÓgÐgçRØ—g‘g—k‘kÔ"4°c·l±lÓC×CˆØŸ'™'Ÿ+™+ n×6FÑ6FÓG×Gˆ	ØŸ™Ÿ™Ð$9¿>¹>ÓJ×JˆçŸ)¯Ü Ð'JÈ7×K]ÑK]ÐJ^ð  _Gð  &Hó  Ið  Iàˆô ”=Ó!ß‰U”=×%Ñ%×+Ñ+¨a°	·±Ð/?¸qÐ,AÓBÓCß‰U”=×%Ñ%×+Ñ+¨a°·±¨~¸QÐ,?Ó@ÓAß‰U”=×%Ñ%×+Ñ+¨a°×0BÑ0BÐ/CÀ1Ð,EÓFÓGð	 	ð Ÿ™Ÿ™¨Ó3×3ˆØ×"Ñ"Ó$×*Ñ*Ó,ˆçÜ Ð'BÀ9Ç>Á>ÐBRÐRUÐV]×VbÑVbÐUcÐcfÐgl×gyÑgyÐfzð  {Gð  HO÷  HZñ  HZð  G[ð  [\ð  &]ó  ^ð  ^äœ)Ó$×*Ñ*¬9×+?Ñ+?À7×CUÑCUÑ+UÓV×^Ñ^Ô_kÔlu×l}Ñl}Ó_~ÓˆØŸ™Ÿ™¨Ó1×1ˆØ—?‘?Ó$×*Ñ*Ó,ˆçÜ Ð'BÀ7Ç<Á<À.ÐPZÐ[b×[mÑ[mÐZnÐnpÐ%qÓrÐrà×#Ô#ˆCØ—9‘9˜jÐ)ˆCØ!.×!2Ñ!2°3¼À»Ó!EÈÏÉÕ!TˆM˜#Óñ $ô Ô4Ó5×;Ñ;Ô<U×<fÑ<fÐjm×j~Ñj~Ñ<~Óˆ	ØŸ™Ÿ™¨Ó3×3ˆØ×$Ñ$Ó&×*Ñ*×,ˆDØ×%×%Ñ%ÝOØ#Ÿw™wŸ{™{Ð+EÀt×G]ÑG]Ó^×^�ß@F˜Y v×':Ñ':Ð&;Ñ<ÐL]�ä Ô!2Ó3×9Ñ9Ô:K×:UÑ:UÐY]×YoÑYoÑ:oÓp�Ø#Ÿw™wŸ™¨wÓ7×7�Ø Ÿ.™.Ó*×.Ñ.Ö0�BØŸ8™8 XÐ.�CØ)6×):Ñ):¸3ÄÈÃÓ)MÐPR×P[ÑP[Õ)[�M #Ó&ô 1ô ˜˜|¨T×2Õ2ßeØ]a×]l×]lÐ]l t§w¡w§{¡{Ð3GÈÏÉÓ'Y×!YÐ!YÐrv�÷ Mœw ~°~ÄwÈ~Ð_eÐgxÓGyÔzð  Sd�Ø& | nÐ5�à!%§¡§¡ÜÐ5×?Ñ?Ó@ß‘UÐ5×@Ñ@ÀDÇOÁOÑSÓTß‘UÐ5×BÑB×FÑFÒGgÓhÓió"÷ ÷ ‘7“9ŸS™S›Uð	 ÷
 ’7Ü$Ô%6Ó7×=Ñ=Ô>O×>YÑ>Y×>]Ñ>]Ð^eÓ>fÓg�GØ#'§7¡7§?¡?°7Ó#;×;�FØ$Ÿn™nÓ.×2Ñ2Ö4˜Ø!Ÿx™x¨Ð2˜Ø-:×->Ñ->¸sÄGÈCÃLÓ-QÐTV×T_ÑT_Õ-_˜ cÓ*ô 5ñ3 -ð: ÐòQ ?ò Uò
 DÚGÚJò 4ò 2ò 4ò _ò 8ò "Zòñ <ùs?  ‚$^+¦^§^+³^+ÁA^+Â^Â^+Â#A^+Ã2^Ã3,^+Ä^Ä ,^+Å^Å^+Å^+Å!^+Å)C7^+É ^É!)^+ÊB>^+Í	^Í
)^+Í4C^+Ñ^ÑA(^+Ò+^Ò,^+Ò8A(^+Ô ^ Ô!A9^+Ö ^+Ö:)^+×#^#×$^+×2B ^+Ú^&Ú%^+Ú>A^+Ü^)ÜA.^+Þ^+Þ^+Þ^+Þ^+Þ^+Þ^+Þ^+Þ^+Þ ^+Þ#^+Þ&^+Þ)^+c                óJ   <€ V ^8„  d   QhRS[ S[P                  ,          RS[/# )r   Úchassis_idsr/   )Úlistr0   r1   r2   )r!   r"   s   "€r#   r$   r%   _   s'   ø€ ÷ P
ñ P
±T¹$¿)¹)µ_ð P
Éñ P
r&   c           "   ƒ  ó€  "  € V'       g   R. RR/# \        \        4      P                  \        P                  P	                  V4      4      P                  \        \        P                  4      P                  \        P                  4      \        \        P                  4      P                  \        P                  4      4      pV P                  P                  V4      G Rj  x€L
 p/ p/ pVP                  4       P                  4        Fà  pVP                  WFP                  &   VP                  '       d=   VP                  P                  '       d!   VP                  P                  P                   MRpVP                  '       d=   VP                  P                  '       d!   VP                  P                  P                   MRpV'       g   V'       g   KÍ  V RV 2WVP                  &   Kâ  	  \#        \$        4      p	\#        \&        4      p
V F  pVP)                  V\+        V4      4      pV P-                  V4      G Rj  x€L
 pVP/                  4        F4  w  w  rïpWžV3;;,          V,          uu&   \1        V4      W®V3,          V&   K6  	  K�  	  V	'       g   R. RR/# . p\3        \5        V	P7                  4        Uu. uF  pV^ ,          NK  	  up4      4      p\        \8        4      P                  \8        P:                  P	                  V4      4      pV P                  P                  V4      G Rj  x€L
 pVP                  4       P                  4        Uu/ uF  pVP:                  VbK  	  pp\        \<        4      P                  \<        P:                  P	                  V4      4      pV P                  P                  V4      G Rj  x€L
 pVP                  4       P                  4        Uu/ uF  pVP:                  VbK  	  ppVP?                  4        Uu0 uF#  pVP@                  '       g   K  VP@                  kK%  	  pp/ pV'       d—   \        \B        4      P                  \B        P@                  P	                  V4      4      pV P                  P                  V4      G Rj  x€L
 pVP                  4       P                  4        U u/ uF  p V P@                  V bK  	  pp \        \D        P:                  \F        P                   PI                  R4      \D        PJ                  \D        PL                  \N        PP                  4      PS                  \N        \N        PT                  \D        PT                  8H  4      PS                  \F        \F        PV                  \N        PV                  8H  4      P                  \D        P:                  P	                  V4      \D        PX                  R8g  4      P[                  \N        P\                  P_                  4       4      p!V P                  P                  V!4      G Rj  x€L
 p"V"P                  4       p#\#        \$        4      p$\#        \$        4      p%/ p&/ p'V# EFU  p(T$V(P:                  ;;,          V(PJ                  ;'       g    \%        R	4      ,          uu&   \a        \%        R	4      V(PL                  ;'       g    \%        R	4      V(PJ                  ;'       g    \%        R	4      ,
          4      p)V%V(P:                  ;;,          V),          uu&   V(P:                  V&9  d,   V(Pb                  '       d   V(Pb                  V&V(P:                  &   V(PP                  '       g   EK  V(P:                  V'9  g&   V(PP                  V'V(P:                  ,          8  g   EK<  V(PP                  V'V(P:                  &   EKX  	  \        \d        P:                  \F        P                   4      PS                  \F        \F        PV                  \d        PV                  8H  4      P                  \d        P:                  P	                  V4      \d        Pf                  R8H  4      p*V P                  P                  V*4      G Rj  x€L
 p+V+P                  4        F  w  p,p-V,V&9  g   K  V-V&V,&   K  	  V	P/                  4        EF  w  w  rïp.VP)                  V4      pV'       g   K$  VP)                  V4      p/VP@                  '       d   VP)                  VP@                  4      MRp0V/'       dM   \1        V/Ph                  ;'       g    \%        R	4      V/Pj                  ;'       g    \%        R	4      ,
          4      MR
p1\1        V.4      p2V1V28  d
   V2V1,
          MR
p3V/'       d)   \1        V/Pl                  ;'       g    \%        R	4      4      MR
p4\1        V%P)                  V\%        R	4      4      4      ;'       g    T4p5\1        V$P)                  V\%        R	4      4      4      p6V&P)                  VR4      p7V'P)                  V4      p8TPo                  RTRVP                   RVPp                  RV0'       d   V0Pr                  MRRVPt                  ;'       g    RRT2RT1RT3RT7RT6RT5RV8'       d   V8Pw                  4       MRRVRV
P)                  Wï3/ 4      /4       EK  	  \x        ;QJ d    R V 4       F  '       g   K   RM	  RM! R V 4       4      p9RVRVRV9'       * /#  E
L. ELÔu upi  ELéu upi  EL[u upi u upi  EL‹u up i  EL EL¾5i)zDSimulate the BOM check against available stock for multiple chassis.Ú	bom_itemsÚcan_proceedTNÚ u    â€¢ Úsupplier_nameÚ	CANCELLEDr9   g        u   â€”rS   Úrm_nameÚrm_codeÚstation_nameÚ
UnassignedÚunit_of_measureÚNOSÚrequired_qtyÚavailable_qtyÚshortage_qtyÚreceived_rm_qtyÚpending_po_qtyÚexpected_delivery_dateÚcategoryÚchassis_breakdownc              3   ó8   "  € T F  qR ,          ^ 8„  x € K  	  R# 5i)rˆ   N© )Ú.0Úitems   & r#   Ú	<genexpr>ÚCBulkProcurementEngineService.simulate_bulk_check.<locals>.<genexpr>ê   s   é € ÐLÁ¸ Õ0°1Ö4Ãùs   ‚FÚchassis_labels)=r   r
   rJ   r.   r\   rQ   r   Údealer_order_vehicler   r`   ra   r    rM   rN   rV   rE   r>   r   r   r2   rC   Ústrru   ÚitemsÚfloatry   ÚsetÚkeysr   rS   r   ÚvaluesÚ
station_idr   r   r   ÚlabelÚreceived_qtyÚ	order_qtyr   r‹   ÚjoinÚpo_idÚ	vendor_idÚline_statusÚorder_byÚ
created_atÚdescÚmaxr~   r   Ú	is_activeÚcurrent_qtyÚreserved_qtyÚin_transit_qtyÚappendÚpart_nor‚   Úunit_of_measurementÚ	isoformatÚany):r*   rx   Úchassis_stmtÚchassis_resÚchassis_mapr”   ÚcÚbtÚsegÚconsolidatedÚ	breakdownr.   rE   ÚreqsrS   rŒ   ÚqtyÚ
simulationÚkÚrm_idsÚrm_stmtÚrm_resÚrmÚrmsÚinv_stmtÚinv_resÚinvÚinventoriesÚstation_idsÚstationsÚst_stmtÚst_resÚstÚpo_stmtÚpo_resÚpo_rowsÚrm_po_receiptsÚrm_pending_poÚrm_po_suppliersÚrm_delivery_datesÚrowÚopen_qtyÚmap_stmtÚmap_resÚrm_id_mÚv_namer†   Ú	inventoryÚstationÚ	availableÚrequiredÚshortageÚin_transit_invÚ
pending_porž   r~   Úexp_dateÚhas_shortagess:   &&                                                        r#   Úsimulate_bulk_checkÚ0BulkProcurementEngineService.simulate_bulk_check_   s�  é € çØ  ]°DÐ9Ð9ô ”=Ó!ß‰U”=×+Ñ+×/Ñ/°Ó<Ó=ß‰WÜœ]×?Ñ?Ó@×MÑMÔN`×NjÑNjÓkÜœ]×?Ñ?Ó@×MÑMÔN`×NhÑNhÓióð 	ð !ŸG™GŸO™O¨LÓ9×9ˆàˆØˆØ×$Ñ$Ó&×*Ñ*Ö,ˆAØ()¯©ˆKŸ™Ñ%Ø:;×:P×:PÐ:PÐUV×UkÑUk×Uu×UuÐUu�×'Ñ'×1Ñ1×6Ò6Ð{}ˆBØ9:×9O×9OÐ9OÐTU×TjÑTj×Tr×TrÐTr�!×(Ñ(×0Ñ0×5Ò5ÐxzˆCß—S‘SØ24°°U¸3¸%Ð/@�Ÿ|™|Ó,ñ -ô #¤7Ó+ˆÜ¤Ó%ˆ	ã%ˆJØ$Ÿ™¨´S¸³_ÓEˆJØ×:Ñ:¸:ÓF×FˆDØ*.¯*©*®,Ñ&Ñ!� 3Ø XÐ.×/°3Õ6Ó/Ü;@À»:�	 (Ð+Õ,¨ZÓ8ó +7ñ &÷ Ø  ]°DÐ9Ð9àˆ
Ü”c¨×):Ñ):Ô)<Ó=Ñ)< A˜1˜QŸ4˜4Ñ)<Ñ=Ó>Ó?ˆô œÓ"×(Ñ(¬¯©×);Ñ);¸FÓ)CÓDˆØ—w‘w—‘ wÓ/×/ˆØ&,§n¡nÓ&6×&:Ñ&:Ô&<Ó=Ñ&< ˆr�x‰x˜Š|Ñ&<ˆÐ=äœ+Ó&×,Ñ,¬[×->Ñ->×-BÑ-BÀ6Ó-JÓKˆØŸ™Ÿ™¨Ó1×1ˆØ18·±Ó1B×1FÑ1FÔ1HÓIÑ1H¨#�s—y‘y #’~Ñ1HˆÐIð 03¯z©z¬|ÓM©|¨¸r¿}½}”}�r—}”}©|ˆÐMØˆßÜœ]Ó+×1Ñ1´-×2JÑ2J×2NÑ2NÈ{Ó2[Ó\ˆGØŸ7™7Ÿ?™?¨7Ó3×3ˆFØ4:·N±NÓ4D×4HÑ4HÔ4JÓKÑ4J¨b˜Ÿ™ rÒ)Ñ4JˆHÐKô Ü× Ñ Ü×!Ñ!×'Ñ'¨Ó8Ü×'Ñ'Ü×$Ñ$Ü×6Ñ6ó÷ ‰T”/¤?×#8Ñ#8¼J×<LÑ<LÑ#LÓMß‰T”,¤× 6Ñ 6¼/×:SÑ:SÑ SÓTß‰UÜ× Ñ ×$Ñ$ VÓ,Ü×&Ñ&¨+Ñ5ó÷ ‰X”o×0Ñ0×5Ñ5Ó7Ó8ð 	ð  —w‘w—‘ wÓ/×/ˆØ—*‘*“,ˆä$¤WÓ-ˆÜ#¤GÓ,ˆØˆØÐäˆCØ˜3Ÿ9™9×%¨×)9Ñ)9×)IÐ)I¼WÀS»\ÕIÓ%Üœ7 3›<¨#¯-©-×*GÐ*G¼7À3»<ÈC×L\ÑL\×LlÐLlÔ`gÐhkÓ`lÕ)mÓnˆHØ˜#Ÿ)™)×$¨Õ0Ó$Ø�y‰y Ô/°C×4E×4EÐ4EØ-0×->Ñ->� §	¡	Ñ*Ø×)×)Ó)Ø—9‘9Ð$5Ô5¸×9SÑ9SÐVgÐhk×hqÑhqÕVr×9rØ36×3MÑ3MÐ% c§i¡iÔ0ñ ô ”?×(Ñ(¬,×*;Ñ*;Ó<ß‰T”,¤× 6Ñ 6¼/×:SÑ:SÑ SÓTß‰U”?×(Ñ(×,Ñ,¨VÓ4´o×6OÑ6OÐSWÑ6WÓXð 	ð
 Ÿ™Ÿ™¨Ó1×1ˆØ&Ÿ{™{ž}‰OˆG�VØ˜oÖ-Ø+1� Ó(ñ  -ð 0<×/AÑ/A×/CÑ+ÑˆU˜|Ø—‘˜“ˆBßÙà#Ÿ™¨Ó.ˆIØ57·]·]°]�h—l‘l 2§=¡=Ô1ÈˆGçu~œ˜y×4Ñ4×DÐD¼À»È×I_ÑI_×IoÐIoÔcjÐknÓcoÕpÔqð  EHˆIÜ˜\Ó*ˆHØ/8¸8Ô/C�x )Ö+ÈˆHçPYœU 9×#;Ñ#;×#KÐ#K¼wÀs»|ÔLÐ_bˆNÜ˜}×0Ñ0°¼À»ÓEÓF×XÐXÈ.ˆJÜ  ×!3Ñ!3°E¼7À3»<Ó!HÓIˆLØ+×/Ñ/°°uÓ=ˆMØ(×,Ñ,¨UÓ3ˆHà×ÑØ˜Ø˜2Ÿ7™7Ø˜2Ÿ:™:Ø¿ × 4Ò 4À\Ø! 2×#9Ñ#9×#BÐ#B¸UØ Ø Ø Ø Ø! <Ø  *Ø(Ç(¨(×*<Ñ*<Ô*>ÐPTØ˜HØ# Y§]¡]°EÐ3DÀbÓ%Ið÷ ñ% 0D÷F ›ÑLÁÓLŸŸšÑLÁÓLÓLˆà˜Ø˜nØ˜}Ô,ð
ð 	
ò} :ò  Gùò >ò 0ùÚ=ò 2ùÚIùò Nò 4ùÚKò& 0ò0 2ùs\  ‚C l>Ã"lÃ#A.l>Å3l>Æl>Æ")l>Çl>ÇA)l>È?lÉ Al>Ê$l>Ê<lËA$l>Ì2lÌ3$l>ÍlÍ-Al>Ïl#Ï	$l>Ï-l&Ðl>Ðl+Ð0l+Ñ A%l>Ò%l0Ò&$l>Ó
l3Ó El>Ø3l8Ø4A"l>Ú6l>Ûl>Û,Al>Ý(l>Ý20l>Þ(Cl>á=l;á>l>â!Al>ä$l>ä&l>ä>l>å<l>æl>æ1<l>ç.Bl>êl>ê;l>ël>ë.#l>ìl>ìl>ìl>ì&l>ì3l>ì;l>c                ó:   <€ V ^8„  d   QhRS[ RS[P                  /# )r   ÚrequestÚuser_id)r   r0   r1   )r!   r"   s   "€r#   r$   r%   ñ   s$   ø€ ÷ R<ñ R<Ñ-Að R<ÉDÏIÉIñ R<r&   c              ƒ  ór  "  € \        \        4      p\        R  4      pVP                   Fj  pV P                  V4      G Rj  x€L
 pVP	                  4        F:  w  w  rxp	WE,          Wx3;;,          V	,          uu&   W7V3;;,          V	,          uu&   K<  	  Kl  	  V'       g    \        VRR4      '       g   \        RR4      h\        VRR4      '       Ed(   \        R 4      p
\        \        \        VP                  4      4      4      p\        \        4      P                  \        P                  P                  VP                  4      4      pV P                  P                  V4      G Rj  x€L
 pVP!                  4       P#                  4        Uu/ uF  qîP$                  VP                  bK  	  ppVP&                   EF8  pVP(                  pVP*                  p\        VRR4      '       dq   VP,                  P	                  4        FP  w  ppVP/                  V4      pV'       g   K!  V
V,          Wx3;;,          \        \        V4      4      ,          uu&   KR  	  KŸ  \        \        VP0                  4      4      pVP/                  Wx3\        R4      4      pV\        R4      8X  dO   V^ 8”  d
   VV,          M
\        R4      pVP                   F   pV
V,          Wx3;;,          V,          uu&   K"  	  EK7  VP                   Uu. uF.  qäV,          P/                  Wx3\        R4      4      ^ 8”  g   K,  VNK0  	  ppV'       g   EK†  \        R4      p\3        V4       F˜  w  ppVV,          P/                  Wx3\        R4      4      pV\        V4      ^,
          8X  d   VV,
          pM1VV,          V,          P5                  \        R4      4      pVV,          pV
V,          Wx3;;,          V,          uu&   Kš  	  EK;  	  T
p\        \        4      p\        R	 4      pVP	                  4        FS  w  ppVP	                  4        F9  w  w  rxp	VV;;,          V	,          uu&   VV,          V;;,          V	,          uu&   K;  	  KU  	  \        \        4      p\7        VP9                  4       4      p \        \:        4      P                  \:        P(                  P                  V 4      4      P=                  4       p!V P                  P                  V!4      G Rj  x€L
 p"V"P!                  4       P#                  4        U#u/ uF  p#V#P(                  V#bK  	  p$p#\        \>        4      P                  \>        P(                  P                  V 4      4      p%V P                  P                  V%4      G Rj  x€L
 p&V&P!                  4       P#                  4        U'u/ uF  p'V'P(                  V'bK  	  p(p'\        \@        4      P                  \@        P(                  P                  V 4      4      P                  \@        PB                  R
8H  4      p)V P                  P                  V)4      G Rj  x€L
 p*/ p+V*P!                  4       P#                  4        F/  p,V,P(                  V+9  g   K  V,PD                  V+V,P(                  &   K1  	  VP                   EFP  pVV,          pRp-/ p.VP	                  4        EFj  w  ryV$P/                  V4      p/V/'       dD   V/PF                  ;'       g    \        R4      V/PH                  ;'       g    \        R4      ,
          M
\        R4      p0\K        \        R4      V04      p0\M        V	V04      p1V/'       d,   V/PH                  ;'       g    \        R4      V1,           V/n$        V(P/                  V4      p'\O        TTT	T1\        R4      V''       d   V'PP                  MRR7      p2V P                  PS                  V24       V	V1,
          p3V3^ 8”  g   EK.  VV;;,          V3,          uu&   R
p-V.P/                  V\        R4      4      V3,           V.V&   EKm  	  V P                  P/                  \        V4      G Rj  x€L
 p4V4'       g   EKÃ  V-'       d   R
p5V.P	                  4        FT  w  pp6V$P/                  V4      p#V#'       d    V#PT                  ;'       g    \        R4      M
\        R4      p7V7V68  g   KR  Rp5 M	  V5'       d   RMRV4n+        EKI  RV4n+        EKS  	  \        \        VPX                  4      4      \        R4      ,          p8VP                   Uu. uF  p\        V4      NK  	  p9pV'       Ede   \7        VP9                  4       4      p \        \@        4      P                  \@        P(                  P                  V 4      4      P                  \@        PB                  R
8H  4      p)V P                  P                  V)4      G Rj  x€L
 p*V*P!                  4       P#                  4       p:\        \6        4      p;V: F/  p<V;V<P(                  ,          P[                  V<PD                  4       K1  	  \        \6        4      p=VP	                  4        Fe  w  pp>V;P/                  V. 4      p?\        V?4      ^8X  d$   V=V?^ ,          ,          P[                  VV>34       KK  V=R,          P[                  VV>34       Kg  	  V=P	                  4        EFÎ  w  p@pA\        \\        4      P_                  \a        \\        Pb                  4      4      pBV@'       d6   XBP                  \\        Pd                  R8H  \\        PD                  X@8H  4      pBM4XBP                  \\        Pd                  R8H  \\        PD                  R8H  4      pBXBPg                  \\        Ph                  Pk                  4       4      Pm                  ^4      pBV P                  P                  VB4      G Rj  x€L
 pCVCPo                  4       pDVD'       * pEVE'       d‚   \]        R\p        Pr                  ! 4       Pt                  R,          Pw                  4        2RVX@R7      pDV P                  PS                  VD4       V P                  Py                  4       G Rj  x€L
  XE'       g(   XDPb                   UFu/ uF  pFVFP(                  VFbK  	  upFM/ pGXA Fë  w  pp>V>V>V8,          ,           pHVXG9   dƒ   XGV,          pIVI;Pz                  XH,          un=        VIP|                  '       g   . XIn>        V9 Uu. uF  qîXIP|                  9  g   K  VNK  	  pJpVJ'       d   XIP|                  XJ,           VIn>        K�  KŸ  \        XDP€                  VXHV9R\        VP                  4       R2R7      pIV P                  PS                  VI4       Kí  	  EKÑ  	  V P                  Py                  4       G Rj  x€L
  RRR^ /#  EL¶ EL‘u upi u upi  ELüu up#i  ELnu up'i  ELÀ EL¬u upi  EL% EL" EL…u upFi u upi  LH5i)c                  ó    € \        \        4      # r(   ©r   r   r�   r&   r#   Ú<lambda>Ú>BulkProcurementEngineService.run_bulk_engine.<locals>.<lambda>ô   s	   € ´;¼wÔ3Gr&   NÚ	final_bomr4   z3No BOM requirements found for the selected chassis.c                  ó    € \        \        4      # r(   rè   r�   r&   r#   ré   rê     s	   € ¼;ÄwÔ;Or&   r�   r9   z0.001c                  ó    € \        \        4      # r(   rè   r�   r&   r#   ré   rê   -  s	   € ¼ÄGÔ8Lr&   TF)r.   rS   rT   rª   Úconsumed_qtyrœ   ÚAWAITING_INBOUND_POÚSHORTAGE_HOLDÚPROCUREMENT_CHECKEDz100.0ÚPENDINGzPR-BULK-:Né   N)Úrequest_numberÚstatusÚrequested_byr¢   zBulk Engine Auto-Indent for z chassis)Ú
request_idrS   rˆ   Úaffected_chassisÚreasonrõ   ÚsuccessÚvendors_notified)Ar   r   rx   ru   r—   rZ   r	   r–   Úlenr   r
   rJ   r.   r\   r    rM   rN   rV   rE   rë   rS   rŒ   r�   rC   rº   Ú	enumerateÚquantizery   rš   r   Úwith_for_updater   r   r¨   r¢   r©   rª   r§   Úminr   rœ   Úaddr«   Úprocurement_statusÚbuffer_percentager¬   r   rQ   r   rR   rõ   r¤   r¥   r¦   ÚlimitÚscalar_one_or_noner0   Úuuid4ÚhexÚupperÚflushrˆ   rø   r   r÷   )Kr*   rä   rå   Úglobal_requiredÚchassis_required_mapr.   r¹   rS   rŒ   rº   Únew_chassis_required_mapÚnum_chassisÚc_stmtÚc_resr´   Úc_mapr‘   Úc_noÚb_qtyÚc_idÚnew_qtyÚold_qtyÚper_chassisÚcidÚchassis_listÚdistributedÚiÚorig_chassis_qtyÚadjusted_qtyÚflat_global_requiredÚflat_chassis_required_mapÚglobal_shortager½   rÂ   rÃ   rÄ   rÅ   r¾   r¿   rÀ   Ú
rm_mastersrÔ   rÕ   Úvendor_mapsÚvmÚchassis_has_shortageÚchassis_shortage_maprØ   rÚ   Úreserving_qtyÚsnapshotrÜ   r]   Úall_coveredÚ	short_qtyÚ
in_transitÚbuffer_multiplierÚaffected_chassis_listÚmappingsÚ
rm_vendorsÚmÚvendor_groupsrˆ   Úv_listr¢   Úgroup_shortagesÚstmtÚpr_resÚindentÚis_newÚdÚexisting_detailsÚbuffered_shortageÚdetailÚnew_chassissK   &&&                                                                        r#   Úrun_bulk_engineÚ,BulkProcurementEngineService.run_bulk_engineñ   sƒ  é € ä%¤gÓ.ˆÜ*Ñ+GÓHÐà!×-Ô-ˆJØ×:Ñ:¸:ÓF×FˆDØ*.¯*©*®,Ñ&Ñ!� 3Ø$Õ0°%Ð1B×CÀsÕJÓCØ¨Ð 1×2°cÕ9Õ2ó +7ñ .÷ ¤w¨w¸ÀT×'JÒ'JÜ Ð%ZÓ[Ð[ô �7˜K¨×.Ó.Ü'2Ñ3OÓ'PÐ$Ü!¤#¤c¨'×*=Ñ*=Ó&>Ó"?Ó@ˆKäœMÓ*×0Ñ0´×1IÑ1I×1MÑ1MÈg×NaÑNaÓ1bÓcˆFØŸ'™'Ÿ/™/¨&Ó1×1ˆEØ9>¿¹»×9LÑ9LÔ9NÓOÑ9N°A—\‘\ 1§<¡<Ò/Ñ9NˆEÐOà×)Õ)�ØŸ
™
�ØŸ=™=�ä˜4Ð!4°d×;Ò;Ø'+×'=Ñ'=×'CÑ'CÖ'E™˜˜eØ$Ÿy™y¨›˜ß™4Ø4°TÕ:¸EÐ;L×MÔQXÔY\Ð]bÓYcÓQdÕdÕMó (Fô
 &¤c¨$¯(©(£mÓ4�GØ-×1Ñ1°5Ð2CÄWÈSÃ\ÓR�Gà¤'¨#£,Ô.à?JÈQ¼ g°Ö&;ÔT[Ð\_ÓT`˜Ø#*×#6Ô#6˜CØ4°SÕ9¸5Ð:K×LÐP[Õ[ÕLô $7ð 4;×3FÒ3Fó  (LÑ3F¨aÐ_`ÕJa×JeÑJeÐglÐfwô  zAð  BEó  zFó  KGð  JKñ  KK¯¨Ñ3F˜ð  (Lß'š<Ü*1°#«,˜KÜ*3°LÖ*A¡  3Ø3GÈÕ3L×3PÑ3PÐRWÐQbÔdkÐloÓdpÓ3qÐ 0Ø#$¬¨LÓ(9¸AÕ(=Ô#=à3:¸[Õ3H¡Là4DÀwÕ4NÐQXÕ4X×3bÑ3bÔcjÐkrÓcsÓ3t LØ$/°<Õ$? KØ 8¸Õ =¸uÐ>O× PÐT`Õ `Õ Pô +Bñ/ *ðB $<Ð ô  +¬7Ó3ÐÜ$/Ñ0LÓ$MÐ!à-×3Ñ3Ö5‰IˆC�Ø*.¯*©*®,Ñ&Ñ!� 3Ø$ U×+¨sÕ2Ó+Ø)¨#Õ.¨u×5¸Õ<Õ5ó +7ñ 6ô &¤gÓ.ˆÜÐ*×/Ñ/Ó1Ó2ˆäœ+Ó&×,Ñ,¬[×->Ñ->×-BÑ-BÀ6Ó-JÓK×[Ñ[Ó]ˆØŸ™Ÿ™¨Ó1×1ˆØ18·±Ó1B×1FÑ1FÔ1HÓIÑ1H¨#�s—y‘y #’~Ñ1HˆÐIäœÓ"×(Ñ(¬¯©×);Ñ);¸FÓ)CÓDˆØ—w‘w—‘ wÓ/×/ˆØ-3¯^©^Ó-=×-AÑ-AÔ-CÓDÑ-C r�b—h‘h ’lÑ-Cˆ
ÐDô ”?Ó#ß‰U”?×(Ñ(×,Ñ,¨VÓ4Ó5ß‰U”?×,Ñ,°Ñ4Ó5ð 	ð
 Ÿ™Ÿ™¨Ó1×1ˆØˆØ—/‘/Ó#×'Ñ'Ö)ˆBØ�x‰x˜{Ö*Ø(*¯©�˜BŸH™HÓ%ñ *ð "×-Õ-ˆJØ,¨ZÕ8ˆDØ#(Ð Ø#%Ð Ø"Ÿj™jŸl‘
�Ø'ŸO™O¨EÓ2�	ßr{˜Y×2Ñ2×BÐB´g¸c³lÀy×G]ÑG]×GmÐGmÔahÐilÓamÖnô  BIð  JMó  BN�	Ü¤¨£¨iÓ8�	ä # C¨Ó 3�çØ.7×.DÑ.D×.TÐ.TÌÐPSËÐXeÕ-e�IÔ*à—^‘^ EÓ*�Ü-Ø)ØØ Ø!.Ü!(¨£ß02˜rŸ}š}¸ô�ð —‘—‘˜HÔ%à Õ.�Ø˜a—<Ø# E×*¨hÕ6Ó*Ø+/Ð(Ø2F×2JÑ2JÈ5ÔRYÐZ]ÓR^Ó2_ÐbjÕ2jÐ(¨Ô/ñ3 +ð6 !ŸG™GŸK™K¬°zÓB×BˆGßŠwç'à"&�KØ,@×,FÑ,FÖ,HÑ(˜˜yØ)Ÿo™o¨eÓ4˜ßMP c×&8Ñ&8×&HÐ&H¼GÀC»LøÔV]Ð^aÓVb˜
Ø%¨	Ö1Ø*/˜KÙ!ñ -I÷ KVÑ1FÐ[j�G×.à1F�G×.ñ[ .ô` $¤C¨×(AÑ(AÓ$BÓCÄgÈgÓFVÕVÐØ18×1DÒ1DÓ EÑ1D¨A¤ Q¦Ñ1DÐÐ Eçˆ?Ü˜/×.Ñ.Ó0Ó1ˆFä”Ó'ß‘”×,Ñ,×0Ñ0°Ó8Ó9ß‘”×0Ñ0°DÑ8Ó9ð ð
 !ŸG™GŸO™O¨HÓ5×5ˆGØ—‘Ó(×,Ñ,Ó.ˆHä$¤TÓ*ˆJÛ�Ø˜1Ÿ7™7Õ#×*Ñ*¨1¯;©;Ö7ñ ô (¬Ó-ˆMØ'6×'<Ñ'<Ö'>Ñ#��|Ø#Ÿ™¨¨rÓ2�Ü�v“; !Ô#Ø! &¨¥)Õ,×3Ñ3°U¸LÐ4IÖJà! $Õ'×.Ñ.°°|Ð/DÖEñ (?ð /<×.AÑ.A×.CÑ*�	˜?ÜÔ/Ó0×8Ñ8¼ÔFW×F_ÑF_Ó9`Óa�çØŸ:™:Ô&7×&>Ñ&>À)Ñ&KÔM^×MhÑMhÐluÑMuÓv‘DàŸ:™:Ô&7×&>Ñ&>À)Ñ&KÔM^×MhÑMhÐlpÑMpÓq�Dà—}‘}Ô%6×%AÑ%A×%FÑ%FÓ%HÓI×OÑOÐPQÓR�Ø#Ÿw™wŸ™¨tÓ4×4�Ø×2Ñ2Ó4�à#œ�ßÜ.Ø)1´$·*²*³,×2BÑ2BÀ2Õ2F×2LÑ2LÓ2NÐ1OÐ'PØ(Ø%,Ø"+ô	�Fð —G‘G—K‘K Ô'ØŸ'™'Ÿ-™-›/×)Ð)çOU¸¿ºÓ#G¹°1 A§G¡G¨Q¢J¹Ò#GÐ[]Ð ã+:Ñ'�E˜<Ø(4¸ÐGXÕ8XÕ(YÐ%àÐ 0Ô0Ø!1°%Õ!8˜Ø×+Ò+Ð/@Õ@Õ+Ø%×6×6Ð6Ø68˜FÔ3Ù2GÓ&lÑ2G¨QÐTZ×TkÑTkÑKk§q qÑ2G˜Ð&lß&Ø6<×6MÑ6MÐP[Õ6[˜FÖ3ñ 'ô "9Ø'-×'8Ñ'8Ø"'Ø):Ø-BØ%AÄ#Àg×FYÑFYÓBZÐA[Ð[cÐ#dô"˜ð Ÿ™Ÿ™ FÖ+ô' ,;ñ3 /Dð\ �g‰g�m‰m‹o×ÐØ˜)Ð%7¸Ð;Ð;òY Gò 2ùÚOùò, (Lò: 2ùÚIò 0ùÚDò 2òJ Cùò$ !Fò 6ò0 5ò *ùâ#Gùò 'mñ 	ùs…  ‚?x7Áw7ÁAx7Â C	x7Å)w:Å*$x7Æw=Æ-A3x7È%Cx7Ì )xÌ.xÌ4x7ÍG
x7ÔxÔ$x7Ô0x
ÕAx7Ö!xÖ"$x7×x×A;x7ÙxÙ5x7ÚA;x7Üx7Ü,Ax7ÞA?x7à
A$x7á.xá/	x7á>x7âAx7ã
x7ã*x7ã8Ax7åxå Bx7ç=x"ç>Hx7ðx%ð"x7ð'A<x7ò#x(ò$x7ò0x7ò>x+óAx7ô,x7ô7x0õx0õBx7÷,x5÷-x7÷:x7÷=x7ø
x7øx7øx7øx7ø%x7ø(x7ø+x7r)   N)
Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__r+   ru   rá   r;  Ú__static_attributes__Ú__classdictcell__)r"   s   @r#   r   r      s5   ø‡ € ÷ð ÷Jð J÷XP
ð P
÷dR<ö R<r&   r   )&r0   Údecimalr   Úcollectionsr   Úsqlalchemy.ext.asyncior   Ú
sqlalchemyr   Úsqlalchemy.ormr   Úfastapir	   Úapp.models.yard_modelsr
   r   Úapp.models.rm_modelsr   r   r   r   r   r   r   Úapp.models.procurement_modelsr   r   r   rF   r   r   Úapp.models.bom_modelsr   r   r   Ú+app.modules.procurement.bulk_engine_schemasr   r   r�   r&   r#   Ú<module>rN     sM   ðÛ Ý Ý #Ý /Ý Ý 'Ý !ß D÷ B÷  Bñ  Bß hÑ hß Rß MÑ MÝ L÷t<ó t<r&   