예제 #1
0
        public static bool EliminarCompraProducto(CompraProducto compraProducto)
        {
            bool response = false;

            try
            {
                using (var dbContextScope = new DBFacturacionEntities())
                {
                    var compraProductobuscado = dbContextScope.CompraProducto.Where(x => x.Id == compraProducto.Id).FirstOrDefault();
                    if (compraProductobuscado != null)
                    {
                        dbContextScope.CompraProducto.Remove(compraProductobuscado);
                        dbContextScope.SaveChanges();
                        response = true;
                    }
                }
            }
            catch (Exception ex)
            {
                response = false;
                throw ex;
            }

            return(response);
        }
예제 #2
0
        public ActionResult CargarProducto(int productoId, int maxikioscoId, int proveedorId)
        {
            var productoCompleto = Uow.Productos.Obtener(productoId, maxikioscoId, proveedorId);

            var productoProveedor =
                Uow.ProveedorProductos.Obtener(pp => pp.ProductoId == productoId &&
                                               pp.ProveedorId == proveedorId);

            var compraProducto = new CompraProducto
            {
                ProductoId = productoId,
                Cantidad   = 1,
                Producto   = new Producto {
                    Descripcion = productoCompleto.Descripcion
                },
                PrecioActual = productoCompleto.PrecioConIVA,
                CostoActual  = productoProveedor != null ? productoProveedor.CostoConIVA : 0,
                Identifier   = Guid.NewGuid()
            };

            compraProducto.PrecioActualizado = compraProducto.PrecioActual;
            compraProducto.CostoActualizado  = productoProveedor != null ? productoProveedor.CostoConIVA : (decimal?)null;

            //Cargamos el stock actual del producto0
            compraProducto.StockAnterior        = productoCompleto.Stock;
            compraProducto.StockActual          = productoCompleto.Stock + compraProducto.Cantidad;
            compraProducto.PrimerCodigoProducto = productoCompleto.Codigo;
            compraProducto.ProductoMarca        = productoCompleto.Marca;

            return(PartialView(compraProducto));
        }
예제 #3
0
        public static bool EditarCompraProducto(CompraProducto compraProducto)
        {
            bool response = false;

            try
            {
                using (var dbContextScope = new DBFacturacionEntities())
                {
                    var CompraProductoExistente = dbContextScope.CompraProducto.Where(x => x.Id == compraProducto.Id).FirstOrDefault();
                    if (CompraProductoExistente != null)
                    {
                        CompraProductoExistente.CompraId      = compraProducto.CompraId != null ? compraProducto.CompraId : CompraProductoExistente.CompraId;
                        CompraProductoExistente.ProductoId    = compraProducto.ProductoId != null ? compraProducto.ProductoId : CompraProductoExistente.ProductoId;
                        CompraProductoExistente.Cantidad      = compraProducto.Cantidad != null ? compraProducto.Cantidad : CompraProductoExistente.Cantidad;
                        CompraProductoExistente.ValorProducto = compraProducto.ValorProducto != null ? compraProducto.ValorProducto : CompraProductoExistente.ValorProducto;
                        CompraProductoExistente.FechaCompra   = compraProducto.FechaCompra != null ? compraProducto.FechaCompra : CompraProductoExistente.FechaCompra;

                        dbContextScope.SaveChanges();
                        response = true;
                    }
                }
            }
            catch (Exception ex)
            {
                response = false;
                throw ex;
            }

            return(response);
        }
예제 #4
0
        private void CargarDetalle(int compraID)
        {
            CompraProducto        cp  = new CompraProducto();
            List <CompraProducto> lcp = cp.ObtenerDetalleCompra(compraID);

            gridDetalles.DataSource = lcp;
            gridDetalles.DataBind();
        }
예제 #5
0
        //
        // GET: /CompraProducto/Delete/5

        public ActionResult Delete(int id = 0)
        {
            CompraProducto compraproducto = db.CompraProducto.Find(id);

            if (compraproducto == null)
            {
                return(HttpNotFound());
            }
            return(View(compraproducto));
        }
