protected override ValidationResult IsValid(object value, ValidationContext validationContext)
        {
            AsientoContableDto asiento = (AsientoContableDto)validationContext.ObjectInstance;

            double TotalDebitos  = 0;
            double TotalCreditos = 0;

            if (asiento.Cuentas != null)
            {
                foreach (var cuenta in asiento.Cuentas)
                {
                    if (cuenta.tipo.ToLower() == "db")
                    {
                        TotalDebitos += cuenta.monto;
                    }
                    else if (cuenta.tipo.ToLower() == "cr")
                    {
                        TotalCreditos += cuenta.monto;
                    }
                }
                if (TotalCreditos != TotalDebitos)
                {
                    return(new ValidationResult(""));
                }
            }
            else
            {
                return(new ValidationResult(""));
            }


            return(ValidationResult.Success);
        }
        protected override ValidationResult IsValid(object value, ValidationContext validationContext)
        {
            AsientoContableDto    asiento = (AsientoContableDto)validationContext.ObjectInstance;
            ContabilidadEntities1 db      = new ContabilidadEntities1();

            List <int> IdValidos = db.Auxiliar.Select(c => c.idAuxiliar).ToList();

            IdValidos.Add(0);

            if (!IdValidos.Contains(asiento.Auxiliar))
            {
                return(new ValidationResult("El id del auxiliar es invalido"));
            }

            return(ValidationResult.Success);
        }
        protected override ValidationResult IsValid(object value, ValidationContext validationContext)
        {
            AsientoContableDto asiento = (AsientoContableDto)validationContext.ObjectInstance;

            if (asiento.Cuentas != null)
            {
                foreach (var cuenta in asiento.Cuentas)
                {
                    if (asiento.Cuentas.Where(c => c.id == cuenta.id).ToList().Count > 1)
                    {
                        return(new ValidationResult(""));
                    }
                }
            }
            else
            {
                return(new ValidationResult(""));
            }


            return(ValidationResult.Success);
        }
예제 #4
0
        public IHttpActionResult PutAsientoContable(int id, AsientoContableDto asientoContableDto)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            if (id != asientoContableDto.idAsiento)
            {
                return(BadRequest());
            }

            if (asientoContableDto.Cuentas.Count == 0)
            {
                return(BadRequest("Debe especificar las cuentas de este asiento"));
            }

            if (asientoContableDto.Auxiliar == 0)
            {
                asientoContableDto.Auxiliar = (int)Auxiliares.Contabilidad;
            }


            //foreach (var cuenta in asientoContableDto.Cuentas)
            //{
            //    cuenta.id = asientoContableDto.idAsiento;
            //}

            AsientoContable asientoContable = new AsientoContable
            {
                idAsientoContable = asientoContableDto.idAsiento,
                Descripcion       = asientoContableDto.Descripcion,
                idAuxiliar        = asientoContableDto.Auxiliar,
                AsientoCuenta     = asientoContableDto.Cuentas.Select(c => new AsientoCuenta
                {
                    idCuentaContable  = c.id,
                    idAsientoContable = asientoContableDto.idAsiento,
                    Monto             = c.monto,
                    tipoMov           = c.tipo
                }).ToArray(),
                Fecha  = DateTime.Now,
                Estado = "Registrado"
            };



            db.Entry(asientoContable).State = EntityState.Modified;

            try
            {
                db.SaveChanges();
            }
            catch (DbUpdateConcurrencyException)
            {
                if (!AsientoContableExists(id))
                {
                    return(NotFound());
                }
                else
                {
                    throw;
                }
            }

            return(StatusCode(HttpStatusCode.NoContent));
        }
예제 #5
0
        public IHttpActionResult PostAsientoContable(AsientoContableDto asientoContableDto)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(" Objeto invalido. Para mas información comuniquese con el administrador de la api. "));
            }

            if (asientoContableDto.Auxiliar == 0)
            {
                asientoContableDto.Auxiliar = (int)Auxiliares.Contabilidad;
            }


            AsientoContable asientoContable = new AsientoContable
            {
                Descripcion   = asientoContableDto.Descripcion,
                idAuxiliar    = asientoContableDto.Auxiliar,
                AsientoCuenta = asientoContableDto.Cuentas.Select(c => new AsientoCuenta
                {
                    idCuentaContable = c.id,
                    Monto            = c.monto,
                    tipoMov          = c.tipo
                }).ToArray(),
                Fecha  = DateTime.Now,
                Estado = "Registrado"
            };

            //Refrescando balances
            db.AsientoContable.Add(asientoContable);

            foreach (var cuenta in asientoContable.AsientoCuenta)
            {
                var cuentaContable = db.CuentaContable.Include(c => c.TipoCuenta).Single(c => c.idCuentaContable == cuenta.idCuentaContable);

                if (cuentaContable.TipoCuenta.Origen.ToLower() == "db")
                {
                    cuentaContable.Balance += (cuenta.tipoMov.ToLower() == "db") ?  cuenta.Monto : -cuenta.Monto;
                }
                else
                {
                    cuentaContable.Balance += (cuenta.tipoMov.ToLower() == "cr") ? cuenta.Monto : -cuenta.Monto;
                }
                //cuentaContable.Balance += cuenta.Monto;
            }

            try
            {
                db.SaveChanges();
            }
            catch (DbUpdateException)
            {
                if (AsientoContableExists(asientoContable.idAsientoContable))
                {
                    return(Conflict());
                }
                else
                {
                    throw;
                }
            }

            //return CreatedAtRoute("DefaultApi", new { id = asientoContable.idAsientoContable }, asientoContable);

            return(Ok("Asiento registrado sastifactoriamente"));
        }