o
    >:h!                     @   sD  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
mZmZmZmZmZ G dd dejZee	G d	d
 d
eZee
G dd deZeeG dd deZeeG dd deZeeG dd deZG dd dejZeeG dd deZeeG dd deZG dd dejZdS )    )admin)format_html)reverse)Count   )UnidadMedida	FormaPagoEmpaqueCompraEmpaqueProduccionClasificacionProductoGrupoProductoSubgrupoProductoc                       s@   e Zd ZdZdZdZdZdgZdd Zde_	 fdd	Z
  ZS )
BaseConfigAdminu   
    Clase base para todos los modelos de configuración
    Proporciona funcionalidades comunes como filtros, búsqueda y acciones
       Tduplicate_selectedc                 C   s`   d}|D ] }d |_ |j d|_t|dr|j d|_|  |d7 }q| || d d S )Nr   z (Copia)abreviatura_cr   z$ registros duplicados correctamente.)idnombrehasattrr   savemessage_user)selfrequestquerysetcountobj r   2/var/www/html/public/listas_configuracion/admin.pyr      s   

z"BaseConfigAdmin.duplicate_selectedz$Duplicar los registros seleccionadosc                    s   t  |}|S )N)superget_querysetr   r   qs	__class__r   r   r    ,   s   zBaseConfigAdmin.get_queryset)__name__
__module____qualname____doc__list_per_pagesave_on_topshow_full_result_countactionsr   short_descriptionr    __classcell__r   r   r#   r   r      s    r   c                   @   sJ   e Zd Zg dZdgZddgZddgZddddgifgZdd	 Zd
e_	dS )UnidadMedidaAdmin)r   r   tipocolored_tipor0   r   r   Nfields)r   r   c                 C   s,   ddddd}| |jd}td|| S )u7   Muestra el tipo con un color distintivo según su valorgreenbluepurpleorange)pesolongitudvolumenunidadgrayz5<span style="color: {}; font-weight: bold;">{}</span>)getr0   r   get_tipo_display)r   r   colorscolorr   r   r   r1   =   s   zUnidadMedidaAdmin.colored_tipozTipo de Unidad)
r%   r&   r'   list_displaylist_filtersearch_fieldslist_display_links	fieldsetsr1   r-   r   r   r   r   r/   1   s    
r/   c                   @   s`   e Zd Zg dZdgZddgZddddgifddgdgd	fgZd
d Zde_dd Z	de	_dS )FormaPagoAdmin)r   
plazo_dias	tipo_pagodescripcion_cortarF   r   descripcionNr2   u   Información Adicionalcollapser2   classesc                 C   s   |j dkr	tdS tdS )u7   Muestra si es contado o crédito con formato distintivor   zm<span style="background-color: #c8e6c9; padding: 3px 8px; border-radius: 4px; color: #2e7d32;">Contado</span>un   <span style="background-color: #ffcdd2; padding: 3px 8px; border-radius: 4px; color: #c62828;">Crédito</span>)rF   r   r   r   r   r   r   rG   [   s   
zFormaPagoAdmin.tipo_pagoTipoc                 C   .   |j rt|j dkr|j dd  dS |j S u1   Muestra una versión abreviada de la descripción2   Nz...rI   lenrM   r   r   r   rH   d      z FormaPagoAdmin.descripcion_corta   Descripción)
r%   r&   r'   r@   rA   rB   rD   rG   r-   rH   r   r   r   r   rE   L   s     

rE   c                   @   J   e Zd ZddgZddgZdddgifddgdgdfgZd	d
 Zde_dS )EmpaqueCompraAdminr   rH   rI   Nr2   DetallesrJ   rK   c                 C   rO   rP   rR   rM   r   r   r   rH   {   rT   z$EmpaqueCompraAdmin.descripcion_cortarU   r%   r&   r'   r@   rB   rD   rH   r-   r   r   r   r   rW   m       

rW   c                   @   rV   )EmpaqueProduccionAdminr   rH   rI   Nr2   rX   rJ   rK   c                 C   rO   rP   rR   rM   r   r   r   rH      rT   z(EmpaqueProduccionAdmin.descripcion_cortarU   rY   r   r   r   r   r[      rZ   r[   c                   @   s   e Zd ZdgZdgZdS )ClasificacionProductoAdminr   N)r%   r&   r'   r@   rB   r   r   r   r   r\      s    
r\   c                   @   s   e Zd ZeZdZdZdZdS )SubgrupoInliner   Subgrupo	SubgruposN)r%   r&   r'   r   modelextraverbose_nameverbose_name_pluralr   r   r   r   r]      s
    r]   c                       sD   e Zd ZddgZdgZegZ fddZdd Zde_	de_
  ZS )	GrupoProductoAdminr   contar_subgruposc                    s   t  |}|jtddS )N	subgrupos)subgrupos_count)r   r    annotater   r!   r#   r   r   r       s   zGrupoProductoAdmin.get_querysetc                 C   s6   |j }tdd|j  }td|||dkrdS dS )u6   Muestra el número de subgrupos asociados a este grupo6admin:listas_configuracion_subgrupoproducto_changelistz?grupo__id__exact=z<a href="{}">{} subgrupo{}</a>r   s )rg   r   r   r   )r   r   r   urlr   r   r   re      s   z#GrupoProductoAdmin.contar_subgruposr_   rg   )r%   r&   r'   r@   rB   r]   inlinesr    re   r-   admin_order_fieldr.   r   r   r#   r   rd      s    rd   c                   @   s<   e Zd ZddgZdgZddgZdgZdd Zde_de_	dS )	SubgrupoProductoAdminr   
grupo_linkgrupogrupo__nombrec                 C   s    t d|jjgd}td||jS )z9Muestra un enlace al grupo al que pertenece este subgrupoz/admin:listas_configuracion_grupoproducto_change)argsz<a href="{}">{}</a>)r   rq   r   r   )r   r   rl   r   r   r   rp      s   z SubgrupoProductoAdmin.grupo_linkGrupoN)
r%   r&   r'   r@   rA   rB   autocomplete_fieldsrp   r-   rn   r   r   r   r   ro      s    
ro   c                       s(   e Zd ZdZdZdZ fddZ  ZS )ListasConfiguracionAdminSiteu   IAP Planner - Configuraciónu   Panel de Administraciónu   Gestión de Configuracionesc                    sv   t  |}dtddgdtddgdtdddtd	dgd
tdddtdddtddgd|d< |S )NzUnidades de Medidaz2admin:listas_configuracion_unidadmedida_changelist)namerl   zFormas de Pagoz/admin:listas_configuracion_formapago_changelistzEmpaques de Compraz3admin:listas_configuracion_empaquecompra_changelistu   Empaques de Producciónz7admin:listas_configuracion_empaqueproduccion_changelistClasificacionesz;admin:listas_configuracion_clasificacionproducto_changelistGruposz3admin:listas_configuracion_grupoproducto_changelistr_   ri   )zUnidades y Medidasu   Pagos y FacturaciónEmpaquesu   Categorización de Productos
categories)r   each_contextr   )r   r   contextr#   r   r   r|      s   
z)ListasConfiguracionAdminSite.each_context)r%   r&   r'   site_header
site_titleindex_titler|   r.   r   r   r#   r   rv      s
    rv   N)django.contribr   django.utils.htmlr   django.urlsr   django.db.modelsr   modelsr   r   r	   r
   r   r   r   
ModelAdminr   registerr/   rE   rW   r[   r\   TabularInliner]   rd   ro   	AdminSiterv   r   r   r   r   <module>   s,    $  