o
    >:h                     @   sd   d dl mZmZmZ d dlmZ d dlmZmZ d dl	m
Z
 d dlmZ dd Zdd	 Zd
d ZdS )    )renderredirectget_object_or_404)
Referencia)ListaMaterialesComponenteListaMateriales)Decimal)messagesc              
   C   s   z
t jj| dd}W n t jy%   | j| j| jj|  t	dg d Y S w | j| j| jj|  t	dg d}|j
 ddD ]}t|j}|j|d< |d | q@|S )	NA)
referenciaestadoz1.0)skudescripcionunidadtipocantidadcomponentesr   referencia__unidadr   r   )r   objectsgetDoesNotExistr   r   r   abreviaturaget_tipo_displayr   r   allselect_relatedobtener_bom_completor   cantidad_totalappend)r   bom	resultado
componente	sub_arbol r"   1/var/www/html/public/lista_de_materiales/views.pyr      s.   
	

r   c                 C   sv   t jjddgdd}t jjddd}d }d }| jdkr0| jd}t jj|d	}t|}t| d
||||dS )NPPPT)tipo__inr   T)activoPOSTr   r   zbom/arbol_bom_interactivo.html)referencias
estructurareferencias_posiblessku_seleccionado)	r   r   filterr   methodr(   r   r   r   )requestreferencias_pp_ptr,   r+   r-   r   r"   r"   r#   arbol_bom_selector_view&   s   
r2   c              
   C   s<  | j dkr| jd}| jd}| jd}| jd}tt|d}tjj|dd| j	d	|j
 d
|j
 ddd\}}d}t|||D ]<\}	}
}|	rN|
sOqEztjj|	d}t|
}|rat|ntd}W n tjtfyr   Y qEw tjj||||d |d7 }qEt| d| d|j d tdS t| d tdS )Nr(   	padre_skuzreferencias[]zcantidades[]zdesperdicios[]r)   r
      u!   BOM creado automáticamente para zBOM-z-1)version
creado_porr   codigo)r   r   defaultsr   )pk0)lista_materialesr   r   desperdiciozSe agregaron z componentes al BOM .arbol_bom_selectorz Error al procesar el formulario.)r/   r(   r   getlistr   r   r   r   get_or_createuserr   zipr   r   
ValueErrorr   creater	   successr7   r   error)r0   r3   r*   
cantidadesdesperdicios	padre_ref	bom_padre_creadosref_idcantdespref_objr   r<   r"   r"   r#   agregar_componente_bom9   sJ   



rQ   N)django.shortcutsr   r   r   referencias.modelsr   lista_de_materiales.modelsr   r   decimalr   django.contribr	   r   r2   rQ   r"   r"   r"   r#   <module>   s   