a
    ;Xh                     @   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 d dl	m
Z
 e ZG dd dejZd	S )
    )models)datetime)get_user_model)Especies)Sum)timezonec                       s  e Zd Zg dZdZdZdZedfedfedfgZej	e
ejddd	Zejd
eddZejddddZejdddZejdddZej	eejddd	ZejejdddZejejdddZejdeedZejddZe Z dd Z! fddZ"e#dd Z$e#dd Z%e#dd Z&  Z'S )MetasModels))	semeadura	Semeadura)repiqueRepique)selecao_estufau   Seleção/EstufaZem_andamentoZfinalizada_completaZfinalizada_incompletazEm andamentozFinalizada completazFinalizada incompletaF)	on_deletenullblank2   r	   )
max_lengthchoicesdefaultr   )r   r   r   )r   r   T   )r   c                 C   s   d| j  d| jj S )Nz[Meta: z] )	tipo_metaespecienome_popularself r   5/var/www/viveiro_mudafortebrasil/apps/metas/models.py__str__3   s    zMetasModels.__str__c                    s~   t  | _t   }| j|  kr.| jkr<n n
| j| _n,|| jkr`| jrV| j	| _qh| j
| _n| j| _t j|i | d S N)r   nowdata_atualizacaodatedata_inicial
data_finalSTATUS_EM_ANDAMENTOstatusmeta_atingidaSTATUS_FINALIZADA_COMPLETASTATUS_FINALIZADA_INCOMPLETAsupersave)r   argskwargsZhoje	__class__r   r   r*   6   s    




zMetasModels.savec                 C   s   ddl m} | jdkrVddlm} |jj| j| j| j	dj
tdd}|d pT|d	S | jd
krddlm} |jj| j| j| j	dj
tdd}|d p|d	S | jdkrddlm} |jj| j| j| j	dj
tdd}|d p|d	S dS dS )u   
        Soma a quantidade feita no período, variando conforme tipo_meta:
          - semeadura -> soma Semeadura
          - repique -> soma Repique
          - etc.
        r   )Decimalr	   )r
   )Zlote__especieZdata_semeia__gteZdata_semeia__lteqtd_sementes_utilizada)totalr1   0r   )r   )semeadura__lote__especieZdata_repique__gteZdata_repique__ltequantidade_repicadar   )Selecao)r3   Zdata_selecao__gteZdata_selecao__ltequantidade_selecaoN)decimalr/   r   Zapps.lotes.modelsr
   objectsfilterr   r"   r#   	aggregater   Zapps.repique.modelsr   Zapps.estufa.modelsr5   )r   r/   r
   qsr   r5   r   r   r   quantidade_acumuladaJ   s@    


z MetasModels.quantidade_acumuladac                 C   s   | j | jkS r   )r<   
quantidader   r   r   r   r&   s   s    zMetasModels.meta_atingidac                 C   s$   | j dkrdS t| j| j  d dS )Nr   d      )r=   roundr<   r   r   r   r   percentual_cumpridow   s    
zMetasModels.percentual_cumprido)(__name__
__module____qualname__ZTIPO_META_CHOICESr$   r'   r(   ZSTATUS_CHOICESr   
ForeignKeyr   CASCADEr   	CharFieldr   PositiveIntegerFieldr=   	DateFieldr"   r#   UserSET_NULLZ
criado_porDateTimeFieldr   r   data_criacaor    r%   BooleanField
finalizadoManagerr8   r   r*   propertyr<   r&   rA   __classcell__r   r   r-   r   r      s>   
(
r   N)	django.dbr   r   django.contrib.authr   Zapps.especies.modelsr   django.db.modelsr   django.utilsr   rJ   Modelr   r   r   r   r   <module>   s   