
    >:h&                        d dl mZ d dlmZ d dlmZ d dlmZ d dlm	Z	 ddl
mZmZ ddlmZ d d	lmZ  G d
 dej                  Z G d dej                  Z G d dej                  Z ej        e           G d dej                              Z ej        e           G d dej                              ZdS )    )admin)Q)format_html)forms)
Referencia   )ListaMaterialesComponenteListaMateriales)views)pathc                   8     e Zd Z G d d          Z fdZ xZS )ComponenteListaMaterialesFormc                       e Zd ZeZdZdS )"ComponenteListaMaterialesForm.Meta__all__N)__name__
__module____qualname__r
   modelfields     BC:\Users\a_gir\Desktop\Interacto\siip\lista_de_materiales\admin.pyMetar      s        )r   r   c                 <    t                      j        |i | d| j        v rxt          j                            t          d          t          d          z  d                              d          | j        d         _        d | j        d         _	        d S d S )	N
referenciaMPtipoPPTactivounidadc                 z    | j          d| j        d d          d|                                  d| j        j         dS Nz - 2   z [z] ()skudescripcionget_tipo_displayr#   abreviaturaobjs    r   <lambda>z8ComponenteListaMaterialesForm.__init__.<locals>.<lambda>   f    7 I Isss3 I I((**I I/2z/EI I I r   
super__init__r   r   objectsfilterr   select_relatedquerysetlabel_from_instanceselfargskwargs	__class__s      r   r3   z&ComponenteListaMaterialesForm.__init__       $)&)))4;&&1;1C1J1Jtqd|||+ 2K 2 2 nX&& K%.= =DK%999 '&r   r   r   r   r   r3   __classcell__r=   s   @r   r   r   
   `                       r   r   c                       e Zd ZeZeZdZdZdS )ComponenteListaMaterialesInliner   )r   cantidaddesperdicioordenobligatorionotasN)	r   r   r   r
   r   r   formextrar   r   r   r   rD   rD      s"        %E(DEWFFFr   rD   c                   8     e Zd Z G d d          Z fdZ xZS )ListaMaterialesFormc                       e Zd ZeZdZdS )ListaMaterialesForm.Metar   N)r   r   r   r	   r   r   r   r   r   r   rO   2   s        r   r   c                 <    t                      j        |i | d| j        v rxt          j                            t          d          t          d          z  d                              d          | j        d         _        d | j        d         _	        d S d S )	Nr   r    r   PTTr!   r#   c                 z    | j          d| j        d d          d|                                  d| j        j         dS r%   r(   r-   s    r   r/   z.ListaMaterialesForm.__init__.<locals>.<lambda>@   r0   r   r1   r9   s      r   r3   zListaMaterialesForm.__init__6   r>   r   r?   rA   s   @r   rM   rM   1   rB   r   rM   c                        e Zd ZeZdZdZdZegZ	dZ
 G d d          Zddd	ifd
ddifddddffZd Zde_        d Zde_        d Zde_         fdZ fdZ fdZ xZS )ListaMaterialesAdmin)codigoreferencia_infoversionestado_displayfecha_creacioncomponentes_count)estadoreferencia__tiporeferencia__gruporeferencia__subgrupo)rU   referencia__skureferencia__descripcionr*   )rY   fecha_actualizacionfecha_activacionrU   c                       e Zd ZddgiZdS )ListaMaterialesAdmin.Mediaallzadmin/css/selectors.cssN)r   r   r   cssr   r   r   Mediard   N   s        -.
r   rg   u   Información Básicar   )r   rW   rU   r[   r*   u   Información Técnica)rI   u
   Auditoría)collapse)
creado_porrY   ra   rb   )classesr   c                     t          d|j        j        |j                                        |j        j        d d         |j        j        j                  S )Nj<div style="min-width: 300px;"><strong>{}</strong><br><span style="color: #666;">{} - {} ({})</span></div>r&   r   r   r)   r+   r*   r#   r,   r:   r.   s     r   rV   z$ListaMaterialesAdmin.referencia_info`   O    CNN++--N&ss+N!-
 
 	
r   r   c                     ddddd}t          d|                    |j        d          |                                          S )Nz#777#4CAF50z#2196F3#F44336)DAHIza<span style="color: white; background-color: {}; padding: 3px 8px; border-radius: 4px;">{}</span>black)r   getr[   get_estado_display)r:   r.   estado_colorss      r   rX   z#ListaMaterialesAdmin.estado_displayk   sW    	
 
 ?cj'22""$$	
 
 	
r   Estadoc                 x    |j                                         }t          d|dk    rdnd||dk    rdnd          S )NzB<span style="font-weight: bold; color: {};">{}</span> componente{}r   rq   rr   r    s)componentescountr   )r:   r.   r   s      r   rZ   z&ListaMaterialesAdmin.componentes_countz   sK    %%''PII	1**BB#	
 
 	
r   Componentesc                 l    |s|j         |_        t                                          ||||           d S )N)userri   r2   
save_model)r:   requestr.   rJ   changer=   s        r   r   zListaMaterialesAdmin.save_model   s8     	*$\CN7Cv66666r   c                     t                                          |                              dd                              d          S )Nr   referencia__unidadr   )r2   get_querysetr6   prefetch_related)r:   r   r=   s     r   r   z!ListaMaterialesAdmin.get_queryset   sA    ww##G,,;;.
 


