Files
Asegasa.NET/bdAsegasa/Extensiones/vf_cuentas.cs
2026-04-28 11:52:16 +02:00

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
}
}