a
    ;Xh~                     @   sr   d dl mZ d dlmZ d dlmZ d dlmZ d dlZG dd dej	Z
G dd	 d	ej	ZG d
d dej	ZdS )    )models)FornecedoresModels)timezone)UserNc                   @   s0   e Zd ZejdddZejdddZdd ZdS )CategoriaInsumod   T)
max_lengthuniqueblanknullc                 C   s   | j S )N)nomeself r   7/var/www/viveiro_mudafortebrasil/apps/estoque/models.py__str__   s    zCategoriaInsumo.__str__N)	__name__
__module____qualname__r   	CharFieldr   	TextField	descricaor   r   r   r   r   r      s   r   c                       sV  e Zd Zg dZejdddddZejdddddZejdddddZejd	d
dddZ	ejdedddZ
ejdejddddZejddddZejddg ddZejdddddZejddddZejddddZejddddZejddddddZejddddddZejeejddd Zejd!dddZd"d# Z fd$d%Zd&d' Z  ZS )(ItemEstoque))Z128u   128 células)Z200u   200 células)Z288u   288 células   T)r   r	   r   r   u   Nome Popular da Espécier   )r   r   r   zNome do Itemu   Nome Científico      )r   choicesr   r   r   Zitens)	on_deleter   r   related_nameZ
Quantidade   
max_digitsdecimal_placeszUnidade de Medida))ZkgZ	Kilograma)gZGramas)lZLitros)mlZ
Mililitros)ZunZUnidades)ZscZSacosr   r   zLocal de ArmazenamentozData de Validader
   zData de Recebimento/ComprazData Prevista para Descarteu   Custo Unitário (R$)
      )r"   r#   r   r   zValor da Compra (R$))r   r   r   u   Observações / Notasc                 C   s   | j p| jpd| j S )NzItem #)nome_especier   idr   r   r   r   r   9   s    zItemEstoque.__str__c                    sx   | j sbtjjddd}d}|D ]0}|rtd|rt|dd }t||}qd|d	 d
| _ t	 j
|i | d S )Ncodigo_itemT)flatr   z^ITEM-\d{4}$-zITEM-   04d)r,   r   objectsvalues_listrematchintsplitmaxsupersave)r   argskwargsZcodigosmax_numcnum	__class__r   r   r:   <   s    zItemEstoque.savec                 C   sN   |dkr|  j |7  _ n*|dkrB| j |kr:|  j |8  _ ntd|   d S Nentradasaidau/   Quantidade insuficiente em estoque para saída.)
quantidade
ValueErrorr:   )r   rE   tipor   r   r   atualizar_quantidadeJ   s    
z ItemEstoque.atualizar_quantidade) r   r   r   ZTIPOS_BANDEJAr   r   r,   r*   r   nome_cientificoZtipo_bandeja
ForeignKeySET_NULL	categoriaDecimalFieldrE   unidade_medidaZlocalizacao	DateFieldZdata_validadeZdata_recebimentoZdata_descarte_previstaZcusto_unitarioZcustor   
fornecedorr   Znotasr   r:   rH   __classcell__r   r   r@   r   r      s0   r   c                       s   e Zd ZdZejeejdZej	dddZ
ejdedZejejdZejeejd	d
Zejd	d	dZdd Z fddZ  ZS )MovimentacaoEstoque))rC   ZEntrada)rD   u   Saída)r   r    r   r!      r'   )defaultT)r   r   r
   c                 C   s*   | j   d| j d| jj d| jj S )Nz de  )rG   
capitalizerE   itemrN   r   r   r   r   r   r   c   s    zMovimentacaoEstoque.__str__c                    s   | j d u rf| jdkr(| j j| j7  _n4| jdkr\| jj| jkrT| j j| j8  _ntd| j  tt| j|i | d S rB   )pkrG   rW   rE   rF   r:   r9   rR   )r   r;   r<   r@   r   r   r:   f   s    



zMovimentacaoEstoque.save)r   r   r   ZTIPO_MOVIMENTACAOr   rJ   r   CASCADErW   rM   rE   r   rG   DateTimeFieldr   nowdatar   rK   Zresponsavelr   observacoesr   r:   rQ   r   r   r@   r   rR   V   s   rR   )	django.dbr   Zapps.fornecedores.modelsr   django.utilsr   django.contrib.auth.modelsr   r4   Modelr   r   rR   r   r   r   r   <module>   s   H