예제 #6
0
        public ActionResult Create(CompraProducto compraproducto)
        {
            if (ModelState.IsValid)
            {
                var user = Session["usuarioActual"] as Usuario;
                compraproducto.Usuarioid = user.id;
                var compraHecha = db.CompraProducto.Add(compraproducto);
                var cuenta      = db.Cuentas.FirstOrDefault(c => c.id == compraproducto.Cuentasid);

                var precioProducto = compraproducto.importe / compraproducto.cantidad;
                var almacen        =
                    db.Almacen.FirstOrDefault(
                        p => p.Productoid == compraproducto.Productoid && p.precio == precioProducto && p.TipoMonedaid == cuenta.TipoMonedaid);
                if (almacen == null)
                {
                    var newAlmacen = new Almacen()
                    {
                        cantidad     = compraproducto.cantidad,
                        precio       = precioProducto,
                        Productoid   = compraproducto.Productoid,
                        TipoMonedaid = cuenta.TipoMonedaid
                    };
                    db.Almacen.Add(newAlmacen);
                }
                else
                {
                    almacen.cantidad       += compraproducto.cantidad;
                    db.Entry(almacen).State = EntityState.Modified;
                }

                cuenta.importe        -= compraproducto.importe;
                db.Entry(cuenta).State = EntityState.Modified;
                db.SaveChanges();
                var gasto = new GastoFinanzas()
                {
                    fecha           = compraproducto.fecha,
                    Cuentasid       = compraproducto.Cuentasid,
                    ConceptoGastoid = 1,
                    Usuarioid       = compraproducto.Usuarioid,
                    importe         = compraproducto.importe,
                    descripcion     = "Id de compra: [" + compraHecha.id + "] Compra de Productos del proyecto un grano de arena"
                };
                db.GastoFinanzas.Add(gasto);
                db.SaveChanges();
                return(RedirectToAction("Create"));
            }

            ViewBag.Productoid = new SelectList(db.Producto, "id", "nombre", compraproducto.Productoid);
            var cta = db.Cuentas.Where(c => c.activo);

            ViewBag.Cuentasid = new SelectList(cta, "id", "nombre", compraproducto.Cuentasid);
            return(View(compraproducto));
        }
예제 #7
0
 public bool Modificar(CompraProducto cierreProducto)
 {
     try
     {
         using (unitOfWork = new UnitOfWork(new GymContext()))
         {
             unitOfWork.compraProductoDAL.Update(cierreProducto);
         }
         return(true);
     }
     catch (Exception)
     {
         return(false);
     }
 }
예제 #8
0
        //
        // GET: /CompraProducto/Edit/5

        public ActionResult Edit(int id = 0)
        {
            CompraProducto compraproducto = db.CompraProducto.Find(id);

            if (compraproducto == null)
            {
                return(HttpNotFound());
            }
            ViewBag.Productoid = new SelectList(db.Producto, "id", "nombre", compraproducto.Productoid);
            var cta = db.Cuentas.Where(c => c.activo);

            ViewBag.Cuentasid = new SelectList(cta, "id", "nombre", compraproducto.Cuentasid);
            compraAnterior    = compraproducto;
            return(View(compraproducto));
        }
예제 #9
0
        public bool Crear(string idCompra, string[,] productos)
        {
            productoBLL = new ProductoBLLImp();
            Producto pr;

            try
            {
                using (unitOfWork = new UnitOfWork(new GymContext()))
                {
                    using (GymContext Context = new GymContext())
                    {
                        for (int i = 0; i < productos.Length; i++)
                        {
                            if (productos[i, 0] == null)
                            {
                                return(true);
                            }
                            else
                            {
                                string         id = ConsecutivoModifica("CRM");
                                CompraProducto cp = new CompraProducto()
                                {
                                    idCompraProducto = id,
                                    idCompra         = idCompra,
                                    idProducto       = productos[i, 0],
                                    cantidad         = int.Parse(productos[i, 1]),
                                    total            = productos[i, 2]
                                };
                                pr          = productoBLL.BuscarPorId(productos[i, 0]);
                                pr.cantidad = pr.cantidad - int.Parse(productos[i, 1]);
                                unitOfWork.compraProductoDAL.Add(cp);
                                productoBLL.Modificar(pr);
                                unitOfWork.Complete();
                            }
                        }
                    }
                }
                return(true);
            }
            catch (Exception a)
            {
                string e = a.Message;
                return(false);
            }
        }
