+
    `Øj  ã                   óª  € ^ RI HtHt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 ^ RIHt ^ R	IHtHtHtHtHt ^ R
IHtHt ^ RIHt ]! RR.R7      t]P=                  R4      ]! ]4      3R R ll4       t]PA                  R4      ]! ]4      ]! ]4      3R R ll4       t!]PA                  R4      ]! ]4      ]! ]4      3R R ll4       t"R# )é    )Ú	APIRouterÚDependsÚHTTPException©ÚAsyncSession)Úselect)Úselectinload)Úget_db)Úget_current_user)Ú
LoginUsers)ÚChassisMaster)ÚDealerOrderVehicleÚDealerOrderÚDealerOrderVehicleFeatureÚSpecialFeatureMasterÚSpecialFeatureOptionMaster)ÚBulkEngineRunRequestÚBulkSimulateRequest)ÚBulkProcurementEngineServicez/bulk-enginezProcurement Bulk Engine)ÚprefixÚtagsz/pending-chassisc                ó$   € V ^8„  d   QhR\         /# )é   Údbr   )Úformats   "ÚL/var/www/html/audi_dev/backend/app/modules/procurement/bulk_engine_routes.pyÚ__annotate__r      s   € ÷ ñ ¤,ñ ó    c           
   ƒ  ó   "  € \        \        4      P                  \        P                  R8H  4      P	                  \        \        P                  4      P                  \        P                  4      \        \        P                  4      P                  \        P                  4      \        \        P                  4      P                  \        P                  4      \        \        P                  4      P                  \        P                  4      P                  \        P                  4      \        \        P                  4      P                  \        P                  4      P                  \        P                   4      \        \        P                  4      P                  \        P                  4      P                  \        P"                  4      4      pV P%                  V4      G Rj  x€L
 pVP'                  4       P)                  4       #  L"5i)zMReturns all chassis in PROCUREMENT_PENDING status to be shown in the UI grid.ÚPROCUREMENT_PENDINGN)r   r   ÚwhereÚprocurement_statusÚoptionsr	   Údealer_order_vehicler   ÚmodelÚ	body_typeÚsegmentÚorderr   ÚdealerÚfeaturesr   Úfeature_masterÚoptionÚexecuteÚscalarsÚall)r   ÚstmtÚress   &  r   Úget_pending_chassisr2      s€  é € ô 	Œ}Óß	‰Œ}×/Ñ/Ð3HÑHÓ	Iß	‰Üœ×;Ñ;Ó<×IÑIÔJ\×JbÑJbÓcÜœ×;Ñ;Ó<×IÑIÔJ\×JfÑJfÓgÜœ×;Ñ;Ó<×IÑIÔJ\×JdÑJdÓeÜœ×;Ñ;Ó<×IÑIÔJ\×JbÑJbÓc×pÑpÔq|÷  rDñ  rDó  EÜœ×;Ñ;Ó<×IÑIÔJ\×JeÑJeÓf×sÑsô  uN÷  u]ñ  u]ó  ^Üœ×;Ñ;Ó<×IÑIÔJ\×JeÑJeÓf×sÑsô  uN÷  uUñ  uUó  Vó

ð 	ð —
‘
˜4Ó ×
 €CØ�;‰;‹=×ÑÓÐñ !ùs   ‚G'HÇ)HÇ*#Hz	/simulatec                ó0   € V ^8„  d   QhR\         R\        /# )r   Úrequestr   )r   r   )r   s   "r   r   r   #   s    € ÷ Bñ BÜ ðBäñBr   c              ƒ  ój   "  € \        V4      pVP                  V P                  4      G Rj  x€L
 #  L5i)z@Simulate BOM check against available stock for multiple chassis.N)r   Úsimulate_bulk_checkÚchassis_ids)r4   r   Ú_Úservices   &&& r   Úsimulate_bulk_enginer:   "   s.   é € ô +¨2Ó.€GØ×,Ñ,¨W×-@Ñ-@ÓA×AÐAÑAùs   ‚*3¬1­3z/runc                ó<   € V ^8„  d   QhR\         R\        R\        /# )r   r4   r   Úcurrent_user)r   r   r   )r   s   "r   r   r   -   s+   € ÷ Añ AÜ!ðAäðAô ñAr   c              ƒ  ót  "  € \        V4      p VP                  WP                  4      G Rj  x€L
 pVP                  4       G Rj  x€L
  V#  L L  \         d    TP                  4       G Rj  x€L 
  h \         d7   pTP                  4       G Rj  x€L 
  \	        RR\        T4       24      hRp?ii ; i5i)zâ
Executes the massive atomic transaction:
- Calculates BOM for all chassis
- Reserves available stock
- Saves ChassisBomSnapshot with reserved_qty
- Applies buffer to shortages
- Creates RmPurchaseRequest (Indents) per vendor
Niô  zBulk Engine Error: )r   Úrun_bulk_engineÚuser_idÚcommitr   ÚrollbackÚ	ExceptionÚstr)r4   r   r<   r9   ÚresultÚes   &&&   r   Úbulk_run_procurement_enginerF   ,   s    é € ô +¨2Ó.€Gð	AØ×.Ñ.¨w×8LÑ8LÓM×MˆØ�i‰i‹k×ÐØˆñ NÙøäô Ø�k‰k‹m×ÑØÜô AØ�k‰k‹m×ÑÜ˜CÐ#6´s¸1³v°hÐ!?Ó@Ð@ûðAüsh   ‚B8�A ­A®A ÁAÁA ÁB8ÁA ÁA ÁB5Á.A1Á/B5Á>B5Á?B0ÂBÂB0Â0B5Â5B8N)#Úfastapir   r   r   Úsqlalchemy.ext.asyncior   Ú
sqlalchemyr   Úsqlalchemy.ormr	   Úapp.core.databaser
   Úapp.core.securityr   Úapp.models.core_modelsr   Úapp.models.yard_modelsr   Úapp.models.dealer_modelsr   r   r   r   r   Ú+app.modules.procurement.bulk_engine_schemasr   r   Ú+app.modules.procurement.bulk_engine_servicer   ÚrouterÚgetr2   Úpostr:   rF   © r   r   Ú<module>rV      sÇ   ðß 5Ñ 5Ý /Ý Ý 'å $Ý .Ý -Ý 0÷ Rõ  Rß aÝ Tá	˜.Ð0IÐ/JÔ	K€à‡�ÐÓÙ18¸³ö ó  ðð" ‡�ˆ[Óñ ˜v“ÙÐÓöBó ðBð ‡�ˆVÓñ ˜v“Ù&Ð'7Ó8öAó òAr   