|
@ -49,34 +49,29 @@ class Meta(models.Model): |
|
|
|
|
|
|
|
|
@property |
|
|
@property |
|
|
def valor_desejado(self): |
|
|
def valor_desejado(self): |
|
|
total_meses = (self.data_fim - self.data_inicio).days / 30 |
|
|
total_dias = (self.data_fim - self.data_inicio).days + 1 |
|
|
meses_gastos = (date.today() - self.data_inicio).days / 30 |
|
|
dias_gastos = (date.today() - self.data_inicio).days + 1 |
|
|
meta_mensal = self.valor_meta / total_meses |
|
|
meta_dia = self.valor_meta / total_dias |
|
|
return meta_mensal * meses_gastos |
|
|
return meta_dia * dias_gastos |
|
|
|
|
|
|
|
|
@property |
|
|
@property |
|
|
def percentual_desejado_low(self): |
|
|
def percentual_desejado_low(self): |
|
|
return self.valor_desejado * 0.9 / self.valor_meta |
|
|
return (self.valor_desejado / self.valor_meta) - 0.05 # 5% abaixo do desejado |
|
|
|
|
|
|
|
|
@property |
|
|
@property |
|
|
def percentual_desejado_high(self): |
|
|
def percentual_desejado_high(self): |
|
|
return self.valor_desejado * 1.1 / self.valor_meta |
|
|
return (self.valor_desejado / self.valor_meta) + 0.05 # 5% acima do desejado |
|
|
|
|
|
|
|
|
@property |
|
|
@property |
|
|
def saude(self): |
|
|
def saude(self): |
|
|
valor_executado = self.valor_executado |
|
|
percentual_concluido = self.percentual_concluido / 100.0 |
|
|
if valor_executado >= self.valor_meta: |
|
|
if percentual_concluido >= 1: |
|
|
return 'A2BBED' # Blue |
|
|
return 'A2BBED' # Blue |
|
|
|
|
|
|
|
|
total_meses = (self.data_fim - self.data_inicio).days / 30 |
|
|
if percentual_concluido > self.percentual_desejado_high: |
|
|
meses_gastos = (date.today() - self.data_inicio).days / 30 |
|
|
|
|
|
meta_mensal = self.valor_meta / total_meses |
|
|
|
|
|
valor_desejado = meta_mensal * meses_gastos |
|
|
|
|
|
|
|
|
|
|
|
if valor_executado > (valor_desejado * 1.1): |
|
|
|
|
|
return '89D7AF' # Green |
|
|
return '89D7AF' # Green |
|
|
|
|
|
|
|
|
if valor_executado > (valor_desejado * 0.9): |
|
|
if percentual_concluido > self.percentual_desejado_low: |
|
|
return 'FFDB6E' # Orange |
|
|
return 'FFDB6E' # Orange |
|
|
|
|
|
|
|
|
return 'E74A69' # Red |
|
|
return 'E74A69' # Red |
|
|