public ActionResult Orden(int id, int ncontador)
        {
            //Producto producto = db.Productoes.Find(id);
            if (ncontador == 0)
            {
                //lista = new List<CompraDetalle>();
                //creacionPedido();
                ncontador++;
            }
            CompraDetalle aux = new CompraDetalle();

            aux.ID_Producto      = id;
            aux.ID_FacturaCompra = 0;
            //aux.ID_FacturaCompra= (from c in db.FacturaCompras select c).Count();
            if (ModelState.IsValid)
            {
                //db.CompraDetalles.Add(aux);
                //db.SaveChanges();
                lista.Add(aux);
                //Productos
            }
            //Productos
            var lista_de_productos = from c in db.Productoes.Include("CategoriaProducto")
                                     select c;

            ViewBag.Productos = lista_de_productos.ToList();
            ViewBag.Contador  = ncontador;

            return(View(Getpedido()));
        }
示例#2
0
        public async Task <IActionResult> Edit(int id, [Bind("compraDetallID,idArticulo,cantidad,precio,precioTotal,compraID")] CompraDetalle compraDetalle)
        {
            if (id != compraDetalle.compraDetallID)
            {
                return(NotFound());
            }

            if (ModelState.IsValid)
            {
                try
                {
                    _context.Update(compraDetalle);
                    await _context.SaveChangesAsync();
                }
                catch (DbUpdateConcurrencyException)
                {
                    if (!CompraDetalleExists(compraDetalle.compraDetallID))
                    {
                        return(NotFound());
                    }
                    else
                    {
                        throw;
                    }
                }
                return(RedirectToAction(nameof(Index)));
            }
            ViewData["idArticulo"] = new SelectList(_context.Articulo, "idArticulo", "idArticulo", compraDetalle.idArticulo);
            ViewData["compraID"]   = new SelectList(_context.Compra, "compraID", "compraID", compraDetalle.compraID);
            return(View(compraDetalle));
        }
 public CompraDetalleRequest Map(CompraDetalle detalle)
 {
     this.Valor      = detalle.Valor;
     this.Cantidad   = detalle.Cantidad;
     this.ProductoId = detalle.Producto.Id;
     return(this);
 }
        /// <summary> Consultar los registros del detalle de una compra. </summary>
        /// <param name="tintCodigo"> Codigo de la compra a la que se le va a conocer el detalle. </param>
        /// <returns> La lista con los detalles seleccionados. </returns>
        public List <CompraDetalle> gmtdConsultarDetalle(int tintCodigo)
        {
            using (dbExequial2010DataContext compras = new dbExequial2010DataContext())
            {
                var query = from com in compras.tblComprasDetalles
                            join pro in compras.tblProductos on com.strCodProducto equals pro.strCodProducto
                            where com.intCodCompra == tintCodigo
                            select new { com.fltTotal, com.fltValorCompra, com.fltValorVenta, com.intCantidad, com.intCodCompra, com.strCodProducto, pro.strDesProducto };

                List <CompraDetalle> lstCompraDetalle = new List <CompraDetalle>();

                foreach (var dato in query.ToList())
                {
                    CompraDetalle com = new CompraDetalle();
                    com.fltTotal       = dato.fltTotal;
                    com.fltValorCompra = dato.fltValorCompra;
                    com.fltValorVenta  = dato.fltValorVenta;
                    com.intCantidad    = dato.intCantidad;
                    com.intCodCompra   = dato.intCodCompra;
                    com.strCodProducto = dato.strCodProducto;
                    com.strNomProducto = dato.strDesProducto;
                    lstCompraDetalle.Add(com);
                }
                return(lstCompraDetalle);
            }
        }
