Ejemplo n.º 1
0
 private void productosVentaDataGridView_CellClick(object sender, DataGridViewCellEventArgs e)
 {
     productosCompra = (ProductosCompra)productosCompraBindingSource1.Current;
     productosCompraBindingSource.DataSource = productosCompra;
     idProductoClabel.Visible   = true;
     idProductoCTextBox.Visible = true;
 }
Ejemplo n.º 2
0
 private void btnEliminar_Click(object sender, EventArgs e)
 {
     productosCompraBindingSource.EndEdit();
     productosCompra = (ProductosCompra)productosCompraBindingSource.Current;
     cProductosCompra.eliminarProductoC(productosCompra);
     cargarDatos();
 }
Ejemplo n.º 3
0
        private void txtBusqueda_KeyUp(object sender, KeyEventArgs e)
        {
            if (txtBusqueda.Text == "")
            {
                if (e.KeyCode == Keys.Enter)
                {
                    btnBuscar.PerformClick();
                }
            }
            else if (e.KeyCode == Keys.Enter)
            {
                using (RestauranteBDEntities1 bd = new RestauranteBDEntities1())
                {
                    ProductosCompra prod = new ProductosCompra();

                    int Buscar = int.Parse(txtBusqueda.Text);
                    prod = bd.ProductosCompra.Where(idProducto => idProducto.idProductoC == Buscar).First();

                    txtIdProdC.Text     = Convert.ToString(prod.idProductoC);
                    txtNombreProdC.Text = Convert.ToString(prod.nombre);
                    nupCantidad.Focus();
                    txtBusqueda.Text = "";
                    intentos         = 2;
                }
            }
        }
Ejemplo n.º 4
0
 private void productosCompraDataGridView_CellClick(object sender, DataGridViewCellEventArgs e)
 {
     productosCompra = (ProductosCompra)productosCompraBindingSource1.Current;
     productosCompraBindingSource.DataSource = productosCompra;
     idProductoClabel.Visible   = true;
     idProductoCTextBox.Visible = true;
     btnGuardar.Enabled         = false;
     btnModificar.Enabled       = true;
     btnEliminar.Enabled        = true;
 }
Ejemplo n.º 5
0
        internal void eliminarProductoC(ProductosCompra PC)
        {
            IDbConnection     con        = Conexion.Conexion.Conectar();
            String            consulta   = "sp_eliminarProductoCompra";
            DynamicParameters parametros = new DynamicParameters();

            parametros.Add("@idProductoC", PC.idProductoC, DbType.Int32);
            con.Open();
            con.Execute(consulta, parametros, commandType: CommandType.StoredProcedure);
            con.Close();
        }
Ejemplo n.º 6
0
        internal void guardarProductoC(ProductosCompra PC)
        {
            IDbConnection     con        = Conexion.Conexion.Conectar();
            String            consulta   = "sp_nuevoProductoCompra";
            DynamicParameters parametros = new DynamicParameters();

            parametros.Add("@nombre", PC.nombre, DbType.String);
            parametros.Add("@precio", PC.precio, DbType.Decimal);
            parametros.Add("@categoria", PC.categoria, DbType.String);
            parametros.Add("@idProveedor", PC.idProveedor, DbType.Int32);
            con.Open();
            con.Execute(consulta, parametros, commandType: CommandType.StoredProcedure);
            con.Close();
        }
Ejemplo n.º 7
0
 private void btnGuardar_Click(object sender, EventArgs e)
 {
     if (nombreTextBox.Text.Equals("") || precioTextBox.Text.Equals("0") || idProveedorComboBox.SelectedValue == null || categoriaTextBox.Text.Equals(""))
     {
         MessageBox.Show("Ingrese todos los campos para Continuar");
     }
     else
     {
         productosCompraBindingSource.EndEdit();
         productosCompra = (ProductosCompra)productosCompraBindingSource.Current;
         cProductosCompra.guardarProductoC(productosCompra);
         cargarDatos();
     }
 }
Ejemplo n.º 8
0
        public ActionResult ListaProductos()
        {
            var lista     = new List <ProductosCompra>();
            var Producto1 = new ProductosCompra();

            Producto1.Codigo   = "CP_04";
            Producto1.Producto = Session["Producto1"].ToString();
            var Producto2 = new ProductosCompra();

            Producto2.Codigo   = "CP_08";
            Producto2.Producto = Session["Producto2"].ToString();
            lista.Add(Producto1);
            lista.Add(Producto2);

            return(View(lista));
        }
