
    i                     :    S SK JrJr  S SKJrJrJrJrJrJ	r	  S r
g)    )jsonifyrequest)BOMExploderget_bom_datasearch_partsget_status_manualcalculate_total_costsget_total_cost_for_parentc                 (  ^  T R                  SS/S9S 5       nT R                  SS/S9S 5       nT R                  SS/S9S	 5       n T R                  S
S/S9S 5       nT R                  SS/S9U 4S j5       nT R                  SS/S9U 4S j5       ng)uW   
Registra las rutas para la funciones_BomPartIng directamente en la aplicación Flask.
z:/SyC/GerenteSyC/UtilityMaterials/GSYCManufacBOMIng/explodePOST)methodsc                  V    [         R                  n U R                  S5      nU R                  S5      nU(       a  U(       d  [        SSS.5      S4$ [	        5       nUR                  X5      n[        U5      $ ! [         a&  n[        SS[        U5       3S.5      S4s S	nA$ S	nAff = f)
zExplota una BOM multinivelpartNumrevisionFz!PartNum y Revision son requeridossuccesserror  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$@    
 #}H))(=F6?" 	 *3q6(3   	s$   AA8 %A8 8
B(B#B(#B(zG/SyC/GerenteSyC/UtilityMaterials/GSYCManufacBOMIng/get-bom/<process_id>GETc                      [        U 5      nSU;   a  [        SUS   S.5      S4$ [        SUS.5      $ ! [         a&  n[        SS[        U5       3S.5      S4s SnA$ SnAff = f)	z"Obtiene datos de una BOM explodidar   Fr   r   T)r   r   r   N)r   r   r   r   )
process_idbom_datar    s      r!   get_bom%funciones_BomPartIng.<locals>.get_bom)   s    	#J/H("$%g.    
    
  	 *3q6(3   	s   #4 4 
A$AA$A$z?/SyC/GerenteSyC/UtilityMaterials/GSYCManufacBOMIng/search-partsc                      [         R                  R                  SS5      n [        U 5      S:  a  [	        SSS.5      S4$ [        U 5      n[	        SUS	.5      $ ! [         a&  n[	        SS
[        U5       3S.5      S4s SnA$ SnAff = f)z%Busca partes manufacturadas en el ERPq    Fu-   La búsqueda debe tener al menos 2 caracteresr   r   T)r   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~$L    
 !'E  
  	 *3q6(3   	s#   >A A 
B
$B?B
B
z>/SyC/GerenteSyC/UtilityMaterials/GSYCManufacBOMIng/update-costc                    ^  [         R                  " 5       mT(       d  [        SSS.5      S4$ / SQn [        U4S jU  5       5      (       d  [        SSU  3S.5      S4$ [	        TS   TS	   TS
   S9nUR                  S5      (       d  [        U5      S4$ [        U5      $ ! [         a&  n[        SS[        U5       3S.5      S4s S nA$ S nAff = f)NFzDatos no proporcionadosr   r   )
newExtCost	processIdr   c              3   ,   >#    U  H	  oT;   v   M     g 7f)N ).0fieldr   s     r!   	<genexpr><funciones_BomPartIng.<locals>.update_cost.<locals>.<genexpr>i   s     B/}/s   zFaltan campos requeridos: r4   r5   r   )new_ext_costr%   r   r   Error inesperado: 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B/BBB$9/9JK     '!,/,iF ::i((v++6?" 	 -c!fX6   	s.   +B" 0B"  6B" 
B" "
C,CCCzO/SyC/GerenteSyC/UtilityMaterials/GSYCManufacBOMIng/calculate-costs/<process_id>c           	        >  U (       a  [        U 5      S:w  a  [        SSS.5      S4$ TR                  R                  SU  35        [	        U 5      nUR                  S5      (       d:  TR                  R                  SUR                  S	5       35        [        U5      S4$ TR                  R                  S
U  S[        US   5       SUS    S35        [        SSUS   US   U S.5      $ ! [         aM  nTR                  R                  S[        U5       35        [        SS[        U5       3S.5      S4s SnA$ SnAff = f)z2Endpoint para calcular y actualizar costos totales$   Fu   ProcessID inválidor   r   u.   Iniciando cálculo de costos para process_id: r   zError calculando costos: r   z(
                Costos calculados para z+.
                Materiales actualizados: updatedMaterialsz(
                Costo total calculado: totalCalculatedCostz
            TzCostos calculados exitosamente)r   messagerE   rF   r5   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   sy   #	ZB!6$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  ;$*+=$>'-.C'D'    	JJ1#e*>? 7E
|D   	s+   %C- A8C- "A
C- -
E7AD?9E?EzA/SyC/GerenteSyC/UtilityMaterials/GSYCManufacBOMIng/get-total-costc                  p  > [         R                  R                  S5      n [         R                  R                  S5      n[         R                  R                  S5      n[        XU5      nUS   (       a  [         R                  R                  S5      n[         R                  R                  S5      nU(       a6  US   [	        U5      :w  a$  TR
                  R                  SU S	US    35        U(       a6  US
   [	        U5      :w  a$  TR
                  R                  SU S	US
    35        [        U5      $ )u*   Endpoint con verificación de consistenciar5   r   r   r   expectedMaterialsexpectedOperationsmaterialCountz$Diferencia en materiales: Esperados=z, Obtenidos=operationCountz%Diferencia en operaciones: Esperados=)r   r.   r   r
   intrH   warningr   )r%   r   r   r   expected_materialsexpected_operationsrJ   s         r!   get_total_cost,funciones_BomPartIng.<locals>.get_total_cost   s0    \\%%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)rJ   r   r'   r1   rA   rK   rV   s   `      r!   funciones_BomPartIngrZ      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rX   N)flaskr   r   HConsultas_SQL.SupYCtrol.GerenteSyC.UtilityMaterials.GSYCManufacBOMIngSQLr   r   r   r   r	   r
   rZ   r7   rX   r!   <module>r]      s   
 # 
urX   