예제 #10
0
        public static bool CrearCompraProducto(CompraProducto compraProducto)
        {
            bool response = false;

            try
            {
                using (var dbContextScope = new DBFacturacionEntities())
                {
                    dbContextScope.CompraProducto.Add(compraProducto);
                    dbContextScope.SaveChanges();
                    response = true;
                }
            }
            catch (Exception ex)
            {
                throw ex;
            }

            return(response);
        }
예제 #11
0
        public ActionResult DeleteConfirmed(int id)
        {
            try
            {
                CompraProducto compraproducto = db.CompraProducto.Find(id);
                db.CompraProducto.Remove(compraproducto);

                var precioProducto = compraproducto.importe / compraproducto.cantidad;
                var cuenta         = db.Cuentas.FirstOrDefault(c => c.id == compraproducto.Cuentasid);
                var almacen        =
                    db.Almacen.FirstOrDefault(
                        p => p.Productoid == compraproducto.Productoid && p.precio == precioProducto && p.TipoMonedaid == cuenta.TipoMonedaid);


                almacen.cantidad -= compraproducto.cantidad;
                cuenta.importe   += compraproducto.importe;

                db.Entry(almacen).State = EntityState.Modified;
                db.Entry(cuenta).State  = EntityState.Modified;

                var gastos = db.GastoFinanzas.Where(g => g.fecha == compraproducto.fecha);
                var gasto  = new GastoFinanzas();
                foreach (var g in gastos)
                {
                    if (int.Parse(g.descripcion.Split('[')[1].Split(']')[0]) == compraproducto.id)
                    {
                        gasto = g;
                    }
                }
                db.GastoFinanzas.Remove(gasto);

                db.SaveChanges();
            }
            catch (Exception)
            {
                throw new Exception("Este registro se utiliza en una relacion y no lo puede borrar");
            }
            return(RedirectToAction("Index"));
        }
