+
    `Øjq+  ã                   óN  € ^ RI HtHtHt ^ RIHt ^ RIHt ^ RIH	t	 ^ RI
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  ! R R]4      t ! R R]4      t ! R R]4      t ! R R]4      t ! R R]4      t  ! R R]4      t! ! R R]4      t" ! R R]4      t# ! R R]4      t$]! 4       t%]%PM                  R ^ÈR!7      ]! ]4      ]! ]! R"R#4      4      3R$ R% ll4       t']%PQ                  R&4      ]! ]4      ]! ]! R'R(4      4      3R) R* ll4       t)]%PQ                  R+]R,7      ]! ]4      ]! ]! R'R(4      4      3R- R. ll4       t*]%PM                  R/4      ]! ]4      ]! ]! R'R#4      4      3R0 R1 ll4       t+]%PM                  R24      ]! ]4      ]! ]! R'R#4      4      3R3 R4 ll4       t,]%PQ                  R54      ]! ]4      ]! ]! R'R(4      4      3R6 R7 ll4       t-]%PQ                  R8]]$,          R,7      ]! ]4      ]! ]! R'R(4      4      3R9 R: ll4       t.]%P_                  R;^ÌR!7      ]! ]4      ]! ]! R'R<4      4      3R= R> ll4       t0]%PQ                  R?4      ]! ]4      ]! ]! R'R(4      4      3R@ RA ll4       t1]%PQ                  RB4      ]! ]4      ]! ]! R'R(4      4      3RC RD ll4       t2]%PQ                  RE4      ]! ]4      ]! ]! R'R(4      4      3RF RG ll4       t3 ! RH RI]4      t4]%PM                  RJ4      ]! ]4      ]! ]! R'R#4      4      3RK RL ll4       t5RM# )Né    )Ú	APIRouterÚDependsÚHTTPException©ÚAsyncSession)Úselect)Úselectinload)ÚListÚOptional©ÚUUID)Údatetime)Úget_db)Úrequire_permission)ÚProcurementEngineService)ÚRmPurchaseRequest)Ú	BaseModel)ÚDecimalc                   ó,   a € ] tR t^t o V 3R ltRtV tR# )ÚChassisMoveRequestc                ó6   <€ V ^8„  d   Qh/ S[ S[,          ;R&   # ©é   Úchassis_ids©r
   r   )ÚformatÚ__classdict__s   "€ÚG/var/www/html/audi_dev/backend/app/modules/procurement/engine_routes.pyÚ__annotate__ÚChassisMoveRequest.__annotate__   ó   ø‡ ‚ Ù‘d•Ñò ó    © N©Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__annotate_func__Ú__static_attributes__Ú__classdictcell__©r   s   @r   r   r      ó   ø‡ ‡ „ r"   r   c                   óP   a € ] tR t^t o RtRtRtRtRtRt	Rt
RtRtV 3R ltRtV tR# )ÚBomItemSimulationNÚNOSu   â€”g        c                óF  <€ V ^8„  d   Qh/ S[ ;R&   S[S[,          ;R&   S[S[,          ;R&   S[S[,          ;R&   S[S[,          ;R&   S[;R&   S[;R&   S[;R&   S[S[,          ;R	&   S[S[,          ;R
&   S[S[,          ;R&   S[S[,          ;R&   S[S[,          ;R&   # )r   Úrm_idÚrm_codeÚrm_nameÚstation_nameÚunit_of_measureÚrequired_qtyÚavailable_qtyÚshortage_qtyÚsupplier_nameÚreceived_rm_qtyÚpending_po_qtyÚexpected_delivery_dateÚcategory)r   r   ÚstrÚfloat)r   r   s   "€r   r   ÚBomItemSimulation.__annotate__   sÍ   ø‡ ‚ Ù�Kñ á‘c�]Ñ!ñ ñ ‘c�]Ñ!ñ ñ ™3•-Ñ&ñ	 ñ
 ™c•]Ñ*ñ ñ Ññ ñ Ññ ñ Ññ ñ ™C•=Ñ(ñ ñ ™e•_Ñ*ñ ñ ™U•OÑ)ñ ñ %¡S�MÑ0ñ ñ ‘s�mÑ"ò r"   r#   )r%   r&   r'   r(   r3   r4   r5   r6   r:   r;   r<   r=   r>   r)   r*   r+   r,   s   @r   r/   r/      s<   ø‡ € à!€GØ!€GØ"&€LØ%*€Oð $)€MØ'*€OØ&)€NØ,0ÐØ"€H÷ ƒ r"   r/   c                   ó<   a € ] tR t^$t o RtRtRt. tV 3R ltRt	V t
R# )ÚProcurementSimulationResponseNFc                ó¢   <€ V ^8„  d   Qh/ S[ ;R&   S[S[,          ;R&   S[S[,          ;R&   S[;R&   S[S[,          ;R&   S[S[,          ;R&   # )r   Ú
chassis_idÚchassis_numberÚ
chassis_noÚcan_proceedÚhas_covered_shortagesÚ	bom_items)r   r   r?   Úboolr
   r/   )r   r   s   "€r   r   Ú*ProcurementSimulationResponse.__annotate__$   sa   ø‡ ‚ ÙÑñ á™S•MÑ(ñ ñ ™•Ñ$ñ ñ Ññ	 ñ
 $¡D�>Ñ1ñ ñ Ñ%Õ&Ñ+ò r"   r#   )r%   r&   r'   r(   rF   rG   rI   rJ   r)   r*   r+   r,   s   @r   rC   rC   $   s!   ø‡ € à$(€NØ $€Jà,1ÐØ)+€I÷ ƒ r"   rC   c                   ó,   a € ] tR t^,t o V 3R ltRtV tR# )ÚBomLineConfirmc                ó2   <€ V ^8„  d   Qh/ S[ ;R&   S[;R&   # )r   r2   Úqty)r   r   )r   r   s   "€r   r   ÚBomLineConfirm.__annotate__,   s   ø‡ ‚ Ù�Kñ á	�Lò r"   r#   Nr$   r,   s   @r   rN   rN   ,   r-   r"   rN   c                   ó,   a € ] tR t^0t o V 3R ltRtV tR# )ÚBulkProcurementRequestc                ó6   <€ V ^8„  d   Qh/ S[ S[,          ;R&   # r   r   )r   r   s   "€r   r   Ú#BulkProcurementRequest.__annotate__0   r!   r"   r#   Nr$   r,   s   @r   rS   rS   0   r-   r"   rS   c                   ó,   a € ] tR t^3t o V 3R ltRtV tR# )ÚAssignVendorRequestc                ó&   <€ V ^8„  d   Qh/ S[ ;R&   # )r   Ú	vendor_idr   )r   r   s   "€r   r   Ú AssignVendorRequest.__annotate__3   s   ø‡ ‚ Ù�Oò r"   r#   Nr$   r,   s   @r   rW   rW   3   r-   r"   rW   c                   ó0   a € ] tR t^6t o . tV 3R ltRtV tR# )ÚProcurementConfirmRequestc                óB   <€ V ^8„  d   Qh/ S[ ;R&   S[S[,          ;R&   # )r   rE   Ú	final_bom)r   r
   rN   )r   r   s   "€r   r   Ú&ProcurementConfirmRequest.__annotate__6   s    ø‡ ‚ ÙÑñ á‘NÕ#Ñ(ò r"   r#   N)r%   r&   r'   r(   r^   r)   r*   r+   r,   s   @r   r\   r\   6   s   ø‡ € à&(€I÷ ƒ r"   r\   c                   óD   a € ] tR t^:t o Rt ! R R4      tV 3R ltRtV tR# )ÚRmPurchaseRequestDetailResponseNc                   ó   € ] tR t^@tRtRtR# )z&RmPurchaseRequestDetailResponse.ConfigTr#   N©r%   r&   r'   r(   Úfrom_attributesr*   r#   r"   r   ÚConfigÚ&RmPurchaseRequestDetailResponse.Config@   ó   † ØŒr"   re   c                óZ   <€ V ^8„  d   Qh/ S[ ;R&   S[ ;R&   S[S[,          ;R&   S[;R&   # )r   Úrequest_detail_idr2   r4   r9   )r   r   r?   r   )r   r   s   "€r   r   Ú,RmPurchaseRequestDetailResponse.__annotate__:   s8   ø‡ ‚ ÙÑñ á�Kñ ñ ‘c�]Ñ!ñ ñ Ñò	 r"   r#   )	r%   r&   r'   r(   r4   re   r)   r*   r+   r,   s   @r   ra   ra   :   s   ø‡ € ð "€G÷ñ ÷ ƒ r"   ra   c                   óX   a € ] tR t^Ct o RtRtRtRtRt. t	 ! R R4      t
V 3R ltRtV tR# )ÚRmPurchaseRequestResponseNc                   ó   € ] tR t^LtRtRtR# )z RmPurchaseRequestResponse.ConfigTr#   Nrc   r#   r"   r   re   Ú RmPurchaseRequestResponse.ConfigL   rg   r"   re   c                óÎ   <€ V ^8„  d   Qh/ S[ ;R&   S[S[,          ;R&   S[S[ ,          ;R&   S[S[ ,          ;R&   S[S[,          ;R&   S[S[,          ;R&   S[S[,          ;R&   # )r   Ú
request_idÚrequest_numberrY   rE   ÚstatusÚ
created_atÚdetails)r   r   r?   r   r
   ra   )r   r   s   "€r   r   Ú&RmPurchaseRequestResponse.__annotate__C   sw   ø‡ ‚ ÙÑñ á™S•MÑ(ñ ñ ™�~Ñ$ñ ñ ™•Ñ%ñ	 ñ
 ‘S�MÑ ñ ñ ™Õ"Ñ)ñ ñ Ñ1Õ2Ñ7ò r"   r#   )r%   r&   r'   r(   rq   rY   rE   rr   rs   rt   re   r)   r*   r+   r,   s   @r   rl   rl   C   s4   ø‡ € à$(€NØ $€IØ!%€JØ €FØ%)€JØ57€G÷ñ ÷ ƒ r"   rl   z/chassis/move-to-check)Ústatus_codeÚ
PRODUCTIONÚeditc                ó0   € V ^8„  d   QhR\         R\        /# )r   ÚdataÚdb)r   r   )r   s   "r   r   r   R   s    € ÷ 	Wñ 	WÜ
ð	Wäñ	Wr"   c              ƒ  óÒ   "  € \        V4      pVP                  V P                  4      G Rj  x€L
  VP                  4       G Rj  x€L
  R\	        V P                  4       R2/#  L6 L 5i)z8Production moves chassis to the procurement check queue.NÚmessagez$ chassis moved to procurement queue.)r   Úmove_to_checkr   ÚcommitÚlen)rz   r{   Ú_Úservices   &&& r   r~   r~   Q   sa   é € ô ' rÓ*€GØ
×
Ñ
 × 0Ñ 0Ó
1×1Ð1Ø
�)‰)‹+×ÐØœ#˜d×.Ñ.Ó/Ð0Ð0TÐUÐVÐVñ 2Ùùs!   ‚*A'¬A#­A'ÁA%ÁA'Á%A'z/chassis/queueÚPROCUREMENTÚviewc                ó$   € V ^8„  d   QhR\         /# ©r   r{   r   )r   s   "r   r   r   ^   s   € ÷ ñ Üñr"   c              ƒ  óR  "  € \        V 4      pVP                  4       G Rj  x€L
 pV Uu. uEFk  pRVP                  RVP                  RVP                  R\        VRR4      '       dü   RVP                  '       d@   \        VP                  RR4      '       d#   RVP                  P                  P                  /MRRVP                  '       d@   \        VP                  RR4      '       d#   R	VP                  P                  P                  /MRR
VP                  '       d@   \        VP                  R
R4      '       d#   R	VP                  P                  P                  /MR/M2R\        VRR4      '       d   RVP                  P                  /MRRRR
R//NEKn  	  up#  EL~u upi 5i)z;Fetch the queue of chassis currently in Procurement Engine.NrE   rG   Úprocurement_statusÚdealer_order_vehicleÚmodelÚmodel_numberÚ	body_typeÚnameÚsegment)r   Ú	get_queuerE   rG   rˆ   Úgetattrr‰   rŠ   r‹   rŒ   r�   rŽ   ©r{   r�   r‚   ÚqueueÚcs   &&   r   r�   r�   ]   sá  é € ô ' rÓ*€GØ×#Ñ#Ó%×%€Eñ" óò ˆAð ˜!Ÿ,™,Ø˜!Ÿ,™,Ø  !×"6Ñ"6Ø"ô ˜Ð2°D×9Ò9ð ÐXY×Xn×XnÐXnÔszÐ{|÷  |Rñ  |Rð  T[ð  ]a÷  tbò  tb˜.¨!×*@Ñ*@×*FÑ*F×*SÑ*SÑTð  hlØÐPQ×Pf×PfÐPfÔkrÐst÷  tJñ  tJð  LWð  Y]÷  l^ò  l^˜f a×&<Ñ&<×&FÑ&F×&KÑ&KÑLð  dhØÈA×Lb×LbÐLbÔgnÐop÷  pFñ  pFð  HQð  SW÷  hXò  hX˜F A×$:Ñ$:×$BÑ$B×$GÑ$GÑHð  ^bñ%ð
 Ä7È1ÈgÐW[×C\ÒC\˜.¨!¯'©'×*>Ñ*>Ñ?ÐbfØ˜TØ˜4ð@ô	
ñ ñð ò &ùòùs6   ‚F'¡F¢F'ªAF"Á;AF"ÃAF"Ä!A;F"ÆF'Æ"F'z/chassis/{chassis_id}/simulate)Úresponse_modelc                ó0   € V ^8„  d   QhR\         R\        /# ©r   rE   r{   ©r   r   )r   s   "r   r   r   y   s   € ÷ 4ñ 4Üð4äñ4r"   c              ƒ  óV   "  € \        V4      pVP                  V 4      G Rj  x€L
 #  L5i)z/Explode BOM and simulate against current stock.N)r   Úsimulate_check©rE   r{   r�   r‚   s   &&& r   r™   r™   x   s(   é € ô ' rÓ*€GØ×'Ñ'¨
Ó3×3Ð3Ñ3ùó   ‚ )¢'£)z/chassis/{chassis_id}/confirmc                ó<   € V ^8„  d   QhR\         R\        R\        /# ©r   rE   rz   r{   )r   r\   r   )r   s   "r   r   r   ƒ   s&   € ÷ 0ñ 0Üð0ä
#ð0ô 	ñ0r"   c              ƒ  óÆ  "  € WP                   8w  d   \        RR4      h\        V4      p VP                  WP                  VP
                  4      G Rj  x€L
  VP                  4       G Rj  x€L
  RR/#  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)zlConfirm reservation with the finalized/edited BOM payload.

FLAW-01 FIX: Explicit commit/rollback wrapping.
i�  zChassis ID mismatchNéô  zReservation failed: r}   zReservation confirmed)
rE   r   r   Úconfirm_reservationr^   Úuser_idr   ÚrollbackÚ	Exceptionr?   )rE   rz   r{   Úuserr‚   Úes   &&&&  r   r    r    ‚   sÆ   é € ð —_‘_Ô$Ü˜CÐ!6Ó7Ð7ä& rÓ*€GðBØ×)Ñ)¨*·n±nÀdÇlÁlÓS×SÐSØ�i‰i‹k×Ðð Ð.Ð/Ð/ñ 	TÙøÜô Ø�k‰k‹m×ÑØÜô BØ�k‰k‹m×ÑÜ˜CÐ#7¼¸A»°xÐ!@ÓAÐAûðBüsj   ‚(C!«)A9 ÁA5ÁA9 Á,A7Á-A9 Á1C!Á5A9 Á7A9 Á9CÂBÂCÂ'CÂ(CÂ;B>Â<CÃCÃC!z1/requests/{request_id}/details/{detail_id}/assignc                óH   € V ^8„  d   QhR\         R\         R\        R\        /# )r   rp   Ú	detail_idÚreqr{   )r   rW   r   )r   s   "r   r   r   �   s0   € ÷ 
!ñ 
!Üð
!äð
!ô 
ð
!ô 	ñ	
!r"   c              ƒ  óŠ   "  € \        V4      pVP                  WVP                  VP                  4      G Rj  x€L
  RR/#  L5i)z7Assign an unassigned PR detail to a specific vendor PR.Nrr   Úsuccess)r   Úassign_vendor_to_pr_detailrY   r¡   )rp   r§   r¨   r{   r¤   r‚   s   &&&&& r   Úassign_vendorr¬   œ   sE   é € ô ' rÓ*€GØ
×
,Ñ
,¨ZÀCÇMÁMÐSW×S_ÑS_Ó
`×`Ð`Ø�iÐ Ð ñ aùs   ‚6A¸A¹	Az/rm/{rm_id}/vendorsc                ó0   € V ^8„  d   QhR\         R\        /# )r   r2   r{   r—   )r   s   "r   r   r   ª   s    € ÷ 	wñ 	wÜð	wäñ	wr"   c           
   ƒ  ó†  "  € ^ RI HpHp \        W44      P	                  WCP
                  VP
                  8H  4      P                  VP                  V 8H  4      pVP                  V4      G Rj  x€L
 pVP                  4        UUu. uF+  w  rxRVP
                  RVP                  RVP                  /NK-  	  upp#  LLu uppi 5i)z6Get vendors mapped to an RM with their standard costs.)ÚRmVendorMappingÚVendorMasterNrY   Úvendor_nameÚstandard_cost)Úapp.models.rm_modelsr¯   r°   r   ÚjoinrY   Úwherer2   ÚexecuteÚallr�   r²   )	r2   r{   r�   r¯   r°   ÚstmtÚresÚmÚvs	   &&&      r   Úget_rm_vendorsr¼   ©   s·   é € ÷ CÜ�/Ó0×5Ñ5°l×D]ÑD]Ðam×awÑawÑDwÓx×~Ñ~ð  @O÷  @Uñ  @Uð  Y^ñ  @^ó  _€DØ—
