public OOB.Resultado.ResultadoLista <OOB.Reportes.Balances.General.Ficha> Reportes_Balance_General(OOB.Reportes.Balances.General.Filtro filtro)
        {
            var result = new OOB.Resultado.ResultadoLista <OOB.Reportes.Balances.General.Ficha>();

            try
            {
                var filtroDTO = new DTO.Reportes.Balances.General.Filtro();
                filtroDTO.IdCtaCierre     = filtro.CuentaCierreMes.Id;
                filtroDTO.UtilidadPeriodo = filtro.UtilidadPeriodo;
                filtroDTO.SaldoCtaCierre  = filtro.SaldoCtaCierre;

                if (filtro.Desde != null && filtro.Hasta != null)
                {
                    filtroDTO.DesdePeriodo = new DTO.Reportes.Balances.Historico()
                    {
                        MesHistorico = filtro.Desde.MesActual,
                        AnoHistorico = filtro.Desde.AnoActual
                    };
                    filtroDTO.HastaPeriodo = new DTO.Reportes.Balances.Historico()
                    {
                        MesHistorico = filtro.Hasta.MesActual,
                        AnoHistorico = filtro.Hasta.AnoActual
                    };
                }

                var resultDTO = _servicio.Reportes_Balances_General(filtroDTO);
                if (resultDTO.Result == DTO.EnumResult.isError)
                {
                    throw new Exception(resultDTO.Mensaje);
                }

                if (resultDTO.Lista != null)
                {
                    result.cntRegistro = resultDTO.cntRegistro;
                    result.Lista       = resultDTO.Lista.OrderBy(o => o.Codigo).Select(item =>
                    {
                        return(new OOB.Reportes.Balances.General.Ficha()
                        {
                            Codigo = item.Codigo,
                            Nombre = item.Nombre,
                            Nivel = item.Nivel,
                            SaldoAnterior = item.SaldoAnterior,
                            Debe = item.Debe,
                            Haber = item.Haber,
                            IsTotal = false,
                        });
                    }).ToList();
                }
                else
                {
                    result.Lista = new List <OOB.Reportes.Balances.General.Ficha>();
                }
            }
            catch (Exception e)
            {
                result.Mensaje = e.Message;
                result.Result  = OOB.Resultado.EnumResult.isError;
            }
            return(result);
        }
        public ResultadoLista <DTO.Reportes.Balances.General.Ficha> Reporte_Balance_General(DTO.Reportes.Balances.General.Filtro filtro)
        {
            var result = new ResultadoLista <DTO.Reportes.Balances.General.Ficha>();

            try
            {
                using (var ctx = new dBEntities(_cn.ConnectionString))
                {
                    if (filtro.DesdePeriodo == null && filtro.HastaPeriodo == null)
                    {
                        var q = ctx.contabilidad_plancta.Where(t => (t.codigo.Substring(0, 1) == "1" || t.codigo.Substring(0, 1) == "2" || t.codigo.Substring(0, 1) == "3"))
                                .ToList();

                        if (q.Count > 0)
                        {
                            var entCtaCierre = q.FirstOrDefault(c => c.id == filtro.IdCtaCierre);
                            if (entCtaCierre != null)
                            {
                                var xmov = (entCtaCierre.debe - entCtaCierre.haber);

                                entCtaCierre.saldoAnterior = filtro.UtilidadPeriodo;
                                var nivel = entCtaCierre.nivel;
                                if (nivel >= 1)
                                {
                                    var entNiv = entCtaCierre;
                                    for (var nv = nivel; nv > 1; nv--)
                                    {
                                        entNiv = entNiv.contabilidad_plancta2;
                                        entNiv.saldoAnterior += (filtro.UtilidadPeriodo + filtro.SaldoCtaCierre) + xmov;
                                    }
                                }
                            }

                            var xlista = q.Where(s => s.codigo.Length >= 9 && s.codigo.Substring(0, 9) == "3.1.1.03.").ToList();

                            var list = q.Select(d =>
                            {
                                return(new DTO.Reportes.Balances.General.Ficha()
                                {
                                    Id = d.id,
                                    Codigo = d.codigo,
                                    Nombre = d.descripcion,
                                    Nivel = d.nivel,
                                    SaldoAnterior = d.saldoAnterior,
                                    Debe = d.debe,
                                    Haber = d.haber,
                                });
                            }).ToList();

                            result.cntRegistro = list.Count();
                            result.Lista       = list;
                        }
                    }
                    else
                    {
                        var q = ctx.contabilidad_historico.Where(t =>
                                                                 (t.mesHistorico >= filtro.DesdePeriodo.MesHistorico && t.anoHistorico >= filtro.DesdePeriodo.AnoHistorico &&
                                                                  t.mesHistorico <= filtro.HastaPeriodo.MesHistorico && t.anoHistorico <= filtro.HastaPeriodo.AnoHistorico) &&
                                                                 (t.codigo.Substring(0, 1) == "1" || t.codigo.Substring(0, 1) == "2" || t.codigo.Substring(0, 1) == "3")).
                                GroupBy(g => new
                        {
                            key     = g.idCta,
                            idCta   = g.idCta,
                            idPadre = g.idPadre,
                            codigo  = g.codigo,
                            nombre  = g.descripcion,
                            nivel   = g.nivel
                        }).
                                Select(s => new HistGeneral
                        {
                            idCta         = s.Key.idCta,
                            idPadre       = s.Key.idPadre,
                            codigo        = s.Key.codigo,
                            nombre        = s.Key.nombre,
                            nivel         = s.Key.nivel,
                            debe          = s.Sum(t => t.debe),
                            haber         = s.Sum(t => t.haber),
                            saldoAnterior = s.Where(t => t.mesHistorico == filtro.DesdePeriodo.MesHistorico && t.anoHistorico == filtro.DesdePeriodo.AnoHistorico).FirstOrDefault().saldoAnterior
                        })
                                .ToList();

                        if (q.Count > 0)
                        {
                            ////ASIGNAR UTILIDAD DEL PERIODO A LA CUENTA DE AJUSTE DEL PATRIMONIO
                            var entCtaCierre = q.FirstOrDefault(c => c.idCta == filtro.IdCtaCierre);
                            if (entCtaCierre != null)
                            {
                                //var xmov = entCtaCierre.saldoAnterior


                                var xmov = entCtaCierre.saldoAnterior + (entCtaCierre.debe - entCtaCierre.haber);
                                entCtaCierre.debe  = 0.0m;
                                entCtaCierre.haber = 0.0m;


                                entCtaCierre.saldoAnterior = (filtro.UtilidadPeriodo * (-1));
                                var nivel = entCtaCierre.nivel;
                                if (nivel >= 1)
                                {
                                    var entNiv = entCtaCierre;
                                    for (var nv = nivel; nv > 1; nv--)
                                    {
                                        entNiv = q.FirstOrDefault(c => c.idCta == entNiv.idPadre);  //entNiv.contabilidad_plancta2;
                                        if (entNiv != null)
                                        {
                                            var xmv = (entCtaCierre.debe - entCtaCierre.haber);
                                            xmv = 0;
                                            entNiv.saldoAnterior -= xmov;
                                            entNiv.saldoAnterior += ((filtro.UtilidadPeriodo * (-1)) + xmv);
                                            // entNiv.saldoAnterior += (filtro.UtilidadPeriodo * (-1));
                                        }
                                    }
                                }
                            }

                            var list = q.Select(d =>
                            {
                                return(new DTO.Reportes.Balances.General.Ficha()
                                {
                                    Id = d.idCta,
                                    Codigo = d.codigo,
                                    Nombre = d.nombre,
                                    Nivel = d.nivel,
                                    SaldoAnterior = d.saldoAnterior,
                                    Debe = d.debe,
                                    Haber = d.haber,
                                });
                            }).ToList();

                            result.cntRegistro = list.Count();
                            result.Lista       = list;
                        }
                    }
                }
            }
            catch (Exception e)
            {
                result.Mensaje = e.Message;
                result.Result  = DTO.EnumResult.isError;
            }

            return(result);
        }
Пример #3
0
 public DTO.ResultadoLista <DTO.Reportes.Balances.General.Ficha> Reportes_Balances_General(DTO.Reportes.Balances.General.Filtro filtro)
 {
     return(provider.Reporte_Balance_General(filtro));
 }