예제 #12
0
        public ActionResult EnregarPedido(int idCompra, bool entregado, int[] ids = null, int[] noUsados = null, string[] vecinxs = null)
        {
            TanoNEEntities ctx    = new TanoNEEntities();
            Vecinos        vecino = ctx.Vecinos.FirstOrDefault(a => a.correo == User.Identity.Name);

            EstadosCompra nopaso     = ctx.EstadosCompra.FirstOrDefault(a => a.codigo == 5);
            EstadosCompra entre      = ctx.EstadosCompra.FirstOrDefault(a => a.codigo == 3);
            EstadosCompra confirmado = ctx.EstadosCompra.FirstOrDefault(a => a.codigo == 2);
            Compras       compra     = ctx.Compras.FirstOrDefault(a => a.idCompra == idCompra && a.estadoId == confirmado.idEstadoCompra);

            if (ids == null)
            {
                compra.EstadosCompra = entregado ? entre : nopaso;
            }
            else
            {
                var productos = compra.CompraProducto;
                for (int x = 0; x < productos.Count; x++)
                {
                    var producto = productos.ElementAt(x);
                    int posicion = Array.IndexOf(ids, producto.productoId);


                    if (noUsados[posicion] > 0)
                    {
                        //Vino menos cantidad
                        if (producto.cantidad - noUsados[posicion] == 0)
                        {
                            ctx.CompraProducto.Remove(producto);
                        }
                        else
                        {
                            producto.cantidad = producto.cantidad - noUsados[posicion];
                        }
                    }
                    if (!string.IsNullOrEmpty(vecinxs[posicion]))
                    {
                        //REUBICADO A UN VEXINX
                        var arrayvecino = vecinxs[posicion].Split(new string[] { "," }, StringSplitOptions.RemoveEmptyEntries).Select(int.Parse).ToList().GroupBy(a => a);
                        foreach (var idVecinx in arrayvecino)
                        {
                            Vecinos reubicado    = ctx.Vecinos.FirstOrDefault(a => a.idVecino == idVecinx.Key);
                            Compras vecinoCompra = ctx.Compras.FirstOrDefault(a => a.vecinoId == idVecinx.Key && a.tandaId == compra.tandaId);
                            if (vecinoCompra == null)
                            {
                                vecinoCompra               = new Compras();
                                vecinoCompra.fecha         = ApiProductosController.GetNextWeekday();
                                vecinoCompra.EstadosCompra = entre;
                                vecinoCompra.localId       = compra.localId;
                                vecinoCompra.tandaId       = compra.tandaId;
                                vecinoCompra.Vecinos       = reubicado;

                                ctx.Compras.Add(vecinoCompra);
                            }

                            CompraProducto cp = new CompraProducto();
                            cp.cantidad  = idVecinx.Count();
                            cp.Compras   = vecinoCompra;
                            cp.Costos    = producto.Costos;
                            cp.Precios   = producto.Precios;
                            cp.Productos = ctx.Productos.FirstOrDefault(a => a.idProducto == producto.productoId);

                            vecinoCompra.CompraProducto.Add(cp);
                        }

                        var cantidadTotal = arrayvecino.Sum(a => a.Count());
                        if (producto.cantidad - cantidadTotal == 0)
                        {
                            ctx.CompraProducto.Remove(producto);
                        }
                        else
                        {
                            producto.cantidad = producto.cantidad - cantidadTotal;
                        }
                    }

                    compra.EstadosCompra = entregado ? entre : nopaso;
                }


                /*var productos = compra.CompraProducto;
                 * for (int x = 0; x < ids.Count(); x++)
                 * {
                 *  var prod = productos.FirstOrDefault(a => a.productoId == ids[x]);
                 *
                 *  if (vecinxs[x] != null)
                 *  {
                 *      var arrayvecino = vecinxs[x].Split(new string[] { "," }, StringSplitOptions.RemoveEmptyEntries).Select(int.Parse).ToList().GroupBy( a => a);
                 *      foreach ( var idVecinx in arrayvecino )
                 *      {
                 *          Vecinos reubicado = ctx.Vecinos.FirstOrDefault(a => a.idVecino == idVecinx.Key);
                 *          Compras vecinoCompra = ctx.Compras.FirstOrDefault(a => a.vecinoId == idVecinx.Key && a.tandaId == compra.tandaId);
                 *
                 *          //SOLO SE ESTA LLEVANDO COSAS
                 *          if ( vecinoCompra == null)
                 *          {
                 *              vecinoCompra = new Compras();
                 *              vecinoCompra.fecha = ApiProductosController.GetNextWeekday();
                 *              vecinoCompra.EstadosCompra = entre;
                 *              vecinoCompra.localId = compra.localId;
                 *              vecinoCompra.tandaId = compra.tandaId;
                 *              vecinoCompra.Vecinos = reubicado;
                 *
                 *              prod.cantidad = idVecinx.Count();
                 *              compra.CompraProducto.Remove(prod);
                 *              vecinoCompra.CompraProducto.Add(prod);
                 *              ctx.Compras.Add(vecinoCompra);
                 *
                 *          }
                 *          else
                 *          {
                 *              prod.cantidad = idVecinx.Count();
                 *              compra.CompraProducto.Remove(prod);
                 *              vecinoCompra.CompraProducto.Add(prod);
                 *              ctx.Compras.Add(vecinoCompra);
                 *          }
                 *      }
                 *  }
                 *  else
                 *  {
                 *      prod.cantidad = cantidad[x];
                 *
                 *      if (prod.cantidad == 0)
                 *          ctx.CompraProducto.Remove(prod);
                 *  }
                 *
                 *
                 * }
                 * compra.EstadosCompra = entregado ? entre : nopaso;*/
            }

            ctx.SaveChanges();

            return(Json(new { error = false }, JsonRequestBehavior.DenyGet));
        }
