325 lines
23 KiB
C#
325 lines
23 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.Linq;
|
|
using System.Text;
|
|
using System.Threading.Tasks;
|
|
using Microsoft.EntityFrameworkCore;
|
|
using tsUtilidades.Extensiones;
|
|
using System.Linq.Dynamic.Core;
|
|
|
|
namespace bdAsegasa.db
|
|
{
|
|
public partial class vf_cuentas
|
|
{
|
|
public static List<vf_cuentas> Obtiene_vf_cuentas(gestionasegasaEntities bd, int idEjercicio, int Nivel)
|
|
{
|
|
try
|
|
{
|
|
List<vf_cuentas> lc;
|
|
var ctasintermedias = bd.cuentas.Where(x => !x.EsCuentaFinal && x.idEjercicio == idEjercicio && x.NumeroCuenta.Length <= Nivel).ToList();
|
|
var ctasf = bd.vf_cuentas.Where(x => x.idEjercicio == idEjercicio).ToList();
|
|
|
|
if (Nivel == 8)
|
|
{
|
|
lc = ctasf;
|
|
}
|
|
else
|
|
{
|
|
lc = new List<vf_cuentas>();
|
|
foreach (var cta in ctasintermedias.Where(x => x.Nivel == Nivel))
|
|
{
|
|
var sumatorio = ctasf.Where(x => x.NumeroCuenta.StartsWith(cta.NumeroCuenta));
|
|
var nc = new vf_cuentas();
|
|
nc.idCuenta = cta.idCuenta;
|
|
nc.idEjercicio = cta.idEjercicio;
|
|
nc.Mote = cta.Mote;
|
|
nc.Denominacion = cta.Denominacion;
|
|
nc.idEmpresaAmortizacion = cta.idEmpresaAmortizacion;
|
|
nc.NumeroCuenta = cta.NumeroCuenta;
|
|
nc.Observaciones = cta.Observaciones;
|
|
|
|
nc.PresupuestoEnero = Math.Round(sumatorio.Sum(x => x.PresupuestoEnero), 2, MidpointRounding.AwayFromZero);
|
|
nc.PresupuestoFebrero = Math.Round(sumatorio.Sum(x => x.PresupuestoFebrero), 2, MidpointRounding.AwayFromZero);
|
|
nc.PresupuestoMarzo = Math.Round(sumatorio.Sum(x => x.PresupuestoMarzo), 2, MidpointRounding.AwayFromZero);
|
|
nc.PresupuestoAbril = Math.Round(sumatorio.Sum(x => x.PresupuestoAbril), 2, MidpointRounding.AwayFromZero);
|
|
nc.PresupuestoMayo = Math.Round(sumatorio.Sum(x => x.PresupuestoMayo), 2, MidpointRounding.AwayFromZero);
|
|
nc.PresupuestoJunio = Math.Round(sumatorio.Sum(x => x.PresupuestoJunio), 2, MidpointRounding.AwayFromZero);
|
|
nc.PresupuestoJulio = Math.Round(sumatorio.Sum(x => x.PresupuestoJulio), 2, MidpointRounding.AwayFromZero);
|
|
nc.PresupuestoAgosto = Math.Round(sumatorio.Sum(x => x.PresupuestoAgosto), 2, MidpointRounding.AwayFromZero);
|
|
nc.PresupuestoSeptiembre = Math.Round(sumatorio.Sum(x => x.PresupuestoSeptiembre), 2, MidpointRounding.AwayFromZero);
|
|
nc.PresupuestoOctubre = Math.Round(sumatorio.Sum(x => x.PresupuestoOctubre), 2, MidpointRounding.AwayFromZero);
|
|
nc.PresupuestoNoviembre = Math.Round(sumatorio.Sum(x => x.PresupuestoNoviembre), 2, MidpointRounding.AwayFromZero);
|
|
nc.PresupuestoDiciembre = Math.Round(sumatorio.Sum(x => x.PresupuestoDiciembre), 2, MidpointRounding.AwayFromZero);
|
|
|
|
nc.DebeEnero = Math.Round(sumatorio.Sum(x => x.DebeEnero.NothingA0()), 2, MidpointRounding.AwayFromZero);
|
|
nc.DebeFebrero = Math.Round(sumatorio.Sum(x => x.DebeFebrero.NothingA0()), 2, MidpointRounding.AwayFromZero);
|
|
nc.DebeMarzo = Math.Round(sumatorio.Sum(x => x.DebeMarzo.NothingA0()), 2, MidpointRounding.AwayFromZero);
|
|
nc.DebeAbril = Math.Round(sumatorio.Sum(x => x.DebeAbril.NothingA0()), 2, MidpointRounding.AwayFromZero);
|
|
nc.DebeMayo = Math.Round(sumatorio.Sum(x => x.DebeMayo.NothingA0()), 2, MidpointRounding.AwayFromZero);
|
|
nc.DebeJunio = Math.Round(sumatorio.Sum(x => x.DebeJunio.NothingA0()), 2, MidpointRounding.AwayFromZero);
|
|
nc.DebeJulio = Math.Round(sumatorio.Sum(x => x.DebeJulio.NothingA0()), 2, MidpointRounding.AwayFromZero);
|
|
nc.DebeAgosto = Math.Round(sumatorio.Sum(x => x.DebeAgosto.NothingA0()), 2, MidpointRounding.AwayFromZero);
|
|
nc.DebeSeptiembre = Math.Round(sumatorio.Sum(x => x.DebeSeptiembre.NothingA0()), 2, MidpointRounding.AwayFromZero);
|
|
nc.DebeOctubre = Math.Round(sumatorio.Sum(x => x.DebeOctubre.NothingA0()), 2, MidpointRounding.AwayFromZero);
|
|
nc.DebeNoviembre = Math.Round(sumatorio.Sum(x => x.DebeNoviembre.NothingA0()), 2, MidpointRounding.AwayFromZero);
|
|
nc.DebeDiciembre = Math.Round(sumatorio.Sum(x => x.DebeDiciembre.NothingA0()), 2, MidpointRounding.AwayFromZero);
|
|
|
|
nc.HaberEnero = Math.Round(sumatorio.Sum(x => x.HaberEnero.NothingA0()), 2, MidpointRounding.AwayFromZero);
|
|
nc.HaberFebrero = Math.Round(sumatorio.Sum(x => x.HaberFebrero.NothingA0()), 2, MidpointRounding.AwayFromZero);
|
|
nc.HaberMarzo = Math.Round(sumatorio.Sum(x => x.HaberMarzo.NothingA0()), 2, MidpointRounding.AwayFromZero);
|
|
nc.HaberAbril = Math.Round(sumatorio.Sum(x => x.HaberAbril.NothingA0()), 2, MidpointRounding.AwayFromZero);
|
|
nc.HaberMayo = Math.Round(sumatorio.Sum(x => x.HaberMayo.NothingA0()), 2, MidpointRounding.AwayFromZero);
|
|
nc.HaberJunio = Math.Round(sumatorio.Sum(x => x.HaberJunio.NothingA0()), 2, MidpointRounding.AwayFromZero);
|
|
nc.HaberJulio = Math.Round(sumatorio.Sum(x => x.HaberJulio.NothingA0()), 2, MidpointRounding.AwayFromZero);
|
|
nc.HaberAgosto = Math.Round(sumatorio.Sum(x => x.HaberAgosto.NothingA0()), 2, MidpointRounding.AwayFromZero);
|
|
nc.HaberSeptiembre = Math.Round(sumatorio.Sum(x => x.HaberSeptiembre.NothingA0()), 2, MidpointRounding.AwayFromZero);
|
|
nc.HaberOctubre = Math.Round(sumatorio.Sum(x => x.HaberOctubre.NothingA0()), 2, MidpointRounding.AwayFromZero);
|
|
nc.HaberNoviembre = Math.Round(sumatorio.Sum(x => x.HaberNoviembre.NothingA0()), 2, MidpointRounding.AwayFromZero);
|
|
nc.HaberDiciembre = Math.Round(sumatorio.Sum(x => x.HaberDiciembre.NothingA0()), 2, MidpointRounding.AwayFromZero);
|
|
|
|
nc.TotalDebe = Math.Round(sumatorio.Sum(x => x.TotalDebe), 2, MidpointRounding.AwayFromZero);
|
|
nc.TotalHaber = Math.Round(sumatorio.Sum(x => x.TotalHaber), 2, MidpointRounding.AwayFromZero);
|
|
lc.Add(nc);
|
|
}
|
|
}
|
|
|
|
foreach (var cta in lc)
|
|
{
|
|
try
|
|
{
|
|
var cta1 = ctasintermedias.First(x => x.NumeroCuenta == cta.NumeroCuenta.Substring(0, 1));
|
|
cta.Grupo1 = cta1.NumeroCuenta + " " + cta1.Denominacion;
|
|
if (cta.Nivel > 1)
|
|
{
|
|
var cta2 = ctasintermedias.First(x => x.NumeroCuenta == cta.NumeroCuenta.Substring(0, 2));
|
|
cta.Grupo2 = cta2.NumeroCuenta + " " + cta2.Denominacion;
|
|
if (cta.Nivel > 2)
|
|
{
|
|
var cta3 = ctasintermedias.First(x => x.NumeroCuenta == cta.NumeroCuenta.Substring(0, 3));
|
|
cta.Grupo3 = cta3.NumeroCuenta + " " + cta3.Denominacion;
|
|
if (cta.Nivel > 3)
|
|
{
|
|
var cta4 = ctasintermedias.First(x => x.NumeroCuenta == cta.NumeroCuenta.Substring(0, 4));
|
|
cta.Grupo4 = cta4.NumeroCuenta + " " + cta4.Denominacion;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
throw new Exception("Error obteniendo cuentas intermedia de la cuenta " + cta.NumeroCuenta + " " + ex.Message, ex);
|
|
}
|
|
}
|
|
return lc;
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
throw new Exception(ex.Message, ex);
|
|
}
|
|
}
|
|
|
|
public static List<vf_cuentas> Obtiene_vf_cuentas(gestionasegasaEntities bd, int[] Ejercicios, int Nivel, string ExpresionBusqueda)
|
|
{
|
|
try
|
|
{
|
|
List<vf_cuentas> lc;
|
|
IQueryable<cuentas> qCtasIntermedias = bd.cuentas.Where(x => !x.EsCuentaFinal && Ejercicios.Contains(x.idEjercicio) && x.NumeroCuenta.Length <= Nivel);
|
|
IQueryable<vf_cuentas> qcastf;
|
|
|
|
if (string.IsNullOrEmpty(ExpresionBusqueda))
|
|
{
|
|
qcastf = bd.vf_cuentas.AsQueryable();
|
|
}
|
|
else
|
|
{
|
|
// Using System.Linq.Dynamic.Core for dynamic filtering
|
|
qcastf = bd.vf_cuentas.Where(ExpresionBusqueda);
|
|
if (Nivel < 8)
|
|
{
|
|
string expr = $"NumeroCuenta.Length<{Nivel} or ({ExpresionBusqueda})";
|
|
qCtasIntermedias = qCtasIntermedias.Where(expr);
|
|
}
|
|
}
|
|
|
|
var ctasintermedias = qCtasIntermedias.ToList();
|
|
var ctasf = qcastf.Where(x => Ejercicios.Contains(x.idEjercicio)).ToList();
|
|
|
|
if (Nivel == 8)
|
|
{
|
|
lc = ctasf;
|
|
}
|
|
else
|
|
{
|
|
lc = new List<vf_cuentas>();
|
|
foreach (var cta in ctasintermedias.Where(x => x.Nivel == Nivel))
|
|
{
|
|
var sumatorio = ctasf.Where(x => x.idEjercicio == cta.idEjercicio && x.NumeroCuenta.StartsWith(cta.NumeroCuenta));
|
|
var nc = new vf_cuentas();
|
|
nc.idCuenta = cta.idCuenta;
|
|
nc.idEjercicio = cta.idEjercicio;
|
|
nc.Mote = cta.Mote;
|
|
nc.Denominacion = cta.Denominacion;
|
|
nc.idEmpresaAmortizacion = cta.idEmpresaAmortizacion;
|
|
nc.NumeroCuenta = cta.NumeroCuenta;
|
|
nc.Observaciones = cta.Observaciones;
|
|
|
|
nc.PresupuestoEnero = Math.Round(sumatorio.Sum(x => x.PresupuestoEnero), 2, MidpointRounding.AwayFromZero);
|
|
nc.PresupuestoFebrero = Math.Round(sumatorio.Sum(x => x.PresupuestoFebrero), 2, MidpointRounding.AwayFromZero);
|
|
nc.PresupuestoMarzo = Math.Round(sumatorio.Sum(x => x.PresupuestoMarzo), 2, MidpointRounding.AwayFromZero);
|
|
nc.PresupuestoAbril = Math.Round(sumatorio.Sum(x => x.PresupuestoAbril), 2, MidpointRounding.AwayFromZero);
|
|
nc.PresupuestoMayo = Math.Round(sumatorio.Sum(x => x.PresupuestoMayo), 2, MidpointRounding.AwayFromZero);
|
|
nc.PresupuestoJunio = Math.Round(sumatorio.Sum(x => x.PresupuestoJunio), 2, MidpointRounding.AwayFromZero);
|
|
nc.PresupuestoJulio = Math.Round(sumatorio.Sum(x => x.PresupuestoJulio), 2, MidpointRounding.AwayFromZero);
|
|
nc.PresupuestoAgosto = Math.Round(sumatorio.Sum(x => x.PresupuestoAgosto), 2, MidpointRounding.AwayFromZero);
|
|
nc.PresupuestoSeptiembre = Math.Round(sumatorio.Sum(x => x.PresupuestoSeptiembre), 2, MidpointRounding.AwayFromZero);
|
|
nc.PresupuestoOctubre = Math.Round(sumatorio.Sum(x => x.PresupuestoOctubre), 2, MidpointRounding.AwayFromZero);
|
|
nc.PresupuestoNoviembre = Math.Round(sumatorio.Sum(x => x.PresupuestoNoviembre), 2, MidpointRounding.AwayFromZero);
|
|
nc.PresupuestoDiciembre = Math.Round(sumatorio.Sum(x => x.PresupuestoDiciembre), 2, MidpointRounding.AwayFromZero);
|
|
|
|
nc.DebeEnero = Math.Round(sumatorio.Sum(x => x.DebeEnero.NothingA0()), 2, MidpointRounding.AwayFromZero);
|
|
nc.DebeFebrero = Math.Round(sumatorio.Sum(x => x.DebeFebrero.NothingA0()), 2, MidpointRounding.AwayFromZero);
|
|
nc.DebeMarzo = Math.Round(sumatorio.Sum(x => x.DebeMarzo.NothingA0()), 2, MidpointRounding.AwayFromZero);
|
|
nc.DebeAbril = Math.Round(sumatorio.Sum(x => x.DebeAbril.NothingA0()), 2, MidpointRounding.AwayFromZero);
|
|
nc.DebeMayo = Math.Round(sumatorio.Sum(x => x.DebeMayo.NothingA0()), 2, MidpointRounding.AwayFromZero);
|
|
nc.DebeJunio = Math.Round(sumatorio.Sum(x => x.DebeJunio.NothingA0()), 2, MidpointRounding.AwayFromZero);
|
|
nc.DebeJulio = Math.Round(sumatorio.Sum(x => x.DebeJulio.NothingA0()), 2, MidpointRounding.AwayFromZero);
|
|
nc.DebeAgosto = Math.Round(sumatorio.Sum(x => x.DebeAgosto.NothingA0()), 2, MidpointRounding.AwayFromZero);
|
|
nc.DebeSeptiembre = Math.Round(sumatorio.Sum(x => x.DebeSeptiembre.NothingA0()), 2, MidpointRounding.AwayFromZero);
|
|
nc.DebeOctubre = Math.Round(sumatorio.Sum(x => x.DebeOctubre.NothingA0()), 2, MidpointRounding.AwayFromZero);
|
|
nc.DebeNoviembre = Math.Round(sumatorio.Sum(x => x.DebeNoviembre.NothingA0()), 2, MidpointRounding.AwayFromZero);
|
|
nc.DebeDiciembre = Math.Round(sumatorio.Sum(x => x.DebeDiciembre.NothingA0()), 2, MidpointRounding.AwayFromZero);
|
|
|
|
nc.HaberEnero = Math.Round(sumatorio.Sum(x => x.HaberEnero.NothingA0()), 2, MidpointRounding.AwayFromZero);
|
|
nc.HaberFebrero = Math.Round(sumatorio.Sum(x => x.HaberFebrero.NothingA0()), 2, MidpointRounding.AwayFromZero);
|
|
nc.HaberMarzo = Math.Round(sumatorio.Sum(x => x.HaberMarzo.NothingA0()), 2, MidpointRounding.AwayFromZero);
|
|
nc.HaberAbril = Math.Round(sumatorio.Sum(x => x.HaberAbril.NothingA0()), 2, MidpointRounding.AwayFromZero);
|
|
nc.HaberMayo = Math.Round(sumatorio.Sum(x => x.HaberMayo.NothingA0()), 2, MidpointRounding.AwayFromZero);
|
|
nc.HaberJunio = Math.Round(sumatorio.Sum(x => x.HaberJunio.NothingA0()), 2, MidpointRounding.AwayFromZero);
|
|
nc.HaberJulio = Math.Round(sumatorio.Sum(x => x.HaberJulio.NothingA0()), 2, MidpointRounding.AwayFromZero);
|
|
nc.HaberAgosto = Math.Round(sumatorio.Sum(x => x.HaberAgosto.NothingA0()), 2, MidpointRounding.AwayFromZero);
|
|
nc.HaberSeptiembre = Math.Round(sumatorio.Sum(x => x.HaberSeptiembre.NothingA0()), 2, MidpointRounding.AwayFromZero);
|
|
nc.HaberOctubre = Math.Round(sumatorio.Sum(x => x.HaberOctubre.NothingA0()), 2, MidpointRounding.AwayFromZero);
|
|
nc.HaberNoviembre = Math.Round(sumatorio.Sum(x => x.HaberNoviembre.NothingA0()), 2, MidpointRounding.AwayFromZero);
|
|
nc.HaberDiciembre = Math.Round(sumatorio.Sum(x => x.HaberDiciembre.NothingA0()), 2, MidpointRounding.AwayFromZero);
|
|
|
|
nc.TotalDebe = Math.Round(sumatorio.Sum(x => x.TotalDebe), 2, MidpointRounding.AwayFromZero);
|
|
nc.TotalHaber = Math.Round(sumatorio.Sum(x => x.TotalHaber), 2, MidpointRounding.AwayFromZero);
|
|
lc.Add(nc);
|
|
}
|
|
}
|
|
|
|
foreach (var cta in lc)
|
|
{
|
|
try
|
|
{
|
|
var cta1 = ctasintermedias.First(x => x.NumeroCuenta == cta.NumeroCuenta.Substring(0, 1) && x.idEjercicio == cta.idEjercicio);
|
|
cta.Grupo1 = cta1.NumeroCuenta + " " + cta1.Denominacion;
|
|
if (cta.Nivel > 1)
|
|
{
|
|
var cta2 = ctasintermedias.First(x => x.NumeroCuenta == cta.NumeroCuenta.Substring(0, 2) && x.idEjercicio == cta.idEjercicio);
|
|
cta.Grupo2 = cta2.NumeroCuenta + " " + cta2.Denominacion;
|
|
if (cta.Nivel > 2)
|
|
{
|
|
var cta3 = ctasintermedias.First(x => x.NumeroCuenta == cta.NumeroCuenta.Substring(0, 3) && x.idEjercicio == cta.idEjercicio);
|
|
cta.Grupo3 = cta3.NumeroCuenta + " " + cta3.Denominacion;
|
|
if (cta.Nivel > 3)
|
|
{
|
|
var cta4 = ctasintermedias.First(x => x.NumeroCuenta == cta.NumeroCuenta.Substring(0, 4) && x.idEjercicio == cta.idEjercicio);
|
|
cta.Grupo4 = cta4.NumeroCuenta + " " + cta4.Denominacion;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
throw new Exception("Error obteniendo cuentas intermedia de la cuenta " + cta.NumeroCuenta + " " + ex.Message, ex);
|
|
}
|
|
}
|
|
return lc;
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
throw new Exception(ex.Message, ex);
|
|
}
|
|
}
|
|
|
|
public string Grupo1 { get; set; }
|
|
public string Grupo2 { get; set; }
|
|
public string Grupo3 { get; set; }
|
|
public string Grupo4 { get; set; }
|
|
|
|
public int Nivel => NumeroCuenta.Length;
|
|
|
|
#region Saldos
|
|
public double SaldoEnero => Math.Round(DebeEnero.NothingA0() - HaberEnero.NothingA0(), 2, MidpointRounding.AwayFromZero);
|
|
public double SaldoFebrero => Math.Round(DebeFebrero.NothingA0() - HaberFebrero.NothingA0(), 2, MidpointRounding.AwayFromZero);
|
|
public double SaldoMarzo => Math.Round(DebeMarzo.NothingA0() - HaberMarzo.NothingA0(), 2, MidpointRounding.AwayFromZero);
|
|
public double SaldoAbril => Math.Round(DebeAbril.NothingA0() - HaberAbril.NothingA0(), 2, MidpointRounding.AwayFromZero);
|
|
public double SaldoMayo => Math.Round(DebeMayo.NothingA0() - HaberMayo.NothingA0(), 2, MidpointRounding.AwayFromZero);
|
|
public double SaldoJunio => Math.Round(DebeJunio.NothingA0() - HaberJunio.NothingA0(), 2, MidpointRounding.AwayFromZero);
|
|
public double SaldoJulio => Math.Round(DebeJulio.NothingA0() - HaberJulio.NothingA0(), 2, MidpointRounding.AwayFromZero);
|
|
public double SaldoAgosto => Math.Round(DebeAgosto.NothingA0() - HaberAgosto.NothingA0(), 2, MidpointRounding.AwayFromZero);
|
|
public double SaldoSeptiembre => Math.Round(DebeSeptiembre.NothingA0() - HaberSeptiembre.NothingA0(), 2, MidpointRounding.AwayFromZero);
|
|
public double SaldoOctubre => Math.Round(DebeOctubre.NothingA0() - HaberOctubre.NothingA0(), 2, MidpointRounding.AwayFromZero);
|
|
public double SaldoNoviembre => Math.Round(DebeNoviembre.NothingA0() - HaberNoviembre.NothingA0(), 2, MidpointRounding.AwayFromZero);
|
|
public double SaldoDiciembre => Math.Round(DebeDiciembre.NothingA0() - HaberDiciembre.NothingA0(), 2, MidpointRounding.AwayFromZero);
|
|
public double TotalSaldo => Math.Round(TotalDebe - TotalHaber, 2, MidpointRounding.AwayFromZero);
|
|
#endregion
|
|
|
|
#region Presupuestos
|
|
public double TotalPresupuestado => Math.Round(PresupuestoEnero + PresupuestoFebrero + PresupuestoMarzo + PresupuestoAbril + PresupuestoMayo + PresupuestoJunio + PresupuestoJulio + PresupuestoAgosto + PresupuestoSeptiembre + PresupuestoOctubre + PresupuestoNoviembre + PresupuestoDiciembre, 2, MidpointRounding.AwayFromZero);
|
|
public void ActualizaTotalPresupuestado() => OnPropertyChanged("TotalPresupuestado");
|
|
|
|
public double DesvioPresupuestoEnero => CalculoDesvio(PresupuestoEnero, SaldoEnero);
|
|
public double DesvioPresupuestoFebrero => CalculoDesvio(PresupuestoFebrero, SaldoFebrero);
|
|
public double DesvioPresupuestoMarzo => CalculoDesvio(PresupuestoMarzo, SaldoMarzo);
|
|
public double DesvioPresupuestoAbril => CalculoDesvio(PresupuestoAbril, SaldoAbril);
|
|
public double DesvioPresupuestoMayo => CalculoDesvio(PresupuestoMayo, SaldoMayo);
|
|
public double DesvioPresupuestoJunio => CalculoDesvio(PresupuestoJunio, SaldoJunio);
|
|
public double DesvioPresupuestoJulio => CalculoDesvio(PresupuestoJulio, SaldoJulio);
|
|
public double DesvioPresupuestoAgosto => CalculoDesvio(PresupuestoAgosto, SaldoAgosto);
|
|
public double DesvioPresupuestoSeptiembre => CalculoDesvio(PresupuestoSeptiembre, SaldoSeptiembre);
|
|
public double DesvioPresupuestoOctubre => CalculoDesvio(PresupuestoOctubre, SaldoOctubre);
|
|
public double DesvioPresupuestoNoviembre => CalculoDesvio(PresupuestoNoviembre, SaldoNoviembre);
|
|
public double DesvioPresupuestoDiciembre => CalculoDesvio(PresupuestoDiciembre, SaldoDiciembre);
|
|
public double DesvioPresupuestoTotal => CalculoDesvio(TotalPresupuestado, TotalSaldo);
|
|
|
|
private double CalculoDesvio(double presupuesto, double saldo)
|
|
{
|
|
if (string.IsNullOrEmpty(NumeroCuenta)) return 0;
|
|
char first = NumeroCuenta[0];
|
|
if (first == '6' || first == '7')
|
|
{
|
|
return Math.Round(Math.Abs(presupuesto) - Math.Abs(saldo), 2, MidpointRounding.AwayFromZero);
|
|
}
|
|
return 0;
|
|
}
|
|
|
|
public double PorcentajeDesvioPresupuestoEnero => CalculoPorcentajeDesvio(DesvioPresupuestoEnero, SaldoEnero);
|
|
public double PorcentajeDesvioPresupuestoFebrero => CalculoPorcentajeDesvio(DesvioPresupuestoFebrero, SaldoFebrero);
|
|
public double PorcentajeDesvioPresupuestoMarzo => CalculoPorcentajeDesvio(DesvioPresupuestoMarzo, SaldoMarzo);
|
|
public double PorcentajeDesvioPresupuestoAbril => CalculoPorcentajeDesvio(DesvioPresupuestoAbril, SaldoAbril);
|
|
public double PorcentajeDesvioPresupuestoMayo => CalculoPorcentajeDesvio(DesvioPresupuestoMayo, SaldoMayo);
|
|
public double PorcentajeDesvioPresupuestoJunio => CalculoPorcentajeDesvio(DesvioPresupuestoJunio, SaldoJunio);
|
|
public double PorcentajeDesvioPresupuestoJulio => CalculoPorcentajeDesvio(DesvioPresupuestoJulio, SaldoJulio);
|
|
public double PorcentajeDesvioPresupuestoAgosto => CalculoPorcentajeDesvio(DesvioPresupuestoAgosto, SaldoAgosto);
|
|
public double PorcentajeDesvioPresupuestoSeptiembre => CalculoPorcentajeDesvio(DesvioPresupuestoSeptiembre, SaldoSeptiembre);
|
|
public double PorcentajeDesvioPresupuestoOctubre => CalculoPorcentajeDesvio(DesvioPresupuestoOctubre, SaldoOctubre);
|
|
public double PorcentajeDesvioPresupuestoNoviembre => CalculoPorcentajeDesvio(DesvioPresupuestoNoviembre, SaldoNoviembre);
|
|
public double PorcentajeDesvioPresupuestoDiciembre => CalculoPorcentajeDesvio(DesvioPresupuestoDiciembre, SaldoDiciembre);
|
|
public double PorcentajeDesvioPresupuestoTotal => CalculoPorcentajeDesvio(DesvioPresupuestoTotal, TotalSaldo);
|
|
|
|
private double CalculoPorcentajeDesvio(double desvio, double saldo)
|
|
{
|
|
if (saldo == 0)
|
|
{
|
|
if (desvio < 0) return -100;
|
|
if (desvio > 0) return 100;
|
|
return 0;
|
|
}
|
|
return Math.Round(desvio * 100 / saldo, 2, MidpointRounding.AwayFromZero);
|
|
}
|
|
#endregion
|
|
}
|
|
}
|