+
    i                     <    ^ RI HtHt ^ RIHtHtHtHtHtH	t	 R t
R# )    )jsonifyrequest)BOMExploderget_bom_datasearch_partsget_status_manualcalculate_total_costsget_total_cost_for_parentc                N  a  S P                  RR.R7      R 4       pS P                  RR.R7      R 4       pS P                  RR.R7      R	 4       p S P                  R
R.R7      R 4       pS P                  RR.R7      V 3R l4       pS P                  RR.R7      V 3R l4       pR# )uW   
Registra las rutas para la funciones_BomPartIng directamente en la aplicación Flask.
z:/SyC/GerenteSyC/UtilityMaterials/GSYCManufacBOMIng/explodePOST)methodsc            
     `    \         P                  p V P                  R4      pV P                  R4      pV'       d	   V'       g   \        RRRR/4      R3# \	        4       pVP                  W4      p\        V4      #   \         d(   p\        RRRR\        T4       2/4      R	3u R
p?# R
p?ii ; i)zExplota una BOM multinivelpartNumrevisionsuccessFerrorz!PartNum y Revision son requeridos  Error interno:   N)r   jsongetr   r   explode_bom	Exceptionstr)datapart_numr   exploderresultes         ځC:\Users\victor.barrera\Documents\proyectos\elepV3\Elep\src\App\SupyCtrol_Module\GerenteSyC\UtilityMaterials\GSYCManufacBOMIng.pyr   )funciones_BomPartIng.<locals>.explode_bom   s    	<<Dxx	*Hxx
+H8u@    
 #}H))(=F6?" 	5?3q6(3   	s.   9A; A; A; %A; ;B-B("B-(B-zG/SyC/GerenteSyC/UtilityMaterials/GSYCManufacBOMIng/get-bom/<process_id>GETc           
          \        V 4      pRV9   d   \        RRRVR,          /4      R3# \        RRRV/4      #   \         d(   p\        RRRR\        T4       2/4      R3u Rp?# Rp?ii ; i)	z"Obtiene datos de una BOM explodidar   r   Fr   Tr   r   N)r   r   r   r   )
process_idbom_datar   s   &  r    get_bom%funciones_BomPartIng.<locals>.get_bom)   s    	#J/H("uXg.    
 4  
  	5?3q6(3   	s   ); ; A-A("A-(A-z?/SyC/GerenteSyC/UtilityMaterials/GSYCManufacBOMIng/search-partsc            
     $    \         P                  P                  RR4      p \        V 4      ^8  d   \	        RRRR/4      R3# \        V 4      p\	        RRR	V/4      #   \         d(   p\	        RRRR
\        T4       2/4      R3u Rp?# Rp?ii ; i)z%Busca partes manufacturadas en el ERPq r   Fr   u-   La búsqueda debe tener al menos 2 caracteresr   Tpartsr   r   N)r   argsr   lenr   r   r   r   )queryr+   r   s      r    search_parts_endpoint3funciones_BomPartIng.<locals>.search_parts_endpoint@   s    	LL$$S"-E5zA~uL    
 !'E4  
  	5?3q6(3   	s$   A A A B(B
B
Bz>/SyC/GerenteSyC/UtilityMaterials/GSYCManufacBOMIng/update-costc            
         a  \         P                  ! 4       oS'       g   \        R RRR/4      R3# . ROp \        ;QJ d    V3R lV  4       F  '       d   K   RM	  R	M! V3R lV  4       4      '       g   \        R RRR
V  2/4      R3# \	        SR,          SR,          SR,          R7      pVP                  R 4      '       g   \        V4      R3# \        V4      #   \         d(   p\        R RRR\        T4       2/4      R3u Rp?# Rp?ii ; i)r   Fr   zDatos no proporcionadosr   
newExtCost	processIdr   c              3   ,   <"   T F	  qS9   x  K  	  R # 5i)N ).0fieldr   s   & r    	<genexpr><funciones_BomPartIng.<locals>.update_cost.<locals>.<genexpr>i   s     B/}/s   TzFaltan campos requeridos: )new_ext_costr$   r   Error inesperado: r   N)r2   r3   r   )r   get_jsonr   allr   r   r   r   )required_fieldsr   r   r   s      @r    update_cost)funciones_BomPartIng.<locals>.update_cost_   s   	##%D 	5';TUVX[[[DO3B/B333B/BBBu9/9JK     '!,/,iF ::i((v++6?" 	5-c!fX6   	s@   C C #C C 5C 	AC 
C D&DDDzO/SyC/GerenteSyC/UtilityMaterials/GSYCManufacBOMIng/calculate-costs/<process_id>c                  <  V '       d   \        V 4      ^$8w  d   \        RRRR/4      R3# SP                  P                  RV  24       \	        V 4      pVP                  R4      '       g;   SP                  P                  RVP                  R4       24       \        V4      R3# SP                  P                  RV  R	\        VR
,          4       RVR,           R24       \        RRRRR
VR
,          RVR,          RV /4      #   \         dO   pSP                  P                  R\        T4       24       \        RRRR\        T4       2/4      R3u Rp?# Rp?ii ; i)z2Endpoint para calcular y actualizar costos totalesr   Fr   u   ProcessID inválidor   u.   Iniciando cálculo de costos para process_id: zError calculando costos: z(
                Costos calculados para z+.
                Materiales actualizados: updatedMaterialsz(
                Costo total calculado: totalCalculatedCostz
            TmessagezCostos calculados exitosamenter3   r;   zError interno del servidor: r   N)	r-   r   loggerinfor	   r   r   r   r   )r$   r   r   apps   &  r    calculate_costs-funciones_BomPartIng.<locals>.calculate_costs   s   #	ZB!6u2    
 JJOOLZLYZ*:6F::i((

  #<VZZ=P<Q!RSv++ JJOO !((2| 4**-f5G.H*I)J K((./D(E'F G  4;"F+=$>%v.C'DZ    	JJ1#e*>?57E
|D   	s0   D  D A9D &AD EAEEEzA/SyC/GerenteSyC/UtilityMaterials/GSYCManufacBOMIng/get-total-costc                   < \         P                  P                  R4      p \         P                  P                  R4      p\         P                  P                  R4      p\        WV4      pVR,          '       d   \         P                  P                  R4      p\         P                  P                  R4      pV'       d@   VR,          \	        V4      8w  d)   SP
                  P                  RV R	VR,           24       V'       d@   VR
,          \	        V4      8w  d)   SP
                  P                  RV R	VR
,           24       \        V4      # )u*   Endpoint con verificación de consistenciar3   r   r   r   expectedMaterialsexpectedOperationsmaterialCountz$Diferencia en materiales: Esperados=z, Obtenidos=operationCountz%Diferencia en operaciones: Esperados=)r   r,   r   r
   intrE   warningr   )r$   r   r   r   expected_materialsexpected_operationsrG   s         r    get_total_cost,funciones_BomPartIng.<locals>.get_total_cost   s3    \\%%k2
<<##I.<<##J/*:J)!(!1!12E!F"),,"2"23G"H!f_&=EWAX&X

""%IJ\I]]ijp  rA  kB  jC  $D  E"v.>'?3GZC['[

""%JK^J__klr  tD  mE  lF  $G  Hv    N)route)rG   r   r&   r/   r?   rH   rS   s   f      r    funciones_BomPartIngrW      s    
 	YYKV\U]Y^ _0 	YYXchbiYj k, 	YYP[`ZaYb c2
 	YYOZ`YaYb cF 	YY`kqjrYs% t%P 	YYR]b\cYd erU   N)flaskr   r   HConsultas_SQL.SupYCtrol.GerenteSyC.UtilityMaterials.GSYCManufacBOMIngSQLr   r   r   r   r	   r
   rW   r5   rU   r    <module>rZ      s   
 # 
urU   