示例#5
0
        ///
        /// <param name="compraDetalle"></param>
        public bool crear(CompraDetalle compraDetalle)
        {
            int compraDetalleId = 0;

            try
            {
                using (IDbConnection conexionSql = new SqlConnection(_databaseSettings.Value.defaultConnection))
                {
                    conexionSql.Open();

                    string insertarCompra = "INSERT INTO CompraDetalle(idProducto, cantidad, idCompra) VALUES (@IdProducto, @Cantidad, @IdCompra); " +
                                            "SELECT CAST(SCOPE_IDENTITY() as int)";

                    using (IDbTransaction transaccion = conexionSql.BeginTransaction())
                    {
                        compraDetalleId = conexionSql.Query <int>(insertarCompra, new { IdProducto = compraDetalle.producto.id, Cantidad = compraDetalle.cantidad, IdCompra = compraDetalle.compra.id }, transaccion).Single();
                        transaccion.Commit();
                    }
                    conexionSql.Close();
                }
            }

            catch (Exception ex)
            {
                _logger.LogError(ex.Message, ex);
            }
            return(compraDetalleId > 0);
        }
示例#6
0
        private void btnGuardar_Click(object sender, EventArgs e)
        {
            Compra pCompra = new Compra();

            pCompra.Folio = txtFolio.Text.Trim();
            pCompra.Fecha = dtpFecha.Value;
            pCompra.Total = float.Parse(txttotal.Text.Trim());

            pCompra.Detalles = new List <CompraDetalle>();
            CompraDetalle compraDetalle = null;

            for (int i = 0; i < tbldatos.RowCount; i++)
            {
                compraDetalle             = new CompraDetalle();
                compraDetalle.IdProducto  = Convert.ToInt32(tbldatos.Rows[i].Cells["ID"].Value);
                compraDetalle.Cantidad    = Convert.ToInt32(tbldatos.Rows[i].Cells["CANTIDAD"].Value);
                compraDetalle.CostoUnidad = float.Parse(tbldatos.Rows[i].Cells["COSTO"].Value.ToString());
                pCompra.Detalles.Add(compraDetalle);
            }

            if (Compra.Guardar(ref pCompra))
            {
                MessageBox.Show("Compra Guardado Con Exito!!", "Guardado", MessageBoxButtons.OK, MessageBoxIcon.Information);
                DialogResult = DialogResult.OK;
            }
            else
            {
                MessageBox.Show("No se pudo guardar la compra", "Fallo!!", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
            }
        }
        public ActionResult DeleteConfirmed(int id)
        {
            CompraDetalle compraDetalle = db.CompraDetalles.Find(id);

            db.CompraDetalles.Remove(compraDetalle);
            db.SaveChanges();
            return(RedirectToAction("Index"));
        }
 public void Eliminar(ApplicationDbContext Context)
 {
     if (!IsNew)
     {
         CompraDetalle model = this.ToModel();
         Context.Entry(model).State = EntityState.Deleted;
     }
 }
 public CompraDetalleViewModel(CompraDetalle model)
 {
     _CompraDetalleId  = model.CompraDetalleId;
     _CompraId         = model.CompraId;
     _MercaderiaId     = model.MercaderiaId;
     _UnidadMedidaId   = model.UnidadMedidaId;
     _Cantidad         = model.Cantidad;
     _PrecioUnitario   = model.PrecioUnitario;
     _CodigoMercaderia = model.Mercaderia.Codigo;
     _NombreMercaderia = model.Mercaderia.Nombre;
     _UnidadMedida     = model.UnidadMedida?.Nombre;
 }
 public ActionResult Edit([Bind(Include = "ID,ID_Producto,ID_FacturaCompra,Cantidad")] CompraDetalle compraDetalle)
 {
     if (ModelState.IsValid)
     {
         db.Entry(compraDetalle).State = EntityState.Modified;
         db.SaveChanges();
         return(RedirectToAction("Index"));
     }
     ViewBag.ID_FacturaCompra = new SelectList(db.FacturaCompras, "ID", "ID", compraDetalle.ID_FacturaCompra);
     ViewBag.ID_Producto      = new SelectList(db.Productoes, "ID", "Nombre", compraDetalle.ID_Producto);
     return(View(compraDetalle));
 }
示例#11
0
        public async Task <IActionResult> Create([Bind("compraDetallID,idArticulo,cantidad,precio,precioTotal,compraID")] CompraDetalle compraDetalle)
        {
            if (ModelState.IsValid)
            {
                _context.Add(compraDetalle);
                await _context.SaveChangesAsync();

                return(RedirectToAction(nameof(Index)));
            }
            ViewData["idArticulo"] = new SelectList(_context.Articulo, "idArticulo", "idArticulo", compraDetalle.idArticulo);
            ViewData["compraID"]   = new SelectList(_context.Compra, "compraID", "compraID", compraDetalle.compraID);
            return(View(compraDetalle));
        }
        public int Add(CompraDetalle entity)
        {
            parametros = new List <SqlParameter>
            {
                new SqlParameter("@idCompra", entity.Compras.Id),
                new SqlParameter("@idArticulo", entity.Articulo.Id),
                new SqlParameter("@precioVenta", entity.PrecioVenta),
                new SqlParameter("@cantidad", entity.Cantidad),
                new SqlParameter("@subTotal", entity.Subtotal)
            };

            return(ExecuteNonQuery(insert));
        }
        public CompraDetalle ToModel()
        {
            CompraDetalle model = new CompraDetalle
            {
                CompraDetalleId = _CompraDetalleId,
                CompraId        = _CompraId,
                MercaderiaId    = _MercaderiaId,
                UnidadMedidaId  = _UnidadMedidaId,
                Cantidad        = _Cantidad,
                PrecioUnitario  = _PrecioUnitario
            };

            return(model);
        }
        // GET: CompraDetalles/Details/5
        public ActionResult Details(int?id)
        {
            if (id == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }
            CompraDetalle compraDetalle = db.CompraDetalles.Find(id);

            if (compraDetalle == null)
            {
                return(HttpNotFound());
            }
            return(View(compraDetalle));
        }
示例#15
0
        public ActionResult Create(IFormCollection collection)
        {
            try
            {
                int idProducto = Convert.ToInt32(collection["producto"].ToString());

                Compra   compra   = _compraGateway.obtener(Convert.ToInt32(collection["compra"]));
                Producto producto = _productoGateway.obtener(idProducto);

                CompraDetalle compraDetalle = new CompraDetalle
                {
                    producto = producto,
                    cantidad = Convert.ToInt32(collection["cantidad"]),
                    compra   = compra
                };

                float totalCompra = (compraDetalle.cantidad * compraDetalle.producto.precioUnitario) + compra.total;

                if (compra.beneficiario.cupo < totalCompra)
                {
                    return(RedirectToAction("Create", new { idCompra = compra.id, tipoMensaje = (int)MensajeEnum.CupoBeneficiario }));
                }

                if (compra.beneficiario.afiliado.cupo < totalCompra)
                {
                    return(RedirectToAction("Create", new { idCompra = compra.id, tipoMensaje = (int)MensajeEnum.CupoAfiliado }));
                }

                _compraDetalleGateway.crear(compraDetalle);

                float cupoAfiliado = compra.beneficiario.afiliado.cupo - (compraDetalle.cantidad * compraDetalle.producto.precioUnitario);
                compra.beneficiario.afiliado.cupo = cupoAfiliado;
                _afiliadoGateway.actualizar(compra.beneficiario.afiliado);

                compra.total = totalCompra;
                _compraGateway.actualizar(compra);

                return(RedirectToAction("List", new { idCompra = compra.id }));
            }

            catch (Exception ex)
            {
                ViewBag.Messages = new[] {
                    new AlertViewModel("danger", "Error en el proceso", ex.Message)
                };

                _logger.LogError(ex.Message, ex);
                return(View());
            }
        }
        private async void insumos_lv_ItemSelected(object sender, SelectedItemChangedEventArgs e)
        {
            var           insumo        = (Insumo)e.SelectedItem;
            CompraDetalle compraDetalle = new CompraDetalle();

            Console.WriteLine("inusmo: " + insumo.nombre);
            string cantidad = await DisplayPromptAsync("Cantidad", "¿Cantidad de insumo en kg?");

            compraDetalle.insumoId = insumo.id;
            compraDetalle.cantidad = float.Parse(cantidad);
            compraDetalle.insumo   = insumo;
            _root.addInsumo(compraDetalle);
            this.Navigation.PopModalAsync();
        }
示例#17
0
        public void GuardarTest()
        {
            RepositorioBase <CompraDetalle> test = new RepositorioBase <CompraDetalle>();
            CompraDetalle cd = new CompraDetalle();

            cd.IdCompraDetalle = 0;
            cd.IdCompra        = 5;
            cd.IdProducto      = 6;
            cd.Unidades        = 5;
            cd.CostoUnidad     = 3;
            cd.Total           = 4;

            Assert.IsTrue(test.Guardar(cd));
        }
示例#18
0
        public void ModificarTest()
        {
            RepositorioBase <CompraDetalle> db = new RepositorioBase <CompraDetalle>();
            CompraDetalle cd = new CompraDetalle();

            cd.IdCompraDetalle = 1;
            cd.IdCompra        = 15;
            cd.IdProducto      = 6;
            cd.Unidades        = 5;
            cd.CostoUnidad     = 3;
            cd.Total           = 4;

            Assert.IsTrue(db.Modificar(cd));
        }
示例#19
0
        private void EvaluarImporte()
        {
            RepositorioDetalle repo = new RepositorioDetalle();
            int           cantidad;
            int           precio;
            CompraDetalle compra = new CompraDetalle();

            cantidad = Util.ToInt(CantidadTextBox.Text);
            precio   = Util.ToInt(PrecioTextBox.Text);

            ImporteTextBox.Text = CalcularImporte(cantidad, precio).ToString();
            //compra.Cantidad = cantidad;
            //compra.Precio = precio;
        }
示例#20
0
        private void btnAgregar_Click(object sender, EventArgs e)
        {
            if (this.txtProducto.Text.Trim() != "0" &&
                this.txtProducto.Text.Trim() != "0" &&
                this.cboNombreProducto.SelectedIndex >= 0 &&
                this.txtGanancia.Text.Trim() != "" &&
                this.txtGanancia.Text.Trim() != "0")
            {
                var query =
                    from cd in this.lstCompraDetalle
                    where cd.strCodProducto == this.txtProducto.Text
                    select cd;

                if (query.ToList().Count <= 0)
                {
                    CompraDetalle compraDetalle = new CompraDetalle();
                    compraDetalle.fltTotal       = Convert.ToDouble(this.txtValorCompra.Text) * Convert.ToDouble(this.txtCantidad.Text);
                    compraDetalle.fltValorCompra = Convert.ToDouble(this.txtValorCompra.Text);
                    compraDetalle.fltValorVenta  = Convert.ToDouble(this.txtValorVenta.Text);
                    compraDetalle.intCantidad    = Convert.ToInt32(this.txtCantidad.Text);
                    compraDetalle.intCodCompra   = 0;
                    compraDetalle.strCodProducto = this.cboNombreProducto.SelectedValue.ToString();
                    compraDetalle.strNomProducto = this.cboNombreProducto.Text;
                    this.lstCompraDetalle.Add(compraDetalle);
                    this.dgvDetalleCompras.AutoGenerateColumns = false;
                    this.dgvDetalleCompras.DataSource          = null;
                    this.dgvDetalleCompras.DataSource          = lstCompraDetalle;

                    this.txtTotal.Text = Convert.ToString(Convert.ToDecimal(this.txtTotal.Text) + (Convert.ToDecimal(compraDetalle.fltValorCompra) * Convert.ToDecimal(compraDetalle.intCantidad)));
                }
                else
                {
                    MessageBox.Show("Ya aparece este producto registrado en la grid. ", "Agregar ", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                }
            }
            else
            {
                MessageBox.Show("Debe de seleccionar un producto valido. ", "Agregar ", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }

            this.txtValorActual.Text             = "0";
            this.txtValorCompra.Text             = "0";
            this.txtValorVenta.Text              = "0";
            this.txtCantidad.Text                = "0";
            this.txtDisponibilidad.Text          = "0";
            this.txtProducto.Text                = "";
            this.cboNombreProducto.SelectedIndex = 0;
            this.txtProducto.Focus();
        }
示例#21
0
 private void Clean()
 {
     CompraIdTextBox.Text       = "0";
     TotalTextBox.Text          = string.Empty;
     SubTotalTextBox.Text       = string.Empty;
     ItbisTextBox.Text          = string.Empty;
     CantidadTextBox.Text       = string.Empty;
     PrecioTextBox.Text         = string.Empty;
     ImporteTextBox.Text        = string.Empty;
     EfectivoTextBox.Text       = "0";
     DevueltaTextbox.Text       = "0";
     ViewState["CompraDetalle"] = new CompraDetalle();
     DetalleGridView.DataSource = null;
     DetalleGridView.DataBind();
 }
        public void Grabar(ApplicationDbContext Context)
        {
            CompraDetalle model = this.ToModel();

            if (IsNew)
            {
                Context.CompraDetalles.Add(model);
            }
            else
            {
                if (IsOld)
                {
                    Context.Entry(model).State = EntityState.Modified;
                }
            }
        }
        // GET: CompraDetalles/Edit/5
        public ActionResult Edit(int?id)
        {
            if (id == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }
            CompraDetalle compraDetalle = db.CompraDetalles.Find(id);

            if (compraDetalle == null)
            {
                return(HttpNotFound());
            }
            ViewBag.ID_FacturaCompra = new SelectList(db.FacturaCompras, "ID", "ID", compraDetalle.ID_FacturaCompra);
            ViewBag.ID_Producto      = new SelectList(db.Productoes, "ID", "Nombre", compraDetalle.ID_Producto);
            return(View(compraDetalle));
        }
示例#24
0
        public string PostCompra(int proveedor, string comentario, DateTime fecha, bool credito, [FromBody] ListaCompras listaCompras)
        {
            var compraNueva = new Compra()
            {
                CodigoProveedor = proveedor, Comentario = comentario, Fecha = fecha, Credito = credito
            };

            db.Compras.Add(compraNueva);
            db.SaveChanges();
            var     compras = listaCompras.Listado; //array con productos
            decimal total   = 0;

            foreach (CompraDetalle compra in compras)
            {
                var compraDetalle = new CompraDetalle()
                {
                    CompraId = compraNueva.Id, CodigoProducto = compra.CodigoProducto, Cantidad = compra.Cantidad, Costo = compra.Costo
                };
                total += compraDetalle.Costo.Value * compra.Cantidad.Value;
                var producto = db.Productos.Find(compraDetalle.CodigoProducto);
                producto.Existencia      = producto.Existencia + int.Parse(compraDetalle.Cantidad.ToString());
                db.Entry(producto).State = System.Data.Entity.EntityState.Modified;
                db.CompraDetalles.Add(compraDetalle);
            }

            if (credito == true)
            {
                var _proveedor = db.Proveedors.Find(proveedor);
                _proveedor.Saldo           = Convert.ToDecimal(_proveedor.Saldo) + total;
                db.Entry(_proveedor).State = System.Data.Entity.EntityState.Modified;

                var proveedorDetalle = new ProveedoresDetalle()
                {
                    Fecha = fecha, ProveedorId = proveedor, Credito = total, Referencia = "Compra # " + compraNueva.Id
                };
                db.ProveedoresDetalles.Add(proveedorDetalle);
            }

            db.SaveChanges();
            return(compraNueva.Id.ToString());
        }
        // GET: Compras/Details/5
        public async Task <IActionResult> Details(int?id)
        {
            if (id == null)
            {
                return(NotFound());
            }

            var compra = await _context.Compra
                         .Include(c => c.Cliente)
                         .Include(c => c.FormaEnvio)
                         .Include(c => c.FormaPago)
                         .FirstOrDefaultAsync(m => m.compraID == id);

            if (compra == null)
            {
                return(NotFound());
            }


            var compraview    = new CompraView();
            var OrdenDetalle  = new OrdenDetalle();
            var CompraDetalle = new CompraDetalle();

            compraview.Compra = await _context.Compra
                                .Include(o => o.Cliente)
                                .Include(o => o.FormaEnvio)
                                .Include(o => o.FormaPago)
                                .FirstOrDefaultAsync(m => m.compraID == id);

            var data = _context.compraDetalles.Include(od => od.Compra).Include(od => od.Articulo).Where(od => od.compraID.Equals(id)).ToList();

            compraview.Articulos = data;


            ViewData["formaPago"] = new SelectList(_context.Compra, "formaPago", "formaPago", CompraDetalle.compraID);
            ViewData["compra"]    = new SelectList(_context.Compra, "compraID", "compraID", CompraDetalle.compraID);
            ViewData["Articuloo"] = new SelectList(_context.Articulo, "idArticulo", "Nombre");
            return(View(compraview));
        }
        public async Task <IActionResult> AdicionarArticulo([Bind("compraDetallID ,idArticulo,cantidad,precio,precioTotal,compraID")] CompraDetalle compraDetalle)
        {
            if (ModelState.IsValid)
            {
                int id         = compraDetalle.compraID;
                int idArticulo = compraDetalle.idArticulo;

                Models.Entidades.Articulo articulo = _context.Articulo.Find(idArticulo);

                decimal precio   = articulo.Precio;
                decimal cantidad = compraDetalle.cantidad;

                compraDetalle.precio      = precio;
                compraDetalle.precioTotal = cantidad * precio;

                if (compraDetalle.cantidad <= articulo.Cantidad)
                {
                    articulo.Cantidad -= decimal.ToInt32(cantidad);
                    _context.Update(articulo);


                    if (_context.compraDetalles.Any(o => o.compraDetallID == id))
                    {
                        Models.Entidades.CompraDetalle ordenDetalleUpdate = _context.compraDetalles.Where(t => t.idArticulo
                                                                                                          == idArticulo).FirstOrDefault();
                        Models.Entidades.CompraDetalle ordenDetalleUpdate1 = _context.compraDetalles.Find(id);


                        if (ordenDetalleUpdate == null && ordenDetalleUpdate1.compraID == id)
                        {
                            Models.Entidades.CompraDetalle ordene = _context.compraDetalles
                                                                    .Where(s => s.idArticulo == idArticulo)
                                                                    .FirstOrDefault();

                            Models.Entidades.CompraDetalle ordene1 = _context.compraDetalles
                                                                     .Where(s => s.compraID == id)
                                                                     .FirstOrDefault();

                            if (ordene != null && ordene1 != null)
                            {
                                ordene.cantidad += cantidad;
                                _context.Update(ordene);
                            }
                            else
                            {
                                _context.Add(compraDetalle);
                            }
                        }

                        else
                        {
                            if (ordenDetalleUpdate.compraID == id)
                            {
                                ordenDetalleUpdate.cantidad += cantidad;
                                _context.Update(ordenDetalleUpdate);
                            }
                            else
                            {
                                _context.Add(compraDetalle);
                            }
                        }
                    }
                    else
                    {
                        _context.Add(compraDetalle);
                    }

                    await _context.SaveChangesAsync();

                    Models.Entidades.Compra compra = _context.Compra.Find(id);
                    compra.subtotal += cantidad * precio;
                    compra.total    += cantidad * precio;

                    _context.Update(compra);
                    _context.SaveChanges();
                }

                else
                {
                    TempData["msg"] = "<script>alert('No contamos con esa cantidad');</script>";
                    return(RedirectToAction("Details", new { id = id }));
                }

                return(RedirectToAction("Details", new { id = id }));
            }


            return(View(compraDetalle));
        }
 public int Edit(CompraDetalle entity)
 {
     throw new NotImplementedException();
 }
        public void RegistrarCompra(RegistrarComprar r)
        {
            Compra c = new Compra();

            c.idCompra    = 0;
            c.idProveedor = r.idProveedor;
            c.Total       = r.Total;
            c.UsuarioAlta = 1;
            c.FechaAlta   = DateTime.Today;
            c.Fecha       = r.Fecha;
            c.NroFactura  = r.NroFactura;
            c.idMedioPago = r.idMedioPago;
            c.Estado      = "A";

            c = this.db.Compra.Add(c);
            //this.save();
            ///registrar los productos
            foreach (CompraDetalle1 cd in r.CompraDetalle)
            {
                Producto p = new Producto();
                if (cd.idProducto > 0)
                {
                    //por ahora hard
                    Parametrizacion param  = this.db.Parametrizacion.Where(param11 => param11.Descripcion == "PorcentajeMarcador").FirstOrDefault();
                    Parametrizacion param1 = this.db.Parametrizacion.Where(param12 => param12.Descripcion == "PorcentajeContado").FirstOrDefault();
                    Parametrizacion param2 = this.db.Parametrizacion.Where(param13 => param13.Descripcion == "PorcentajeGremio").FirstOrDefault();
                    if (param != null)
                    {
                        decimal porcentaje_lista   = (decimal)param.Valor;
                        decimal porcentaje_contado = (decimal)param1.Valor;
                        decimal porcentaje_gremio  = (decimal)param2.Valor;
                        decimal PrecioLista        = cd.PrecioUnitario * (1 + (porcentaje_lista / 100));
                        decimal PrecioContado      = PrecioLista - (PrecioLista * porcentaje_contado) / 100;
                        decimal PrecioGremio       = cd.PrecioUnitario * (1 + (porcentaje_gremio / 100));
                        p                 = this.db.Producto.Find(cd.idProducto);
                        p.PrecioLista     = PrecioLista;
                        p.PrecioContado   = PrecioContado;
                        p.PrecioGremio    = PrecioGremio;
                        p.CodigoBarras    = cd.CodigoBarras;
                        db.Entry(p).State = EntityState.Modified;
                        //          this.save();
                    }



                    Stock s = this.db.Stock.Where(s1 => s1.idProducto == cd.idProducto)
                              .FirstOrDefault();

                    if (s != null)
                    {
                        s.Cantidad       += cd.Cantidad;
                        db.Entry(s).State = EntityState.Modified;
                        //    this.save();
                    }
                    else
                    {
                        Stock s1 = new Stock();
                        s1.idProducto  = cd.idProducto;
                        s1.Cantidad    = cd.Cantidad;
                        s1.Estado      = "A";
                        s1.FechaAlta   = DateTime.Today;
                        s1.UsuarioAlta = 1;
                        s1.idStock     = 0;
                        db.Stock.Add(s1);
                        //      this.save();
                    }

                    ProductoPrecio pp = this.db.ProductoPrecio.Where(pp1 => pp1.idProducto == cd.idProducto && pp1.idProveedor == r.idProveedor).FirstOrDefault();
                    if (pp != null)
                    {
                        pp.PrecioCosto     = cd.PrecioUnitario;
                        pp.FechaAlta       = DateTime.Today;
                        db.Entry(pp).State = EntityState.Modified;
                        //      this.save();
                    }
                    else
                    {
                        ProductoPrecio pp1 = new ProductoPrecio();
                        pp1.idProducto  = cd.idProducto;
                        pp1.idProveedor = r.idProveedor;
                        pp1.PrecioCosto = cd.PrecioUnitario;
                        pp1.Estado      = "A";
                        pp1.UsuarioAlta = 1;
                        pp1.FechaAlta   = DateTime.Today;
                        db.ProductoPrecio.Add(pp1);
                        //  this.save();
                    }
                }
                else
                {
                    p.idProducto   = cd.idProducto;
                    p.Nombre       = cd.NombreProducto;
                    p.CodigoBarras = cd.CodigoBarras;
                    p.UsuarioAlta  = 1;
                    p.FechaAlta    = DateTime.Today;
                    p.Estado       = "A";
                    //por ahora hard
                    Parametrizacion param = new Parametrizacion();
                    param = this.db.Parametrizacion.Where(param11 => param11.Descripcion == "PorcentajeMarcador").FirstOrDefault();
                    Parametrizacion param1 = this.db.Parametrizacion.Where(param12 => param12.Descripcion == "PorcentajeContado").FirstOrDefault();
                    Parametrizacion param2 = this.db.Parametrizacion.Where(param13 => param13.Descripcion == "PorcentajeGremio").FirstOrDefault();
                    if (param != null)
                    {
                        decimal porcentaje_contado = (decimal)param1.Valor;
                        decimal porcentaje_lista   = (decimal)param.Valor;
                        decimal porcentaje_gremio  = (decimal)param2.Valor;

                        decimal PrecioLista   = cd.PrecioUnitario * (1 + (porcentaje_lista / 100));
                        decimal PrecioContado = PrecioLista - (PrecioLista * porcentaje_contado) / 100;
                        decimal PrecioGremio  = cd.PrecioUnitario * (1 + (porcentaje_gremio / 100));
                        p.PrecioLista   = PrecioLista;
                        p.PrecioContado = PrecioContado;
                        p.PrecioGremio  = PrecioGremio;
                    }
                    p = this.db.Producto.Add(p);
                    //this.save();

                    Stock s = new Stock();
                    s.Cantidad    = cd.Cantidad;
                    s.idProducto  = p.idProducto;
                    s.FechaAlta   = DateTime.Today;
                    s.UsuarioAlta = 1;
                    s.Estado      = "A";
                    s             = this.db.Stock.Add(s);
                    //this.save();

                    ProductoPrecio pp = new ProductoPrecio();
                    pp.idProducto  = p.idProducto;
                    pp.idProveedor = r.idProveedor;
                    pp.Estado      = "A";
                    pp.FechaAlta   = DateTime.Today;
                    pp.UsuarioAlta = 1;
                    pp.PrecioCosto = cd.PrecioUnitario;
                    pp             = this.db.ProductoPrecio.Add(pp);
                    //this.save();

                    if (r.idGrupo > 0)
                    {
                        GrupoXProducto gxp = new GrupoXProducto();
                        gxp.idGrupo     = r.idGrupo;
                        gxp.idProducto  = pp.idProducto;
                        gxp.Estado      = "A";
                        gxp.FechaAlta   = DateTime.Today;
                        gxp.UsuarioAlta = 1;
                        this.db.GrupoXProducto.Add(gxp);
                        //  this.save();
                    }
                }

                CompraDetalle cp = new CompraDetalle();
                cp.idCompraDetalle = 0;
                cp.idProducto      = cd.idProducto == 0?p.idProducto:cd.idProducto;
                cp.idCompra        = c.idCompra;
                cp.PrecioUnitario  = cd.PrecioUnitario;
                cp.PrecioTotal     = cd.PrecioTotal;
                cp.UsuarioAlta     = 1;
                cp.FechaAlta       = DateTime.Today;
                cp = this.db.CompraDetalle.Add(cp);
                //this.save();
            }

            //Registrar Movimiento
            if (r.idMedioPago == 1)
            {
                Caja c3 = new Caja();
                c3.idCaja         = 0;
                c3.idConcepto     = 2; //Compra
                c3.TipoMovimiento = "E";
                c3.Monto          = r.Total;
                c3.Descripcion    = "Compra Correspondiente a Nro. Factura: " + r.NroFactura;
                c3.Estado         = "A";
                c3.UsuarioAlta    = 1;
                c3.FechaAlta      = DateTime.Today;
                c3 = this.db.Caja.Add(c3);
                //this.save();
            }

            this.save();
        }
 public void addInsumo(CompraDetalle insumo)
 {
     insumos.Add(insumo);
     insumos = insumos.OrderBy(o => o.insumo.nombre).ToList();
     insumos_lv.ItemsSource = insumos;
 }