Ejemplo n.º 9
0
        private void btnEliminar_Click(object sender, EventArgs e)
        {
            using (RestauranteBDEntities1 bd = new RestauranteBDEntities1())
            {
                DialogResult result = MessageBox.Show("¿Estás seguro que quieres eliminar?, \n¡la acción no se podrá deshacer!", "Confirmar", MessageBoxButtons.OKCancel, MessageBoxIcon.Warning);
                if (result == DialogResult.OK)
                {
                    String id = lblCodigo.Text;

                    prodC = bd.ProductosCompra.Find(int.Parse(id));
                    bd.ProductosCompra.Remove(prodC);
                    bd.SaveChanges();

                    MessageBox.Show("¡Producto eliminado con éxito!", "Completado", MessageBoxButtons.OK, MessageBoxIcon.None);
                    this.Close();
                }
            }
        }
Ejemplo n.º 10
0
        public ActionResult CrearPromocion(Promocion promo)
        {
            String[] listaProd;

            listaProd = serviciosWeb.listaProductosEst("1");
            var  lista     = new List <ProductosCompra>();
            Char delimiter = '/';

            for (int i = 0; i < listaProd.Length; i++)
            {
                var      Producto1  = new ProductosCompra();
                String[] substrings = listaProd[i].Split(delimiter);
                Producto1.Codigo   = substrings[0];
                Producto1.Producto = substrings[1];


                lista.Add(Producto1);
            }



            SelectList listaPro = new SelectList(lista, "Codigo", "Producto");

            ViewBag.CrearPromocion = listaPro;


            if (ModelState.IsValid)
            {
                Boolean result = serviciosWeb.crearPromo(promo.NombreProducto, promo.Precio, promo.FechaI, promo.FechaF, Session["NIT"].ToString());
                if (result)
                {
                    return(RedirectToAction("ListaPromociones", "Admin"));
                }
                else
                {
                    ModelState.AddModelError("", "Error en la creación de la Promoción");
                    return(View(promo));
                }
            }
            else
            {
                return(View(promo));
            }
        }
Ejemplo n.º 11
0
        public ActionResult SelectListaProductos()
        {
            var lista     = new List <ProductosCompra>();
            var Producto1 = new ProductosCompra();

            Producto1.Codigo   = "CP_04";
            Producto1.Producto = "Vino";
            var Producto2 = new ProductosCompra();

            Producto2.Codigo   = "CP_08";
            Producto2.Producto = "Cerveza";
            lista.Add(Producto1);
            lista.Add(Producto2);

            SelectList listaPro = new SelectList(lista, "Codigo", "Producto");

            ViewBag.CrearPromocion = listaPro;

            return(View());
        }
        public ActionResult Compra(Compra model)
        {
            String[] listaProd;

            listaProd = serviciosWeb.listaProductosEst("1");
            var  lista     = new List <ProductosCompra>();
            Char delimiter = '/';

            for (int i = 0; i < listaProd.Length; i++)
            {
                var      Producto1  = new ProductosCompra();
                String[] substrings = listaProd[i].Split(delimiter);
                Producto1.Codigo   = substrings[0];
                Producto1.Producto = substrings[1];


                lista.Add(Producto1);
            }

            SelectList listaPro = new SelectList(lista, "Codigo", "Producto");

            ViewBag.Productos = listaPro;

            if (ModelState.IsValid)
            {
                //var user = new ApplicationUser { UserName = model.nombre, Email = model.Email };

                var result = serviciosWeb.asignarPuntos(model.Codigo, "8");
                if (result != null)
                {
                    ModelState.AddModelError("", "Se registró correctamente la compra y carga de puntos de fidelidad al Cliente");
                    return(View(model));
                }
                else
                {
                    ModelState.AddModelError("", "Error en el registro de la compra");
                    return(View(model));
                }
            }
            return(View(model));
        }
Ejemplo n.º 13
0
        private void loadInfoOrder(Ordenes currentOrder)
        {
            IEnumerable <ProductToBuy> productsResult = _orderPurchasePresenter.GetProductsByList(currentOrder.ProductosOrden.ToList());

            productsResult = productsResult.Select(s => { ProductosCompra productoAux = (from producto in currentOrder.ProductosOrden where producto.idProducto.Equals(s.idProducto) select producto).SingleOrDefault(); s.idProveedor = currentOrder.idProveedor; s.quantity = productoAux.Cantidad; s.total = productoAux.Monto; return(s); }).ToList();
            productsToBuyList.Clear();
            productsToBuyList.AddRange(productsResult);
            if (currentOrder != null)
            {
                tabControlOrder.SelectedIndex = 1;
                if (currentOrder.estatus != 'S')
                {
                    cancelOrder = true;
                    generateOrderButton.Content = "CANCELAR";
                }
                else
                {
                    cancelOrder = false;
                    generateOrderButton.Content = "GENERAR \nORDEN(ES)";
                }
            }
        }
