140 lines
6.2 KiB
C#
140 lines
6.2 KiB
C#
using bdAsegasa;
|
|
using bdAsegasa.db;
|
|
using bdAsegasa.dbcontext;
|
|
using System;
|
|
using System.Collections.Generic;
|
|
using System.Linq;
|
|
|
|
namespace Servicio_Gestion_Asegasa.Procesos
|
|
{
|
|
public class ProcesosContabilidad
|
|
{
|
|
public static void CompruebaContabilidad()
|
|
{
|
|
using var bd = tscgestionasegasa.NuevoContexto();
|
|
var cta = bd.cuentascorreo.First(x => x.Codigo == "SEG.GENERALES");
|
|
string sDestinatarios = "sevilla@tecnosis.net";
|
|
|
|
var asis = bd.asientos.Where(x =>
|
|
x.Fecha < x.idEjercicioNavigation.FechaInicio ||
|
|
x.Fecha > x.idEjercicioNavigation.FechaFin ||
|
|
x.apuntes.Any(y => y.idCuentaNavigation.idEjercicio != x.idEjercicio)
|
|
).ToList();
|
|
|
|
if (asis.Count > 0)
|
|
{
|
|
var lFechaErronea = new List<asientos>();
|
|
foreach (var asi in asis)
|
|
{
|
|
var ej = bd.ejercicioscontables.FirstOrDefault(x =>
|
|
x.FechaCierre == null &&
|
|
(x.FechaInicio <= asi.Fecha && x.FechaFin >= asi.Fecha)
|
|
);
|
|
|
|
if (ej != null)
|
|
{
|
|
lFechaErronea.Add(asi);
|
|
}
|
|
else
|
|
{
|
|
if (asi.idEjercicio != ej.idEjercicio)
|
|
{
|
|
asi.idEjercicio = ej.idEjercicio;
|
|
}
|
|
foreach (var ap in asi.apuntes)
|
|
{
|
|
ap.idCuenta = bd.cuentas.First(x => x.NumeroCuenta == ap.idCuentaNavigation.NumeroCuenta && x.idEjercicio == asi.idEjercicio).idCuenta;
|
|
}
|
|
}
|
|
}
|
|
|
|
bd.SaveChanges();
|
|
|
|
if (lFechaErronea.Count > 0)
|
|
{
|
|
var lae = lFechaErronea.Select(x => new
|
|
{
|
|
NumeroAsiento = x.idAsiento,
|
|
Fecha = x.Fecha,
|
|
Ejercicio = x.idEjercicioNavigation.Descripcion
|
|
}).ToList();
|
|
|
|
byte[] fe = tsUtilidades.Excel.IEnumerableAExcel(lae);
|
|
|
|
bdAsegasa.db.correos.GeneraRegistroCorreoConAdjunto(bd,
|
|
"Existen apuntes con cuentas de un ejercicio diferente al del asiento (No se corrige el asiento)",
|
|
"Existen apuntes con cuentas de un ejercicio diferente al del asiento (Se corrige el asiento)",
|
|
cta, fe, "AsientosFechaErronea-" + DateTime.Now.ToString("yyyy-MM-dd") + ".xlsx",
|
|
"Asientos Con Fecha Erronea " + DateTime.Now.ToString("yyyy-MM-dd"),
|
|
sDestinatarios);
|
|
|
|
var idsErrores = lae.Select(y => y.NumeroAsiento).ToList();
|
|
asis = asis.Where(x => !idsErrores.Contains(x.idAsiento)).ToList();
|
|
}
|
|
|
|
var la = asis.Select(x => new
|
|
{
|
|
NumeroAsiento = x.idAsiento,
|
|
Fecha = x.Fecha,
|
|
Ejercicio = x.idEjercicioNavigation.Descripcion
|
|
}).ToList();
|
|
|
|
byte[] f = tsUtilidades.Excel.IEnumerableAExcel(la);
|
|
|
|
bdAsegasa.db.correos.GeneraRegistroCorreoConAdjunto(bd,
|
|
"Existen apuntes con cuentas de un ejercicio diferente al del asiento (Se corrige el asiento)",
|
|
"Existen apuntes con cuentas de un ejercicio diferente al del asiento (Se corrige el asiento)",
|
|
cta, f, "ApuntesIncoherentes-" + DateTime.Now.ToString("yyyy-MM-dd") + ".xlsx",
|
|
"Apuntes Incoherentes " + DateTime.Now.ToString("yyyy-MM-dd"),
|
|
sDestinatarios);
|
|
}
|
|
|
|
asis = bd.asientos.Where(x => x.Fecha < x.idEjercicioNavigation.FechaInicio || x.Fecha > x.idEjercicioNavigation.FechaFin).ToList();
|
|
|
|
if (asis.Count > 0)
|
|
{
|
|
var la = asis.Select(x => new
|
|
{
|
|
NumeroAsiento = x.idAsiento,
|
|
Fecha = x.Fecha,
|
|
Ejercicio = x.idEjercicioNavigation.Descripcion
|
|
}).ToList();
|
|
|
|
byte[] f = tsUtilidades.Excel.IEnumerableAExcel(la);
|
|
|
|
bdAsegasa.db.correos.GeneraRegistroCorreoConAdjunto(bd,
|
|
"Existen asientos con fecha incoherente al del ejercicio",
|
|
"Existen asientos con fecha incoherente al del ejercicio",
|
|
cta, f, "AsientosIncoherentes-" + DateTime.Now.ToString("yyyy-MM-dd") + ".xlsx",
|
|
"Asientos Incoherentes " + DateTime.Now.ToString("yyyy-MM-dd"),
|
|
sDestinatarios);
|
|
}
|
|
|
|
asis = bd.asientos.Where(x => Math.Round((double)x.apuntes.Sum(y => y.Debe ), 2) != Math.Round((double)x.apuntes.Sum(y => y.Haber), 2)).ToList();
|
|
|
|
if (asis.Count > 0)
|
|
{
|
|
var la = asis.Select(x => new
|
|
{
|
|
NumeroAsiento = x.idAsiento,
|
|
Fecha = x.Fecha,
|
|
Ejercicio = x.idEjercicioNavigation.Descripcion,
|
|
Debe = Math.Round((double)x.apuntes.Sum(y => y.Debe ), 2, MidpointRounding.AwayFromZero),
|
|
Haber = Math.Round((double)x.apuntes.Sum(y => y.Haber ), 2, MidpointRounding.AwayFromZero)
|
|
}).ToList();
|
|
|
|
byte[] f = tsUtilidades.Excel.IEnumerableAExcel(la);
|
|
|
|
bdAsegasa.db.correos.GeneraRegistroCorreoConAdjunto(bd,
|
|
"Existen asientos descuadrados",
|
|
"Existen asientos descuadrados",
|
|
cta, f, "AsientosDescuadrados-" + DateTime.Now.ToString("yyyy-MM-dd") + ".xlsx",
|
|
"Asientos Descuadrados " + DateTime.Now.ToString("yyyy-MM-dd"),
|
|
sDestinatarios);
|
|
}
|
|
|
|
asis = bd.asientos.Where(x => x.Fecha < x.idEjercicioNavigation.FechaInicio || x.Fecha > x.idEjercicioNavigation.FechaFin).ToList();
|
|
}
|
|
}
|
|
}
|