o
    >:h                     @   sX   d dl mZ d dlmZ d dlmZ d dlmZ G dd dejZ	G dd dejZ
d	S )
    )models)MinValueValidator)Decimal)
Referenciac                       s   e Zd ZdZdZejeejddddgiddZ	ej
d	d
ddZejddZej
dedddZejd
ddZejd
ddZejd
d
ddZejd
ddZejd
ddZejdejdddZG d d! d!Zd"d# Z fd$d%Z  ZS )&ListaMaterialesz=
    Lista de Materiales (BOM) para fabricar un producto
    ))DBorrador)AActiva)Hu
   Histórica)IInactivalistas_materialestipo__inPPPTzProducto final)	on_deleterelated_namelimit_choices_toverbose_name   Tu   Código BOM)
max_lengthuniquer   u   Versión)r      r   Estado)r   choicesdefaultr   u   Fecha creación)auto_now_addr   u   Fecha actualización)auto_nowr   u   Fecha activación)nullblankr   u   Descripción)r    r   u   Notas técnicasz	auth.Userlistas_creadasz
Creado porr   r   r   c                   @   s    e Zd ZdZdZdZddgZdS )zListaMateriales.MetaLista de MaterialeszListas de Materiales)
referenciaversionreferencia__skuz-versionN)__name__
__module____qualname__r   verbose_name_pluralunique_togetherordering r-   r-   2/var/www/html/public/lista_de_materiales/models.pyMetaC   s
    r/   c                 C   s   d| j  d| j d| jj S )NBOM-z vz - )codigor%   r$   skuselfr-   r-   r.   __str__I   s   zListaMateriales.__str__c                    s4   | j sd| jj d| j | _ t j|i | d S )Nr0   -)r1   r$   r2   r%   supersave)r4   argskwargs	__class__r-   r.   r8   L   s   zListaMateriales.save)r'   r(   r)   __doc__ESTADOS_BOMr   
ForeignKeyr   CASCADEr$   	CharFieldr1   PositiveIntegerFieldr%   estadoDateTimeFieldfecha_creacionfecha_actualizacionfecha_activacion	TextFielddescripcionnotasPROTECT
creado_porr/   r5   r8   __classcell__r-   r-   r;   r.   r      sl    
r   c                   @   s   e Zd ZdZejeejdddZeje	ej
dddZejdded	gd
dZejdddedgddZejdddZejdddZejddddZG dd dZdd Zedd ZdS )ComponenteListaMaterialeszA
    Componentes que forman parte de una lista de materiales
    componentesr#   r"   componente_en_listas
Componente      g-C6?zCantidad requerida)
max_digitsdecimal_places
validatorsr         r   z% Desperdicio)rT   rU   r   rV   r   zOrden en ensamble)r   r   TObligatorio   zNotas del componente)r   r    r   c                   @   s0   e Zd ZdZdZddgZejddgddgZdS )	zComponenteListaMateriales.MetazComponente de ListazComponentes de Listalista_materialesordenr$   unique_componente_lista)fieldsnameN)	r'   r(   r)   r   r*   r,   r   UniqueConstraintconstraintsr-   r-   r-   r.   r/   |   s    r/   c                 C   s   | j  d| jj d| j S )Nz x z para )cantidadr$   r2   r[   r3   r-   r-   r.   r5      s   z!ComponenteListaMateriales.__str__c                 C   s8   | j du s
| jdu rtdS | j td| jtd   S )zCantidad incluyendo desperdicioNz0.01100)rb   desperdicior   r3   r-   r-   r.   cantidad_total   s   z(ComponenteListaMateriales.cantidad_totalN)r'   r(   r)   r=   r   r?   r   r@   r[   r   rK   r$   DecimalFieldr   rb   re   PositiveSmallIntegerFieldr\   BooleanFieldobligatoriorA   rJ   r/   r5   propertyrf   r-   r-   r-   r.   rN   Q   sX    rN   N)	django.dbr   django.core.validatorsr   decimalr   referencias.modelsr   Modelr   rN   r-   r-   r-   r.   <module>   s   J