public OOB.Resultado.Resultado Periodo_Cerrar(OOB.Contable.Periodo.CerrarMes ficha)
        {
            var result = new OOB.Resultado.Resultado();

            var fichaDTO = new DTO.Contable.Periodo.Cerrar()
            {
                IdCtaCierre       = ficha.CuentaCierreMes.Id,
                MesActual         = ficha.PeriodoActual.MesActual,
                AnoActual         = ficha.PeriodoActual.AnoActual,
                IdPeriodoActual   = ficha.PeriodoActual.Id,
                UtilidadPeriodo   = ficha.UtilidadPeriodo,
                UtilidadAcumulada = ficha.UtilidadAcumulada,
            };
            var resultDTO = _servicio.Contable_Periodo_CerrarMes(fichaDTO);

            if (resultDTO.Result == DTO.EnumResult.isError)
            {
                result.Result  = OOB.Resultado.EnumResult.isError;
                result.Mensaje = resultDTO.Mensaje;
                return(result);
            }

            return(result);
        }
 public DTO.Resultado Contable_Periodo_CerrarMes(DTO.Contable.Periodo.Cerrar ficha)
 {
     return(provider.Contable_Perido_Cerrar(ficha));
 }
Esempio n. 3
0
        public Resultado Contable_Perido_Cerrar(DTO.Contable.Periodo.Cerrar ficha)
        {
            var result = new Resultado();

            try
            {
                using (var ctx = new dBEntities(_cn.ConnectionString))
                {
                    using (var ts = ctx.Database.BeginTransaction())
                    {
                        try
                        {
                            var entListaHistorico = ctx.contabilidad_plancta.ToList();
                            ctx.Configuration.AutoDetectChangesEnabled = false;
                            foreach (var r in entListaHistorico)
                            {
                                var entHist = new contabilidad_historico()
                                {
                                    idCta          = r.id,
                                    codigo         = r.codigo,
                                    descripcion    = r.descripcion,
                                    tipo           = r.tipo,
                                    naturaleza     = r.naturaleza,
                                    saldoAperura   = r.saldoApertura,
                                    saldoAnterior  = r.saldoAnterior,
                                    debe           = r.debe,
                                    haber          = r.haber,
                                    estado         = r.estado,
                                    idPadre        = r.idPadre,
                                    nivel          = r.nivel,
                                    debeAcumulado  = r.debeAcumulado,
                                    haberAcumulado = r.haberAcumulado,
                                    mesHistorico   = ficha.MesActual,
                                    anoHistorico   = ficha.AnoActual,
                                };
                                ctx.contabilidad_historico.Add(entHist);
                                ctx.SaveChanges();
                            }
                            ctx.Configuration.AutoDetectChangesEnabled = true;

                            var entPeriodo = ctx.contabilidad_periodo.Find(ficha.IdPeriodoActual);
                            entPeriodo.estatusCierre      = "S";
                            entPeriodo.utilidad           = ficha.UtilidadPeriodo;
                            entPeriodo.utilidad_acumulada = ficha.UtilidadAcumulada;
                            ctx.SaveChanges();

                            var mes = ficha.MesActual;
                            var ano = ficha.AnoActual;
                            if (ficha.MesActual == 12)
                            {
                                mes = 1;
                                ano = ano + 1;
                            }
                            else
                            {
                                mes += 1;
                            }

                            var entPeriodoNuevo = new contabilidad_periodo()
                            {
                                mes           = mes,
                                ano           = ano,
                                estatusCierre = "",
                            };
                            ctx.contabilidad_periodo.Add(entPeriodoNuevo);
                            ctx.SaveChanges();

                            var ent = ctx.contabilidad_plancta.ToList();
                            foreach (var r in ent)
                            {
                                // PARA REVERSO DEL CIERRE, SE GUARDA
                                r.rdebe           = r.debe;
                                r.rhaber          = r.haber;
                                r.rdebeAcumulado  = r.debeAcumulado;
                                r.rhaberAcumulado = r.haberAcumulado;
                                r.rsaldoAnterior  = r.saldoAnterior;
                                r.rsaldoApertura  = r.saldoApertura;
                                //


                                ////LIMPIAR LAS CUENTAS REALES
                                //r.debeAcumulado += r.debe;
                                //r.haberAcumulado += r.haber;
                                //if (r.codigo.Substring(0, 1) == "1" || r.codigo.Substring(0, 1) == "2" || r.codigo.Substring(0, 1) == "3")
                                //{
                                //    var saldoFinal = r.saldoAnterior + r.debe + r.haber;
                                //    r.saldoAnterior = saldoFinal;
                                //}
                                //r.debe = 0.0m;
                                //r.haber = 0.0m;


                                ////LIMPIAR LAS CUENTAS REALES
                                //if (r.codigo.Substring(0, 1) == "1" || r.codigo.Substring(0, 1) == "2" || r.codigo.Substring(0, 1) == "3")
                                //{
                                //    //var saldoFinal = r.saldoAnterior + r.debe + r.haber;
                                //    //r.saldoAnterior = saldoFinal;
                                //}
                                //else
                                //{
                                //    r.debeAcumulado += r.debe;
                                //    r.haberAcumulado += r.haber;
                                //    r.debe = 0.0m;
                                //    r.haber = 0.0m;
                                //}


                                //LIMPIAR LAS CUENTAS REALES
                                r.debeAcumulado  += r.debe;
                                r.haberAcumulado += r.haber;
                                //var saldoFinal = r.saldoAnterior + r.debe + r.haber;
                                var saldoFinal = r.saldoAnterior + (r.debe - r.haber);
                                r.saldoAnterior = saldoFinal;
                                r.debe          = 0.0m;
                                r.haber         = 0.0m;
                                ctx.SaveChanges();
                            }

                            ////ASIGNAR UTILIDAD DEL PERIODO A LA CUENTA DE AJUSTE DEL PATRIMONIO
                            //var entCtaCierre = ctx.contabilidad_plancta.Find(ficha.IdCtaCierre);
                            //entCtaCierre.saldoAnterior += (ficha.UtilidadPeriodo * (-1));
                            //ctx.SaveChanges();

                            //var nivel = entCtaCierre.nivel;
                            //if (nivel >= 1)
                            //{
                            //    var entNiv = entCtaCierre;
                            //    for (var nv = nivel; nv > 1; nv--)
                            //    {
                            //        entNiv = entNiv.contabilidad_plancta2;
                            //        entNiv.saldoAnterior += (ficha.UtilidadPeriodo * (-1));
                            //        ctx.SaveChanges();
                            //    }
                            //}

                            ts.Commit();
                        }
                        catch (Exception ex)
                        {
                            throw new Exception(ex.Message);
                        }
                        finally
                        {
                            ctx.Configuration.AutoDetectChangesEnabled = true;
                        }
                    }
                }
            }
            catch (Exception e)
            {
                result.Mensaje = e.Message;
                result.Result  = DTO.EnumResult.isError;
            }

            return(result);
        }