‘
˜4Ó ×
 €CØlo×lsÑlsÔluÔvÑluÑdhÐdeˆ[˜!Ÿ+™+ }°a·f±f¸oÈqÏÉÓ_ÑluÒvÐvñ !ùÛvùs$   ‚A*CÁ,B9Á-CÂ1B;Â5CÂ;Cz	/requestsc                ó$   € V ^8„  d   QhR\         /# r†   r   )r   s   "r   r   r   ¶   s   € ÷ (ñ (Üñ(r"   c              ƒ  óN  "  € \        \        4      P                  \        \        P                  4      4      P                  \        P                  P                  4       4      pV P                  V4      G Rj  x€L
 p\        VP                  4       P                  4       4      #  L+5i)z)Fetch active Purchase Requests (Indents).N)r   r   Úoptionsr	   rt   Úorder_byrs   Údescr¶   ÚlistÚscalarsr·   )r{   r�   r¸   Úresults   &&  r   Úget_requestsrÅ   µ   sx   é € ô 	Ô Ó!ß	‰”Ô/×7Ñ7Ó8Ó	9ß	‰Ô#×.Ñ.×3Ñ3Ó5Ó	6ð 	ð
 —:‘:˜dÓ#×#€FÜ�—‘Ó ×$Ñ$Ó&Ó'Ð'ñ $ùs   ‚A5B%Á7B#Á8,B%z/requests/{request_id}Údeletec                ó0   € V ^8„  d   QhR\         R\        /# )r   rp   r{   r—   )r   s   "r   r   r   Ä   s   € ÷ ñ Üðäñr"   c              ƒ  óV  "  € \        \        4      P                  \        P                  V 8H  4      pVP	                  V4      G Rj  x€L
 pVP                  4       pV'       g   \        RRR7      hVP                  V4      G Rj  x€L
  VP                  4       G Rj  x€L
  R#  L\ L  L