예제 #13
0
        public ActionResult ConfirmarPedido(int local, int[] idProducto, int[] cantidad, int?idCompra = null)
        {
            string error = null;

            TanoNEEntities ctx = new TanoNEEntities();

            Locales localCompro = ctx.Locales.FirstOrDefault(a => a.idLocal == local);

            if (localCompro == null)
            {
                error = "No se indico en que local va a retirar lo pedido";
            }

            Vecinos vecino = ctx.Vecinos.FirstOrDefault(a => a.correo == User.Identity.Name);

            if (vecino == null)
            {
                error = "Hay que iniciar sesion para realizar un pedido";
            }

            Tandas ultimaTanda = ctx.Tandas.ToList().LastOrDefault(a => a.fechaCerrado == null);

            if (ultimaTanda == null)
            {
                error = "No hay circuitos abiertos en este momento";
            }

            //Encargado
            EstadosCompra estado = ctx.EstadosCompra.FirstOrDefault(a => a.codigo == 1);

            Compras compra = new Compras();

            if (idCompra.HasValue)
            {
                compra = ctx.Compras.FirstOrDefault(a => a.idCompra == idCompra.Value);
                compra.CompraProducto.ToList().ForEach(cs => ctx.CompraProducto.Remove(cs));
            }
            else
            {
                compra.fecha = DateTime.Now;
            }

            compra.Locales       = localCompro;
            compra.Vecinos       = vecino;
            compra.Tandas        = ultimaTanda;
            compra.EstadosCompra = estado;

            if (!idCompra.HasValue)
            {
                ctx.Compras.Add(compra);
            }


            for (int x = 0; x < idProducto.Length; x++)
            {
                int prodActual = idProducto[x];
                int cantActual = cantidad[x];

                Productos prod = ctx.Productos.FirstOrDefault(a => a.idProducto == prodActual);
                if (prod.stock != -1)
                {
                    int stockrestante = prod.stock - cantActual;
                    if (stockrestante < 0)
                    {
                        error = string.Format("{0} del siguiente producto:<br/>{1} - {2} - {3}", prod.stock == 0 ? "No contamos con stock" : "Solo contamos con " + prod.stock + " articulos", prod.producto, prod.presentacion, prod.marca);
                        break;
                    }
                    else
                    {
                        prod.stock = stockrestante;
                    }
                }


                CompraProducto productos = new CompraProducto();
                productos.Productos = prod;
                productos.Compras   = compra;
                productos.cantidad  = cantidad[x];
                productos.Precios   = prod.Precios.LastOrDefault();
                productos.Costos    = prod.Costos.LastOrDefault();

                ctx.CompraProducto.Add(productos);
            }



            if (string.IsNullOrEmpty(error))
            {
                ctx.SaveChanges();
                if (!bool.Parse(ConfigurationManager.AppSettings["debug"]))
                {
                    MandarMailConfirmandoCompra(compra.idCompra);
                }
            }

            return(Json(new { error = error }, JsonRequestBehavior.DenyGet));
        }
예제 #14
0
        public IHttpActionResult Pedir()
        {
            try
            {
                string error = "";

                var form = HttpContext.Current.Request.Form;

                int    idVecino = int.Parse(form["idVecino"]);
                int    local    = int.Parse(form["local"]);
                string prods    = form["productos"];
                int    idCompra = int.Parse(form["idCompra"]);

                dynamic dyn = JArray.Parse(prods);

                int hash = (idVecino + "-" + local + "-" + prods).GetHashCode();

                TanoNEEntities ctx = new TanoNEEntities();

                Locales localCompro = ctx.Locales.FirstOrDefault(a => a.idLocal == local);
                Vecinos vecino      = ctx.Vecinos.FirstOrDefault(a => a.idVecino == idVecino);
                if (vecino == null)
                {
                    error = "Hay que iniciar sesion para realizar un pedido";
                }

                Tandas ultimaTanda = ctx.Tandas.ToList().LastOrDefault(a => a.fechaCerrado == null);
                if (ultimaTanda == null)
                {
                    error = "No hay circuitos abiertos en este momento";
                }

                //Encargado
                EstadosCompra estado = ctx.EstadosCompra.FirstOrDefault(a => a.codigo == 1);

                bool    editando = false;
                Compras compra   = new Compras();
                if (idCompra != -1)
                {
                    compra = ctx.Compras.FirstOrDefault(a => a.idCompra == idCompra);
                    compra.CompraProducto.ToList().ForEach(cs => ctx.CompraProducto.Remove(cs));
                    editando = true;
                }
                else
                {
                    compra.fecha = DateTime.Now;
                }

                compra.Locales       = localCompro;
                compra.Vecinos       = vecino;
                compra.Tandas        = ultimaTanda;
                compra.EstadosCompra = estado;

                if (idCompra == -1)
                {
                    ctx.Compras.Add(compra);
                }

                foreach (dynamic producto in dyn)
                {
                    int prodActual = producto.idProducto;
                    int cantActual = producto.pedidos;

                    Productos prod = ctx.Productos.FirstOrDefault(a => a.idProducto == prodActual);
                    if (prod.stock != -1)
                    {
                        int stockrestante = prod.stock - cantActual;
                        if (stockrestante < 0)
                        {
                            error = string.Format("{0} del siguiente producto:<br/>{1} - {2} - {3}", prod.stock == 0 ? "No contamos con stock" : "Solo contamos con " + prod.stock + " articulos", prod.producto, prod.presentacion, prod.marca);
                            break;
                        }
                        else
                        {
                            prod.stock = stockrestante;
                        }
                    }


                    CompraProducto productos = new CompraProducto();
                    productos.Productos = prod;
                    productos.Compras   = compra;
                    productos.cantidad  = cantActual;

                    ctx.CompraProducto.Add(productos);
                }

                var test = ctx.Compras.FirstOrDefault(a => a.hash == hash);
                if (test != null && !editando)
                {
                    error = "Ya ha comprado los mismos productos para esta tanda";
                }

                if (string.IsNullOrEmpty(error))
                {
                    compra.hash = hash;
                    ctx.SaveChanges();
                }

                return(Json(new { error = error }));
            }
            catch (Exception)
            {
                return(Json(new { error = "Error al grabar, si te sigue pasando, ¡avisanos!" }));
            }
        }