Ejemplo n.º 14
0
        private void btnEditar_Click(object sender, EventArgs e)
        {
            using (RestauranteBDEntities1 bd = new RestauranteBDEntities1())
            {
                String  id2 = lblCodigo.Text;
                int     idC = int.Parse(id2);
                decimal precioCon;

                if (decimal.TryParse(txtPrecioProd.Text, out precioCon) == false)
                {
                    MessageBox.Show("¡Ingrese correctamente el precio!");
                }
                else
                {
                    try
                    {
                        DialogResult result = MessageBox.Show("¿Estás seguro que quieres editar?, \n¡la acción no se podrá deshacer!", "Confirmar", MessageBoxButtons.OKCancel, MessageBoxIcon.Warning);
                        if (result == DialogResult.OK)
                        {
                            prodC             = bd.ProductosCompra.Where(VerificarID => VerificarID.idProductoC == idC).First();
                            prodC.nombre      = txtNombreProdCompra.Text;
                            prodC.precio      = decimal.Parse(txtPrecioProd.Text);
                            prodC.idProveedor = int.Parse(provee);
                            prodC.idCategoria = int.Parse(categ);

                            bd.Entry(prodC).State = System.Data.Entity.EntityState.Modified;
                            bd.SaveChanges();

                            MessageBox.Show("¡Producto editado con éxito!", "Completado", MessageBoxButtons.OK, MessageBoxIcon.None);
                            this.Close();
                        }
                    }
                    catch (Exception ex)
                    {
                        MessageBox.Show("¡Verifique las listas desplegables!", "Verificación", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
                    }
                }
            }
        }
Ejemplo n.º 15
0
 public IActionResult CancelaVenta([FromBody] CancelacionDto cancelacion)
 {
     try
     {
         Ventas venta = PosUoW.VentasRepository.GetVentaByFolio(cancelacion.folioVenta);
         if (venta != null)
         {
             venta.Estatus          = 'C';
             venta.idUsuarioCancela = cancelacion.idUsuario;
             foreach (VentaLote lote in venta.Lotes)
             {
                 ProductosCompra compra = PosUoW.ProductosCompraRepository.GetById(a => a.idCompraProducto.Equals(lote.idProductoCompra));
                 if (compra != null)
                 {
                     compra.Restante += lote.cantidad;
                 }
                 lote.estatus = false;
             }
             foreach (ProductosVenta producto in venta.Productos)
             {
                 producto.Estatus = false;
                 Productos       currentProduct     = PosUoW.ProductosRepository.GetById(x => x.idProducto.Equals(producto.idProducto));
                 Almacenes       principalWarehouse = PosUoW.AlmacenesRepository.GetSingleByCriteria(x => x.Principal);
                 ProductoAlmacen almacen            = PosUoW.ProductoAlmacenRepository.GetSingleByCriteria(x => x.idProducto.Equals(currentProduct.idProducto) && x.idAlmacen.Equals(principalWarehouse.idAlmacen));
                 almacen.Existencia += producto.Cantidad;
             }
             PosUoW.Save();
             return(Ok(venta));
         }
         else
         {
             return(NotFound());
         }
     }
     catch (Exception ex)
     {
         return(StatusCode(StatusCodes.Status500InternalServerError, ex));
     }
 }
Ejemplo n.º 16
0
 internal void eliminarProductoC(ProductosCompra PC)
 {
     mProductoCompra.eliminarProductoC(PC);
 }
Ejemplo n.º 17
0
 internal void actualizarProductoC(ProductosCompra PC)
 {
     mProductoCompra.actualizarProductoC(PC);
 }
Ejemplo n.º 18
0
 internal void guardarProductoC(ProductosCompra PC)
 {
     mProductoCompra.guardarProductoC(PC);
 }
Ejemplo n.º 19
0
        private void txtBusqueda_KeyUp(object sender, KeyEventArgs e)
        {
            if (txtBusqueda.Text == "")
            {
                if (e.KeyCode == Keys.Enter)
                {
                    btnBuscar.PerformClick();
                }
            }
            else if (e.KeyCode == Keys.Enter)
            {
                using (RestauranteBDEntities1 bd = new RestauranteBDEntities1())
                {
                    int idBusqueda = Int32.Parse(txtBusqueda.Text);
                    var buscarProd = from producto in bd.ProductosCompra
                                     where producto.idProductoC == idBusqueda && producto.estado == "Activo"
                                     select producto;
                    if (buscarProd.Count() > 0)
                    {
                        prodCompra = bd.ProductosCompra.Where(VerificarId => VerificarId.idProductoC == idBusqueda).First();
                        Categorias categorias = new Categorias();
                        categorias = bd.Categorias.Where(VerificarId => VerificarId.idCategoria == prodCompra.idCategoria).First();
                        Proveedores proveedores = new Proveedores();
                        proveedores = bd.Proveedores.Where(VerificarId => VerificarId.idProveedor == prodCompra.idProveedor).First();
                        if (categorias.estado == "Activo" && proveedores.estado == "Activo")
                        {
                            int idprovee            = Int32.Parse(cmbProveedores.SelectedValue.ToString());
                            var buscarProdProveedor = from producto in bd.ProductosCompra
                                                      where producto.idProductoC == idBusqueda && producto.estado == "Activo"
                                                      where producto.idProveedor == idprovee
                                                      select producto;

                            if (buscarProdProveedor.Count() > 0)
                            {
                                ProductosCompra prod        = new ProductosCompra();
                                int             idProveedor = Int32.Parse(provee);
                                int             Buscar      = int.Parse(txtBusqueda.Text);
                                prod = bd.ProductosCompra.Where(idProducto => idProducto.idProductoC == Buscar && idProducto.idProveedor == idProveedor).First();

                                txtCodigoProd.Text = Convert.ToString(prod.idProductoC);
                                txtNombreProd.Text = Convert.ToString(prod.nombre);
                                txtPrecio.Text     = Convert.ToString(prod.precio);
                                nupCantidad.Focus();
                                txtBusqueda.Text = "";
                                intentos         = 2;
                            }
                            else
                            {
                                MessageBox.Show("¡El producto no se encuentra en los Registros" + "\n o no pertenece al proveedor seleccionado!", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
                                txtBusqueda.Text = "";
                            }
                        }
                        else
                        {
                            MessageBox.Show("¡La categoria o el Proveedor del Producto ingresado ha sido eliminada!", "Actualize Producto", MessageBoxButtons.OK,
                                            MessageBoxIcon.Error);
                        }
                    }
                    else
                    {
                        MessageBox.Show("¡El producto no se encuentra en los Registros!", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
                        txtBusqueda.Text = "";
                    }
                }
            }
        }
Ejemplo n.º 20
0
        private void btnComprar_Click(object sender, EventArgs e)
        {
            if (dtvDetallesCompra.Rows.Count == 0)
            {
                MessageBox.Show("¡Aún no hay nada en el carrito!", "Carrito Vacío", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
            }
            else
            {
                DialogResult result = MessageBox.Show("¿Desea agregar algo más antes de comprar?", "Validación", MessageBoxButtons.YesNo, MessageBoxIcon.Question);
                if (result == DialogResult.No)
                {
                    using (RestauranteBDEntities1 bd = new RestauranteBDEntities1())
                    {
                        Compraas compra = new Compraas();

                        String nombre = lblUsuario.Text;

                        compra.fechadeCompra   = Convert.ToDateTime(dtpFecha.Text);
                        compra.totalaPagar     = Convert.ToDecimal(lblTotalAPagar.Text);
                        compra.idProveedor     = Convert.ToInt32(provee);
                        compra.nombredeUsuario = nombre.ToString();

                        int idProv = int.Parse(provee);
                        proveedor                 = bd.Proveedores.Where(Id => Id.idProveedor == idProv).First();
                        proveedor.estado          = "Activo";
                        bd.Entry(proveedor).State = System.Data.Entity.EntityState.Modified;
                        bd.SaveChanges();

                        bd.Compraas.Add(compra);
                        bd.SaveChanges();

                        DetallesCompra detalleC = new DetallesCompra();
                        for (int i = 0; i < dtvDetallesCompra.RowCount; i++)
                        {
                            String idProdC    = dtvDetallesCompra.Rows[i].Cells[0].Value.ToString();
                            int    idProdConv = Convert.ToInt32(idProdC);

                            String cantidad    = dtvDetallesCompra.Rows[i].Cells[3].Value.ToString();
                            int    cantiConver = Convert.ToInt32(cantidad);

                            String precio     = dtvDetallesCompra.Rows[i].Cells[2].Value.ToString();
                            Double precioConv = Convert.ToDouble(precio);

                            String  total     = dtvDetallesCompra.Rows[i].Cells[4].Value.ToString();
                            Decimal totalConv = Convert.ToDecimal(total);

                            detalleC.idCompra      = Convert.ToInt32(lblCodigo.Text);
                            detalleC.idProductoC   = idProdConv;
                            detalleC.cantidad      = cantiConver;
                            detalleC.precioCompra  = precioConv;
                            detalleC.totalProducto = totalConv;

                            int idProd = idProdConv;
                            prodCompra                 = bd.ProductosCompra.Where(Id => Id.idProductoC == idProd).First();
                            prodCompra.estado          = "Activo";
                            bd.Entry(prodCompra).State = System.Data.Entity.EntityState.Modified;
                            bd.SaveChanges();

                            bd.DetallesCompra.Add(detalleC);
                            bd.SaveChanges();

                            Almacen almaceen = new Almacen();
                            var     lista    = from almacen in bd.Almacen
                                               where almacen.idProductoC == idProdConv
                                               select almacen;
                            if (lista.Count() > 0)
                            {
                                int idA          = int.Parse(dtvDetallesCompra.Rows[i].Cells[0].Value.ToString());
                                int CantidadProd = int.Parse(dtvDetallesCompra.Rows[i].Cells[3].Value.ToString());
                                almaceen = bd.Almacen.Where(VerificarID => VerificarID.idProductoC == idA).First();
                                almaceen.cantidadDisponible = almaceen.cantidadDisponible + CantidadProd;
                                bd.Entry(almaceen).State    = System.Data.Entity.EntityState.Modified;
                                bd.SaveChanges();
                            }
                            else
                            {
                                almaceen.idProductoC        = idProdConv;
                                almaceen.cantidadDisponible = int.Parse(dtvDetallesCompra.Rows[i].Cells[3].Value.ToString());
                                bd.Almacen.Add(almaceen);
                                bd.SaveChanges();
                            }
                        }

                        MessageBox.Show("¡Venta Realizada con éxito! \n\nCON UN TOTAL DE: $" + lblTotalAPagar.Text, "Guardado", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
                        cmbProveedores.Enabled = true;
                        dtvDetallesCompra.Rows.Clear();
                    }

                    RetornoId();
                    txtCodigoProd.Text = "";
                    txtNombreProd.Text = "";
                    txtPrecio.Text     = "";
                    nupCantidad.Value  = 0;
                    txtTotal.Text      = "";
                }
            }
        }
Ejemplo n.º 21
0
        private void btnAgregar_Click(object sender, EventArgs e)
        {
            try
            {
                decimal precioCon;

                if (decimal.TryParse(txtPrecioProd.Text, out precioCon) == false)
                {
                    MessageBox.Show("¡Ingrese correctamente el precio!");
                }
                else
                {
                    string nombre = txtNombreProdCompra.Text;
                    using (RestauranteBDEntities1 bd = new RestauranteBDEntities1())
                    {
                        var listaPV = from producto in bd.ProductosVenta
                                      where producto.nombre.Equals(nombre) && producto.estado == "Activo"
                                      select producto;

                        if (listaPV.Count() > 0)
                        {
                            MessageBox.Show("¡El Producto ya existe!", "Advertencia",
                                            MessageBoxButtons.OK,
                                            MessageBoxIcon.Warning);
                        }
                        else
                        {
                            var listaProveedor = from producto in bd.ProductosVenta
                                                 where producto.nombre.Equals(nombre) && producto.estado == "Inactivo"
                                                 select producto;

                            if (listaProveedor.Count() > 0)
                            {
                                prodC             = bd.ProductosCompra.Where(VerificarNombre => VerificarNombre.nombre == nombre).First();
                                prodC.precio      = decimal.Parse(txtPrecioProd.Text);
                                prodC.idProveedor = int.Parse(provee);
                                prodC.idCategoria = int.Parse(categ);
                                prodC.estado      = "Activo";

                                bd.Entry(prodC).State = System.Data.Entity.EntityState.Modified;
                                bd.SaveChanges();
                                MessageBox.Show("¡Producto insertado con éxito!", "Completado", MessageBoxButtons.OK, MessageBoxIcon.None);
                                this.Close();
                            }
                            else
                            {
                                prodC.nombre      = txtNombreProdCompra.Text;
                                prodC.precio      = decimal.Parse(txtPrecioProd.Text);
                                prodC.idProveedor = int.Parse(provee);
                                prodC.idCategoria = int.Parse(categ);
                                prodC.estado      = "Activo";

                                bd.ProductosCompra.Add(prodC);
                                bd.SaveChanges();

                                MessageBox.Show("¡Producto insertado con éxito!", "Completado", MessageBoxButtons.OK, MessageBoxIcon.None);
                                this.Close();
                            }
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show("¡Verifique las listas desplegables!", "Verificación", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
            }
        }
Ejemplo n.º 22
0
 public IActionResult AddVenta([FromBody] Ventas venta)
 {
     try
     {
         if (ModelState.IsValid)
         {
             float utilidad = 0;
             foreach (ProductosVenta item in venta.Productos)
             {
                 item.Estatus = true;
                 Productos producto = PosUoW.ProductosRepository.GetById(a => a.idProducto.Equals(item.idProducto));
                 List <ProductosCompra> productosCompra = PosUoW.ProductosCompraRepository.GetAllByCriteria(x => x.idProducto.Equals(producto.idProducto) && x.Restante > 0, x => x.idCompraProducto).ToList();
                 float restante = item.Cantidad;
                 for (int i = 0; i < productosCompra.Count(); i++)
                 {
                     VentaLote       lote           = new VentaLote();
                     ProductosCompra productoCompra = productosCompra.ElementAt(i);
                     if (productoCompra.Restante == restante)
                     {
                         lote.idProducto       = producto.idProducto;
                         lote.idProductoCompra = productoCompra.idCompraProducto;
                         lote.estatus          = true;
                         lote.cantidad         = restante;
                         restante  = 0;
                         utilidad += productoCompra.Restante * productoCompra.Costo;
                         productoCompra.Restante = 0;
                         i = productosCompra.Count();
                     }
                     else if (productoCompra.Restante > restante)
                     {
                         lote.idProducto       = producto.idProducto;
                         lote.idProductoCompra = productoCompra.idCompraProducto;
                         lote.estatus          = true;
                         lote.cantidad         = restante;
                         utilidad += restante * productoCompra.Costo;
                         productoCompra.Restante -= restante;
                         i        = productosCompra.Count();
                         restante = 0;
                     }
                     else
                     {
                         lote.idProducto       = producto.idProducto;
                         lote.idProductoCompra = productoCompra.idCompraProducto;
                         lote.estatus          = true;
                         lote.cantidad         = productoCompra.Restante;
                         utilidad += productoCompra.Restante * productoCompra.Costo;
                         restante -= productoCompra.Restante;
                         productoCompra.Restante = 0;
                     }
                     venta.Lotes.Add(lote);
                     PosUoW.ProductosCompraRepository.Update(productoCompra);
                 }
                 if (restante > 0)
                 {
                     utilidad += restante * producto.PrecioCosto;
                 }
                 Almacenes       principalWarehouse = PosUoW.AlmacenesRepository.GetSingleByCriteria(x => x.Principal);
                 ProductoAlmacen almacen            = PosUoW.ProductoAlmacenRepository.GetSingleByCriteria(x => x.idProducto.Equals(item.idProducto) && x.idAlmacen.Equals(principalWarehouse.idAlmacen));
                 if (almacen == null)
                 {
                     almacen = new ProductoAlmacen
                     {
                         idAlmacen  = principalWarehouse.idAlmacen,
                         idProducto = producto.idProducto,
                         Existencia = 0
                     };
                     PosUoW.ProductoAlmacenRepository.Add(almacen);
                     PosUoW.Save();
                 }
                 almacen.Existencia -= item.Cantidad;
                 PosUoW.ProductosRepository.Update(producto);
             }
             utilidad       = (float)Math.Round((venta.Total - venta.Impuestos) - utilidad, 2);
             venta.Utilidad = utilidad;
             PosUoW.VentasRepository.Add(venta);
             PosUoW.Save();
             return(Ok(new { venta = venta, totalEfectivo = totalEfectivo(venta.idUsuario) }));
         }
         else
         {
             return(BadRequest("Los datos de la venta son incorrectos"));
         }
     }
     catch (Exception ex)
     {
         return(StatusCode(StatusCodes.Status500InternalServerError, ex));
     }
 }