5i)z#Delete a Purchase Request manually.Ni”  zPurchase Request not found)rv   Údetail)	r   r   rµ   rp   r¶   Úscalar_one_or_noner   rÆ   Úflush)rp   r{   r�   r¸   rÄ   Úprs   &&&   r   Údelete_purchase_requestrÍ   Ã   s†   é € ô Ô#Ó$×*Ñ*Ô+<×+GÑ+GÈ:Ñ+UÓV€DØ—:‘:˜dÓ#×#€FØ	×	"Ñ	"Ó	$€BçÜ¨Ð4PÔQÐQà
�)‰)�B‹-×ÐØ
�(‰(‹*×Òñ $ñ Ùùs<   ‚AB)ÁB#ÁB)Á#!B)ÂB%ÂB)ÂB'ÂB)Â%B)Â'B)z/chassis/confirmedc                ó$   € V ^8„  d   QhR\         /# r†   r   )r   s   "r   r   r   Õ   ó   € ÷ ñ Üñr"   c              ƒ  óè  "  € \        V 4      pVP                  4       G Rj  x€L
 pV Uu. uEF6  pRVP                  RVP                  RVP                  RVP
                  '       dù   RVP
                  '       d?   VP
                  P                  '       d#   RVP
                  P                  P                  /MRRVP
                  '       d?   VP
                  P                  '       d#   R	VP
                  P                  P                  /MRR
VP
                  '       d?   VP
                  P                  '       d#   R	VP
                  P                  P                  /MR/MR/NEK9  	  up#  ELIu upi 5i)z4Fetch chassis that have completed procurement check.NrE   rG   rˆ   r‰   rŠ   r‹   rŒ   r�   rŽ   )r   Úget_confirmed_queuerE   rG   rˆ   r‰   rŠ   r‹   rŒ   r�   rŽ   r‘   s   &&   r   rÑ   rÑ   Ô   ó„  é € ô ' rÓ*€GØ×-Ñ-Ó/×/€Eñ óò ˆAð ˜!Ÿ,™,Ø˜!Ÿ,™,Ø  !×"6Ñ"6Ø"ð ×'×'Ð'ð ÐXY×Xn×XnÐXnÐst÷  tJñ  tJ÷  tP÷  tPð  tP˜.¨!×*@Ñ*@×*FÑ*F×*SÑ*SÑTð  VZØÐPQ×Pf×PfÐPfÐkl÷  lBñ  lB÷  lL÷  lLð  lL˜f a×&<Ñ&<×&FÑ&F×&KÑ&KÑLð  RVØÈA×Lb×LbÐLbÐgh×g}Ñg}÷  hF÷  hFð  hF˜F A×$:Ñ$:×$BÑ$B×$GÑ$GÑHð  LPñ%ð .2ô		
ñ ñð ò 0ùòùóJ   ‚E2¡E*¢E2ª<E-Á'E-Á:E-Â5E-ÃE-Ã(5E-ÄE-Ä:-E-Å'E2Å-E2z/chassis/backflush-queuec                ó$   € V ^8„  d   QhR\         /# r†   r   )r   s   "r   r   r   ë   rÏ   r"   c              ƒ  óè  "  € \        V 4      pVP                  4       G Rj  x€L
 pV Uu. uEF6  pRVP                  RVP                  RVP                  RVP
                  '       dù   RVP
                  '       d?   VP
                  P                  '       d#   RVP
                  P                  P                  /MRRVP
                  '       d?   VP
                  P                  '       d#   R	VP
                  P                  P                  /MRR
VP
                  '       d?   VP
                  P                  '       d#   R	VP
                  P                  P                  /MR/MR/NEK9  	  up#  ELIu upi 5i)zAFetch chassis currently in production (WIP) for backflush review.NrE   rG   rˆ   r‰   rŠ   r‹   rŒ   r�   rŽ   )r   Úget_backflush_queuerE   rG   rˆ   r‰   rŠ   r‹   rŒ   r�   rŽ   r‘   s   &&   r   rÖ   rÖ   ê   rÒ   rÓ   z/chassis/{chassis_id}/bomc                ó0   € V ^8„  d   QhR\         R\        /# r–   r—   )r   s   "r   r   r     s   € ÷ 5ñ 5Üð5äñ5r"   c              ƒ  óV   "  € \        V4      pVP                  V 4      G Rj  x€L
 #  L5i)zCFetch the confirmed BOM snapshot for a chassis, grouped by station.N)r   Úget_chassis_bomrš   s   &&& r   rÙ   rÙ      s(   é € ô ' rÓ*€GØ×(Ñ(¨Ó4×4Ð4Ñ4ùr›   c                   ó4   a € ] tR tRt o RtRtV 3R ltRtV tR# )ÚAdhocIssueRequesti
  NzAd-hocc                ój   <€ V ^8„  d   Qh/ S[ ;R&   S[;R&   S[S[ ,          ;R&   S[S[,          ;R&   # )r   r2   rP   Ú
station_idr>   )r   r   r   r?   )r   r   s   "€r   r   ÚAdhocIssueRequest.__annotate__
  s;   ø‡ ‚ Ù�Kñ á	�Lñ ñ ™•Ñ%ñ ñ ‘s�mÑ&ò	 r"   r#   )	r%   r&   r'   r(   rÝ   r>   r)   r*   r+   r,   s   @r   rÛ   rÛ   
  s   ø‡ € ð "&€JØ&€H÷	 ƒ r"   rÛ   z!/chassis/{chassis_id}/adhoc-issuec                ó<   € V ^8„  d   QhR\         R\        R\        /# r�   )r   rÛ   r   )r   s   "r   r   r     s+   € ÷ Cñ CÜðCä
ðCô 	ñCr"   c           	   ƒ  óÎ  "  € \        V4      p VP                  WP                  VP                  VP                  VP
                  VP                  R7      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*Manually issue raw materials to a chassis.)rÝ   r>   NrŸ   zAd-hoc issue failed: )r   Úissue_adhoc_rmr2   rP   r¡   rÝ   r>   r   r   r¢   r£   r?   )rE   rz   r{   r¤   r‚   rÄ   r¥   s   &&&&   r   rá   rá     sÄ   é € ô ' rÓ*€GðCØ×-Ñ-ØŸ
™
 D§H¡H¨d¯l©lØ—‘°·±ð .ó 
÷ 
ˆð �i‰i‹k×ÐØˆñ
ñ 	øäô Ø�k‰k‹m×ÑØÜô CØ�k‰k‹m×ÑÜ˜CÐ#8¼¸Q»¸Ð!AÓBÐBûðCüsk   ‚C%�AA= ÁA9ÁA= Á2A;Á3A= Á8C%Á9A= Á;A= Á=C"ÂBÂC"Â+C"Â,CÂ?CÃ CÃC"Ã"C%N)6Úfastapir   r   r   Úsqlalchemy.ext.asyncior   Ú
sqlalchemyr   Úsqlalchemy.ormr	   Útypingr
   r   Úuuidr   r   Úapp.core.databaser   Úapp.core.securityr   Úengine_servicer   Úapp.models.procurement_modelsr   Úpydanticr   Údecimalr   r   r/   rC   rN   rS   rW   r\   ra   rl   ÚrouterÚpostr~   Úgetr�   r™   r    r¬   r¼   rÅ   rÆ   rÍ   rÑ   rÖ   rÙ   rÛ   rá   r#   r"   r   Ú<module>rñ      sY  ðç 5Ñ 5Ý /Ý Ý 'ß !Ý Ý å $Ý 0Ý 4Ý ;Ý Ý ô˜ô ô#˜	ô #ô, Iô ,ô�Yô ô˜Yô ô˜)ô ô) 	ô )ô iô ô
 	ô 
ñ 
‹€à‡�Ð%°3€Ó7ñ ˜v“ÙÑ  ¨vÓ6Ó7ö	Wó 8ð	Wð ‡�ÐÓá˜v“ÙÑ  °Ó7Ó8öó ðð4 ‡�Ð,Ð=Z€Ó[ñ ˜v“ÙÑ  °Ó7Ó8ö4ó \ð4ð ‡�Ð,Ó-ñ ˜v“Ù	Ñ# M°6Ó:Ó	;ö	0ó .ð0ð2 ‡�Ð@ÓAñ
 ˜v“Ù	Ñ# M°6Ó:Ó	;ö
!ó Bð
!ð ‡�Ð!Ó"ñ ˜v“ÙÑ  °Ó7Ó8ö	wó #ð	wð ‡�ˆK¨Ð-FÕ(G€ÓHá˜v“ÙÑ  °Ó7Ó8ö(ó Ið(ð ‡�Ð'°S€Ó9ñ ˜v“ÙÑ  °Ó9Ó:öó :ðð  ‡�Ð Ó!á˜v“ÙÑ  °Ó7Ó8öó "ðð* ‡�Ð&Ó'á˜v“ÙÑ  °Ó7Ó8öó (ðð* ‡�Ð'Ó(ñ ˜v“ÙÑ  °Ó7Ó8ö5ó )ð5ô'˜	ô 'ð ‡�Ð0Ó1ñ ˜v“Ù	Ñ# M°6Ó:Ó	;ö	Có 2òCr"   