private void fperiodo_PeriodoSeleccionadoOk_BalanceGeneral(object sender, Periodo.PeriodoSeleccion e)
        {
            var r02 = Globals.MyData.Configuracion_CtasCierre();

            if (r02.Result == OOB.Resultado.EnumResult.isError)
            {
                Helpers.Msg.Error(r02.Mensaje);
                return;
            }

            var r03 = Globals.MyData.Utilidad_Acumulada_Hasta_Periodo(e.Hasta);

            if (r03.Result == OOB.Resultado.EnumResult.isError)
            {
                Helpers.Msg.Error(r03.Mensaje);
                return;
            }

            var filtro = new OOB.Reportes.Balances.General.Filtro();

            filtro.CuentaCierreMes = r02.Entidad.CtaCierreMes;
            filtro.UtilidadPeriodo = (r03.Entidad);
            filtro.Desde           = e.Desde;
            filtro.Hasta           = e.Hasta;

            var r04 = Globals.MyData.Reportes_Balance_General(filtro);

            if (r04.Result == OOB.Resultado.EnumResult.isError)
            {
                Helpers.Msg.Error(r04.Mensaje);
                return;
            }

            Globals.MyReports.Balance_General(r04.Lista, e.Hasta, DatosNegocio);
        }
        private void ReporteBalanceGeneral()
        {
            //UTILIDAD DEL PERIODO
            var r01 = Globals.MyData.Periodo_Utilidad();

            if (r01.Result == OOB.Resultado.EnumResult.isError)
            {
                Helpers.Msg.Error(r01.Mensaje);
                return;
            }

            //CUAL ES LA CUENTA DE UTILIDAD DEL EJERCICIO
            var r02 = Globals.MyData.Configuracion_CtasCierre();

            if (r02.Result == OOB.Resultado.EnumResult.isError)
            {
                Helpers.Msg.Error(r02.Mensaje);
                return;
            }

            //SALDO DE CUENTA UTILIDAD DEL EJERCICIO
            var r02_01 = Globals.MyData.PlanCta_GetById(r02.Entidad.CtaCierreMes.Id);

            if (r02_01.Result == OOB.Resultado.EnumResult.isError)
            {
                Helpers.Msg.Error(r02_01.Mensaje);
                return;
            }

            //UTILIDAD ACUMULADA MES ANTERIOR
            var utilidadAcumulada = 0.0m;
            var r03 = Globals.MyData.Utilidad_Acumulada();

            if (r03.Result == OOB.Resultado.EnumResult.isError)
            {
                Helpers.Msg.Error(r03.Mensaje);
                return;
            }
            utilidadAcumulada = r03.Entidad * (-1);  // LA UTILIDAD SIEMPRE ES NEGATIVA, POR LA NATURALEZA DE LA CUENTE

            var filtro = new OOB.Reportes.Balances.General.Filtro();

            filtro.CuentaCierreMes = r02_01.Entidad;
            filtro.UtilidadPeriodo = (r01.Entidad + utilidadAcumulada);
            filtro.SaldoCtaCierre  = r02_01.Entidad.Saldo * (-1);

            var r04 = Globals.MyData.Reportes_Balance_General(filtro);

            if (r04.Result == OOB.Resultado.EnumResult.isError)
            {
                Helpers.Msg.Error(r04.Mensaje);
                return;
            }

            Globals.MyReports.Balance_General(r04.Lista, PeriodoActual, DatosNegocio);
        }
        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);
        }