=
)
)	*r   c                     t                                                      }t          d| j                            t
          j                  d          g}||z   S )Nzbom/6lista_de_materiales_listamateriales_arbol_bom_selector)name)r2   get_urlsr   
admin_site
admin_viewr   arbol_bom_selector_view)r:   urlscustom_urlsr=   s      r   r   zListaMaterialesAdmin.get_urls   sZ    ww!!O..u/LMMQ   T!!r   )r   r   r   rM   rJ   list_displaylist_filtersearch_fieldsrD   inlinesreadonly_fieldsrg   	fieldsetsrV   short_descriptionrX   rZ   r   r   r   r@   rA   s   @r   rT   rT   E   sI       DtL]K[M./G]O
 
 
 
 
 
 
 
 
 R"
 	 
!j#
 	 
$a
 
 	I
 
 
 )5O%
 
 
 (0N$
 
 
 +8'7 7 7 7 7
* * * * *
	" 	" 	" 	" 	" 	" 	" 	" 	"r   rT   c                   z     e Zd ZdZdZdZdZdZd Zde_	        d Z
d	e
_	        d
 Zd Zd Zde_	         fdZ xZS )ComponenteListaMaterialesAdmin)lista_materiales_inforV   cantidad_displaydesperdicio_displayobligatorio_iconrG   )lista_materiales__estador\   rH   )lista_materiales__codigor_   r`   )lista_materialesr   lista_materiales__referenciar   r&   c                 l    t          d|j        j        |j        j        |j        j        j                  S )Nzd<div style="min-width: 200px;"><strong>{}</strong> v{}<br><span style="color: #666;">{}</span></div>)r   r   rU   rW   r   r)   rn   s     r   r   z4ComponenteListaMaterialesAdmin.lista_materiales_info   s7    9 ' ( +/
 
 	
r   zLista de Materialesc                     t          d|j        j        |j                                        |j        j        d d         |j        j        j                  S )Nrl   (   rm   rn   s     r   rV   z.ComponenteListaMaterialesAdmin.referencia_info   ro   r   
Componentec                    	 t          t          |j                  d          }|j        j        j        }d                    ||          }t          |          S # t          $ r'}t          dt          |                    cY d }~S d }~ww xY w)N   zf<div style="text-align: center;"><strong>{:.4f}</strong><br><span style="color: #666;">{}</span></div>*<span style="color: red;">Error: {}</span>)
roundfloatrE   r   r#   r,   formatr   	Exceptionstr)r:   r.   rE   r#   htmles         r   r   z/ComponenteListaMaterialesAdmin.cantidad_display   s    	UU3<00!44H^*6F=fXv&& 
 t$$$ 	U 	U 	UKSQRVVTTTTTTTT	Us   AA 
B$B BBc                    	 t          |j        d          }t          |j        d          }d                    |dk    rdnd||          }t	          |          S # t
          $ r'}t	          dt          |                    cY d }~S d }~ww xY w)	N   r   z<div style="text-align: center; color: {color};">{desperdicio:.2f}%<br><span style="color: #666;">Total: {total:.4f}</span></div>r   z#FF5722z#666)colorrF   totalr   )r   rF   cantidad_totalr   r   r   r   )r:   r.   rF   r   r   r   s         r   r   z2ComponenteListaMaterialesAdmin.desperdicio_display   s    	U33K"3#5q99NM f#.??ii'$   	  t$$$ 	U 	U 	UKSQRVVTTTTTTTT	Us   AA 
B%BBBc                 H    t          d|j        rdnd|j        rdnd          S )Nz\<div style="text-align: center;"><span style="color: {}; font-weight: bold;">{}</span></div>rq   rr   u   ✓u   ✗)r   rH   rn   s     r   r   z/ComponenteListaMaterialesAdmin.obligatorio_icon   s6    J7IIi_/EE%	
 
 	
r   Obligatorioc                 X   |j         dk    rWt          j                            t	          d          t	          d          z  d                              d          |d<   n-|j         d	k    r"t          j                            d          |d<    t                      j        ||fi |S )
Nr   r   r   r    Tr!   r#   r7   r   )	r   r   r4   r5   r   r6   r	   r2   formfield_for_foreignkey)r:   db_fieldr   r<   r=   s       r   r   z7ComponenteListaMaterialesAdmin.formfield_for_foreignkey   s    =L((!+!3!:!:tqd|||+ "; " " nX&& : ]000!0!8!G!G!U!UF:/uww/'LLVLLLr   )r   r   r   r   r   r   list_select_relatedlist_per_pager   r   rV   r   r   r   r   r@   rA   s   @r   r   r      s        LK
M
 M
 
 
 /D+
 
 
 )5O%U U UU U U,
 
 
 *7&M M M M M M M M Mr   r   N)django.contribr   django.db.modelsr   django.utils.htmlr   djangor   referencias.modelsr   modelsr	   r
   r}   r   django.urlsr   	ModelFormr   TabularInlinerD   rM   register
ModelAdminrT   r   r   r   r   <module>r      s                     ) ) ) ) ) )       ) ) ) ) ) ) > > > > > > > >                EO   (X X X X Xe&9 X X X&    %/   (   Q" Q" Q" Q" Q"5+ Q" Q" ! Q"h )**fM fM fM fM fMU%5 fM fM +*fM fM fMr   