示例#1
0
        protected void RegresarEstado(Salidas s)
        {
            Equipos        eq = new Equipos();
            SalidasDetalle sd = new SalidasDetalle();

            s.Buscar(Utilitarios.ConvertirAentero(IdTextBox.Text));

            foreach (var a in s.Detalle)
            {
                eq.Buscar(a.EquipoId);
                eq.Editarestado(1);
            }
        }
示例#2
0
        private IActionResult Post(Salidas salida, AppUser user)
        {
            if (salida.Id > 0)
            {
                //Actializar encabezado
                var salidaModificada = db.Salidas.FirstOrDefault(x => x.Id == salida.Id);
                if (salidaModificada.EstadoId == (int)Estados.Anulado)
                {
                    return(BadRequest($"No se puede editar una salida en estado anulado"));
                }

                salidaModificada.CopyAllFromExcept(salida, x => new
                {
                    x.Id
                });


                //eliminar registros anteriores
                var oldComprasDetalle = db.SalidasDetalle.Where(x => x.SalidaId == salida.Id);
                foreach (var item in oldComprasDetalle)
                {
                    db.SalidasDetalle.Remove(item);
                }

                //agregar nuevos registros
                var detalle = salida.SalidasDetalle;
                foreach (var item in detalle)
                {
                    var salidasDetalle = new SalidasDetalle();
                    salidasDetalle.CopyAllFromExcept(item, x => new { x.Id });
                    db.SalidasDetalle.Add(salidasDetalle);
                }

                db.SaveChanges();
            }
            else
            {
                salida.Numero = getMax(salida.AreaId);

                //Actualizar existencias
                foreach (var item in salida.SalidasDetalle)
                {
                    var inventario      = db.Inventario.Find(item.InventarioId);
                    var areaExistencias = inventario.RegisterTransactionOut(db, item, salida.AreaId);

                    if (areaExistencias.Existencias < 0)
                    {
                        return(BadRequest($"No se puede registrar la salida porque el inventario {inventario.Nombre} quedaria con existencia negativa"));
                    }

                    item.Existencias   = areaExistencias.Existencias;
                    item.CostoPromedio = areaExistencias.CostoPromedio;
                    item.Costo         = areaExistencias.CostoReal;
                }

                db.Salidas.Add(salida);

                db.SaveChanges();
            }

            var app = db.App.FirstOrDefault();

            if (app.GererarProcesosContables)
            {
                var asientosFactory = new AsientosFactory(db);
                asientosFactory.CreateFromSalida(salida, app);
            }

            return(Json(salida));
        }