예제 #15
0
        public ActionResult Edit(CompraProducto compraproducto)
        {
            if (ModelState.IsValid)
            {
                var user = Session["usuarioActual"] as Usuario;
                compraproducto.Usuarioid       = user.id;
                db.Entry(compraproducto).State = EntityState.Modified;
                //anterior
                var precioProductoAnterior = compraAnterior.importe / compraAnterior.cantidad;
                var cuentaAnterior         = db.Cuentas.FirstOrDefault(c => c.id == compraAnterior.Cuentasid);
                var almacenAnterior        =
                    db.Almacen.FirstOrDefault(
                        p => p.Productoid == compraAnterior.Productoid && p.precio == precioProductoAnterior && p.TipoMonedaid == cuentaAnterior.TipoMonedaid);


                //actual
                var precioProducto = compraproducto.importe / compraproducto.cantidad;
                var cuenta         = db.Cuentas.FirstOrDefault(c => c.id == compraproducto.Cuentasid);
                var almacen        =
                    db.Almacen.FirstOrDefault(
                        p => p.Productoid == compraproducto.Productoid && p.precio == precioProducto && p.TipoMonedaid == cuenta.TipoMonedaid);


                if (almacen == null)
                {
                    var newAlmacen = new Almacen()
                    {
                        cantidad     = compraproducto.cantidad,
                        precio       = precioProducto,
                        Productoid   = compraproducto.Productoid,
                        TipoMonedaid = cuenta.TipoMonedaid
                    };
                    db.Almacen.Add(newAlmacen);
                }
                else
                {
                    almacen.cantidad       += compraproducto.cantidad;
                    db.Entry(almacen).State = EntityState.Modified;
                }
                almacenAnterior.cantidad -= compraAnterior.cantidad;
                cuentaAnterior.importe   += compraAnterior.importe;
                cuenta.importe           -= compraproducto.importe;

                var gastos = db.GastoFinanzas.Where(g => g.fecha == compraAnterior.fecha);
                var gasto  = new GastoFinanzas();
                foreach (var g in gastos)
                {
                    if (int.Parse(g.descripcion.Split('[')[1].Split(']')[0]) == compraproducto.id)
                    {
                        gasto = g;
                    }
                }
                gasto.importe = compraproducto.importe;
                gasto.fecha   = compraproducto.fecha;

                db.Entry(gasto).State           = EntityState.Modified;
                db.Entry(almacenAnterior).State = EntityState.Modified;
                db.Entry(cuenta).State          = EntityState.Modified;
                db.Entry(cuentaAnterior).State  = EntityState.Modified;

                db.SaveChanges();
                return(RedirectToAction("Index"));
            }
            ViewBag.Productoid = new SelectList(db.Producto, "id", "nombre", compraproducto.Productoid);
            var cta = db.Cuentas.Where(c => c.activo);

            ViewBag.Cuentasid = new SelectList(cta, "id", "nombre", compraproducto.Cuentasid);
            return(View(compraproducto));
        }