public async Task <Response <Tipo_producto> > DeleteAsync(Tipo_producto modelo)
        {
            var response = new Response <Tipo_producto>();

            response.IsSuccess = false;
            try
            {
                Tipo_producto TProducto = await db.Tipo_Productos.FirstOrDefaultAsync(tp => tp.ID_Tipo_Producto == modelo.ID_Tipo_Producto);

                Estado estado = await db.Estados.FirstOrDefaultAsync(e => e.ID_Estado == modelo.Estado.ID_Estado);

                modelo.Estado = estado;
                if (TProducto == null)
                {
                    response.Message = "Debe proveer la información solicitada...";
                    return(response);
                }

                //
                db.Remove(TProducto);
                await db.SaveChangesAsync();

                //
                response.IsSuccess = true;
                response.Result    = modelo;
            }
            catch (Exception ex)
            {
                response.Message = ex.Message;
            }
            //
            return(response);
        }
Exemplo n.º 2
0
        private void loadAllTipo_producto()
        {
            Tipo_producto tipo_Producto = new Tipo_producto();
            DataTable     tipo_prod     = tipo_Producto.buscarTodos();

            cargarTipo_Producto(tipo_prod);
        }
Exemplo n.º 3
0
        protected void btnBuscar_Click(object sender, EventArgs e)
        {
            try
            {
                Producto      producto      = prod.BuscarProducto(Convert.ToInt64(txtCodProducto.Text));
                Tipo_producto tipo_producto = ti_prod.BuscarTipo_Produc(Convert.ToInt32(producto.prod_tp_codigo));
                Moneda        moneda        = mo.BuscarMoneda(Convert.ToString(producto.prod_mon_codigo));
                Marca         marca         = ma.BuscarMarca(Convert.ToInt32(producto.prod_ma_codigo));
                Unidad_medida unidad_medida = um.BuscarUnidad(Convert.ToInt32(producto.prod_um_codigo));


                if (producto != null)
                {
                    divMantenimiento.Visible = true;
                    txtCodigo.Text           = producto.prod_codigo.ToString();
                    txtDescuento.Text        = producto.prod_desc.ToString();
                    txtDetalle.Text          = producto.prod_detalle;
                    txtMarcaCodigo.Text      = marca.ma_nombre;
                    txtMedida.Text           = producto.prod_medida.ToString();
                    txtMonedaCodigo.Text     = moneda.mon_nombre;
                    txtPrecio.Text           = producto.prod_precio.ToString();
                    txtTipoCodigo.Text       = tipo_producto.tp_descripcion;
                    txtUnidadMedida.Text     = unidad_medida.um_descripcion;
                    if (producto.prod_es_gravado == true)
                    {
                        rbGravado.Checked = true;
                    }
                }
            }
            catch (Exception)
            {
                throw;
            }
        }
Exemplo n.º 4
0
        private async void BtnBorrarTP_Clicked(object sender, EventArgs e)
        {
            try
            {
                Tipo_producto tipo_Producto = new Tipo_producto()
                {
                    id_tipoproducto      = Convert.ToInt32(idproductosentry.Text),
                    nombre_tipo_producto = nombreTpEntry.Text
                };

                var        json    = JsonConvert.SerializeObject(tipo_Producto);
                var        content = new StringContent(json, Encoding.UTF8, "application/json");
                HttpClient client  = new HttpClient();
                var        result  = await client.PostAsync("https://dmrbolivia.com/api_distribuidora/tipoproductos/borrarTipoproducto.php", content);

                if (result.StatusCode == HttpStatusCode.OK)
                {
                    await DisplayAlert("ELIMINADO", "Se elimino correctamente", "OK");

                    await Navigation.PopAsync();
                }
                else
                {
                    await DisplayAlert("ERROR", result.StatusCode.ToString(), "OK");

                    await Navigation.PopAsync();
                }
            }
            catch (Exception err)
            {
                await DisplayAlert("ERROR", err.ToString(), "OK");
            }
        }
Exemplo n.º 5
0
        private void CmdBuscar_Click(object sender, EventArgs e)
        {
            // No se valida porque si no hay nada deberia devolver toda la grilla de nuevo
            Tipo_producto tipoProducto = new Tipo_producto();
            DataTable     dt           = tipoProducto.consultarTipo_producto(txtBuscar.Text);

            cargarTipo_Producto(dt);
        }
Exemplo n.º 6
0
 private void txtBuscar_KeyPress(Object sender, KeyPressEventArgs e)
 {
     if ((int)e.KeyChar == (int)Keys.Enter)
     {
         // No se valida porque si no hay nada deberia devolver toda la grilla de nuevo
         Tipo_producto tipoProducto = new Tipo_producto();
         DataTable     dt           = tipoProducto.consultarTipo_producto(txtBuscar.Text);
         cargarTipo_Producto(dt);
     }
 }
Exemplo n.º 7
0
        private void fillProductTypes()
        {
            Tipo_producto tipo          = new Tipo_producto();
            DataTable     tiposProducto = tipo.buscarTodos();

            this.cmbTipoProducto.Text          = "Seleccione";
            this.cmbTipoProducto.DataSource    = tiposProducto;
            this.cmbTipoProducto.DisplayMember = "descripcion";
            this.cmbTipoProducto.ValueMember   = "id_tipo_producto";
        }
Exemplo n.º 8
0
        private void CmdGuardar_Click(object sender, EventArgs e)
        {
            // Validaciones
            if (this.txtDescripcion.Text == "")
            {
                MessageBox.Show("La descripcion no puede estar vacía");
                this.txtDescripcion.Focus();
                return;
            }

            if (this.txtDescripcion.Text.Length > MAX_CHAR_VARCHAR)
            {
                MessageBox.Show("La descripcion es demasiado larga");
                this.txtDescripcion.Focus();
                return;
            }

            // Creamos el tipo de producto
            Tipo_producto tipoProducto = new Tipo_producto();

            tipoProducto.descripcion = this.txtDescripcion.Text;

            // Validar que otro tipo de producto no tenga el mismo dni


            if (lb_subtitle.Text == "Editar Tipo Producto")
            {
                int id = (Int32.TryParse(this.txtCodigoTipoProducto.Text, out id) ? id : 0);
                if (id == 0)
                {
                    MessageBox.Show("Hubo un error al intentar borrar el Tipo producto. Causa: No se pudo determinar que Tipo de producto es");
                    return;
                }
                tipoProducto.id_tipo_producto = id;
                tipoProducto.modificarTipo_producto();

                MessageBox.Show("Tipo Producto editado exitosamente");
            }
            else if (lb_subtitle.Text == "Crear Tipo Producto")
            {
                tipoProducto.agregarTipo_producto();

                MessageBox.Show("Tipo Producto creado exitosamente");
            }
            else
            {
                MessageBox.Show("Error inesperado (Codigo 404:Not Found)");
            }

            showMain();
        }
        public async Task <Response <Tipo_producto> > CreateAsync(Tipo_producto modelo)
        {
            var response = new Response <Tipo_producto>();

            response.IsSuccess = false;
            try
            {
                Tipo_producto TProducto = await db.Tipo_Productos.FirstOrDefaultAsync(tp => tp.ID_Tipo_Producto == modelo.ID_Tipo_Producto);

                Estado estado = await db.Estados.FirstOrDefaultAsync(e => e.ID_Estado == modelo.Estado.ID_Estado);

                modelo.Estado = estado;
                if (modelo == null)
                {
                    response.Message = "Debe proveer la información solicitada...";
                    return(response);
                }

                if (await db.Tipo_Productos.AsNoTracking().AnyAsync(tp => tp.ID_Tipo_Producto == modelo.ID_Tipo_Producto))
                {
                    response.Message = "Error el identificador ya existe...";
                    return(response);
                }

                if (await db.Tipo_Productos.AsNoTracking().AnyAsync(tp => tp.N_Tipo_Producto.ToLower() == modelo.N_Tipo_Producto.ToLower()))
                {
                    response.Message = "Error el registro ya existe...";
                    return(response);
                }
                //

                db.Add(modelo);

                await db.SaveChangesAsync();



                //
                response.IsSuccess = true;
                response.Result    = modelo;
            }
            catch (Exception ex)
            {
                response.Message = ex.Message;
            }
            //
            return(response);
        }
Exemplo n.º 10
0
        private async void BtnEditarTP_Clicked(object sender, EventArgs e)
        {
            if (CrossConnectivity.Current.IsConnected)
            {
                if (!string.IsNullOrWhiteSpace(nombreTpEntry.Text) || (!string.IsNullOrEmpty(nombreTpEntry.Text)))
                {
                    try
                    {
                        Tipo_producto tipo_Producto = new Tipo_producto()
                        {
                            id_tipoproducto      = Id_TipoProducto,
                            nombre_tipo_producto = nombreTpEntry.Text
                        };

                        var        json    = JsonConvert.SerializeObject(tipo_Producto);
                        var        content = new StringContent(json, Encoding.UTF8, "application/json");
                        HttpClient client  = new HttpClient();
                        var        result  = await client.PostAsync("https://dmrbolivia.com/api_distribuidora/tipoproductos/editarTipoproducto.php", content);

                        if (result.StatusCode == HttpStatusCode.OK)
                        {
                            await DisplayAlert("EDITADO", "Se edito correctamente", "OK");

                            await Shell.Current.Navigation.PopAsync();
                        }
                        else
                        {
                            await DisplayAlert("Error", "Algo salio mal, intentelo de nuevo", "OK");

                            await Shell.Current.Navigation.PopAsync();
                        }
                    }
                    catch (Exception err)
                    {
                        await DisplayAlert("Error", "Algo salio mal, intentelo de nuevo", "OK");
                    }
                }
                else
                {
                    await DisplayAlert("Campo vacio", "El campo de Nombre esta vacio", "Ok");
                }
            }
            else
            {
                await DisplayAlert("Error", "Necesitas estar conectado a internet", "OK");
            }
        }
Exemplo n.º 11
0
        private void btnHabDeshabTipoProducto_Click(object sender, EventArgs e)
        {
            currentRowIndexTiposProducto = tblTiposProducto.CurrentRow.Index;
            if (tblTiposProducto.CurrentRow != null && tblTiposProducto.CurrentRow.Index < tblTiposProducto.Rows.Count - 1)
            {
                using (MySqlConnection connection = new MySqlConnection(conStr))
                {
                    connection.Open();
                    MySqlTransaction transaction = connection.BeginTransaction();

                    try
                    {
                        using (var db = new bdContext(connection, false))
                        {
                            db.Database.UseTransaction(transaction);
                            //var item = db.Tipos_producto.Find(int.Parse(tblTiposProducto.CurrentRow.Cells[0].Value.ToString()));
                            var obj = new Tipo_producto();
                            if (bool.Parse(tblTiposProducto.CurrentRow.Cells[2].Value.ToString()) == true)
                            {
                                obj.cod_tipo_producto = int.Parse(tblTiposProducto.CurrentRow.Cells[0].Value.ToString());
                                obj.nombre            = tblTiposProducto.CurrentRow.Cells[1].Value.ToString();
                                obj.habilitado        = false;
                            }
                            else
                            {
                                obj.cod_tipo_producto = int.Parse(tblTiposProducto.CurrentRow.Cells[0].Value.ToString());
                                obj.nombre            = tblTiposProducto.CurrentRow.Cells[1].Value.ToString();
                                obj.habilitado        = true;
                            }

                            db.Entry(obj).State = System.Data.Entity.EntityState.Modified;
                            db.SaveChanges();
                        }
                        transaction.Commit();
                        recargarTiposProductos();
                        tblTiposProducto.CurrentCell = tblTiposProducto.Rows[currentRowIndexTiposProducto].Cells[1];
                    }
                    catch (Exception)
                    {
                        transaction.Rollback();
                        MessageBox.Show("Fallo al deshabilitar el registro. Intente de nuevo.", "Info", MessageBoxButtons.OK, MessageBoxIcon.Information);
                        recargarTiposProductos();
                        tblTiposProducto.CurrentCell = tblTiposProducto.Rows[currentRowIndexTiposProducto].Cells[1];
                    }
                }
            }
        }
        public async Task <Response <Tipo_producto> > UpdateAsync(Tipo_producto modelo)
        {
            var response = new Response <Tipo_producto>();

            response.IsSuccess = false;
            try
            {
                Tipo_producto TProducto = await db.Tipo_Productos.FirstOrDefaultAsync(tp => tp.ID_Tipo_Producto == modelo.ID_Tipo_Producto);

                Estado estado = await db.Estados.FirstOrDefaultAsync(e => e.ID_Estado == modelo.Estado.ID_Estado);

                modelo.Estado = estado;
                if (TProducto == null)
                {
                    response.Message = "Debe proveer la información solicitada...";
                    return(response);
                }

                if (await db.Tipo_Productos.AsNoTracking().AnyAsync(tp => tp.N_Tipo_Producto.ToLower() == modelo.N_Tipo_Producto.ToLower() && tp.ID_Tipo_Producto != modelo.ID_Tipo_Producto))
                {
                    response.Message = "Error la descripcón ya existe...";
                    return(response);
                }

                //Asignación de nuevos atributos
                TProducto.N_Tipo_Producto = modelo.N_Tipo_Producto;
                TProducto.Estado          = estado;

                //Referenciación a tablas anexas
                db.Tipo_Productos.Update(TProducto);
                await db.SaveChangesAsync();

                db.Entry(TProducto).State        = EntityState.Detached;
                db.Entry(TProducto.Estado).State = EntityState.Detached;

                //
                response.IsSuccess = true;
                response.Result    = TProducto;
            }
            catch (Exception ex)
            {
                response.Message = ex.Message;
            }
            //
            return(response);
        }
Exemplo n.º 13
0
        private void btnGuardarEditarTipoProducto_Click(object sender, EventArgs e)
        {
            if (txtNombreTipoProducto.Text.Replace(" ", "").Length != 0)
            {
                using (MySqlConnection conexion = new MySqlConnection(conStr))
                {
                    conexion.Open();
                    MySqlTransaction transaccion = conexion.BeginTransaction();

                    try
                    {
                        using (var bd = new bdContext(conexion, false))
                        {
                            bd.Database.UseTransaction(transaccion);
                            var item = new Tipo_producto()
                            {
                                cod_tipo_producto = cod_tipo_prod,
                                nombre            = txtNombreTipoProducto.Text,
                                habilitado        = chkTipoHabilitado.Checked
                            };
                            bd.Entry(item).State = System.Data.Entity.EntityState.Modified;
                            bd.SaveChanges();
                        }

                        transaccion.Commit();

                        //MessageBox.Show("Los cambios se guardaron exitosamente!", "Info", MessageBoxButtons.OK, MessageBoxIcon.Information);
                        this.Close();
                    }
                    catch (Exception)
                    {
                        transaccion.Rollback();
                        MessageBox.Show("Fallo al guardar los datos. Intente de nuevo.", "Info", MessageBoxButtons.OK, MessageBoxIcon.Information);
                        this.Close();
                        //throw;
                    }
                }
            }
            else
            {
                MessageBox.Show("El nombre de tipo no puede estar vacio.", "Info", MessageBoxButtons.OK, MessageBoxIcon.Information);
            }
        }
Exemplo n.º 14
0
        private void CmdBorrar_Click(object sender, EventArgs e)
        {
            Tipo_producto tipoProducto = new Tipo_producto();
            int           id           = (Int32.TryParse(this.txtCodigoTipoProducto.Text, out id) ? id : 0);

            if (id == 0)
            {
                MessageBox.Show("Hubo un error al intentar borrar el Tipo producto. Causa: No se pudo determinar que Tipo de producto es");
                return;
            }

            try
            {
                tipoProducto.borrarTipo_producto(id);
            } catch (Exception)
            {
                MessageBox.Show("No se pudo eliminar el tipo de producto debido a que hay productos vinculados al mismo");
                return;
            }

            MessageBox.Show("Tipo producto eliminado exitosamente");
            showMain();
        }
Exemplo n.º 15
0
        public async Task <Response <Data.Entities.Producto> > CreateAsync(Data.Entities.Producto modelo)
        {
            var response = new Response <Data.Entities.Producto>();

            response.IsSuccess = false;
            try
            {
                Estado          estado         = db.Estados.Find(modelo.Estado.ID_Estado);
                TipoDescuento   tipo_Descuento = db.Tipo_Descuentos.Find(modelo.TipoDescuento.ID_Tipo_Descuento);
                Unidad          unidad         = db.Unidades.Find(modelo.Unidad.ID_Unidad);
                Marca           marca          = db.Marca.Find(modelo.Marca.ID_Marca);
                Familia         familia        = db.Familias.Find(modelo.Familia.ID_Familia);
                Subfamilia      subfamilia     = db.Subfamilia.Find(modelo.SubFamilia.ID_Subfamilia);
                Tipo_producto   tipoProducto   = db.Tipo_Productos.Find(modelo.TipoProducto.ID_Tipo_Producto);
                Tipo_inventario tipoInventario = db.Tipo_Inventario.Find(modelo.TipoInventario.ID_Tipo_Inventario);
                Tipo_material   tipoMaterial   = db.Tipo_Material.Find(modelo.TipoMaterial.ID_Tipo_Material);
                Data.Entities.ClienteProveedor clienteProveedor = db.ClienteProveedors.Find(modelo.ClienteProveedor.ID_Cliente_Proveedor);

                modelo.Estado           = estado;
                modelo.TipoDescuento    = tipo_Descuento;
                modelo.Unidad           = unidad;
                modelo.Marca            = marca;
                modelo.Familia          = familia;
                modelo.SubFamilia       = subfamilia;
                modelo.TipoProducto     = tipoProducto;
                modelo.TipoInventario   = tipoInventario;
                modelo.TipoMaterial     = tipoMaterial;
                modelo.ClienteProveedor = clienteProveedor;

                if (modelo == null)
                {
                    response.Message = "Se debe ingresar la información";
                    return(response);
                }

                if (tipo_Descuento == null && tipoInventario == null && tipoMaterial == null && tipoProducto == null && marca == null &&
                    unidad == null && familia == null && subfamilia == null && clienteProveedor == null && estado == null)
                {
                    response.Message = "Debe asignar un estado";
                    return(response);
                }

                if (tipo_Descuento == null)
                {
                    response.Message = "Debe asignar un tipo de descuento";
                    return(response);
                }

                //if (tipoInventario == null)
                //{
                //    response.Message = "Debe asignar un tipo de inventario válido";
                //    return response;
                //}

                if (tipoMaterial == null)
                {
                    response.Message = "Debe asignar un tipo de material";
                    return(response);
                }

                if (tipoProducto == null)
                {
                    response.Message = "Debe asignar un tipo de producto";
                    return(response);
                }

                if (marca == null)
                {
                    response.Message = "Debe asignar una marca válida";
                    return(response);
                }

                if (unidad == null)
                {
                    response.Message = "Debe asignar una unidad";
                    return(response);
                }

                if (familia == null)
                {
                    response.Message = "Debe asignar una familia de productos";
                    return(response);
                }

                if (subfamilia == null)
                {
                    response.Message = "Debe asignar una subfamilia correspondiente";
                    return(response);
                }

                if (clienteProveedor == null)
                {
                    response.Message = "Debe asignar un cliente o proveedor";
                    return(response);
                }

                if (estado == null)
                {
                    response.Message = "Debe asignar un estado";
                    return(response);
                }

                if (await db.Productos.AsNoTracking().AnyAsync(p => p.ID_Producto == modelo.ID_Producto))
                {
                    response.Message = "Error el identificador ya existe...";
                    return(response);
                }

                //if (await db.Productos.AsNoTracking().AnyAsync(p => p.N_Producto.ToLower() == modelo.N_Producto.ToLower()))
                //{
                //    response.Message = "Error el registro ya existe...";
                //    return response;
                //}

                db.Add(modelo);
                db.SaveChanges();
                //
                response.IsSuccess = true;
                response.Result    = modelo;
            }
            catch (Exception ex)
            {
                response.Message = ex.Message;
            }
            //
            return(response);
        }
Exemplo n.º 16
0
        public Task <Response <Data.Entities.Producto> > UpdateAsync(Data.Entities.Producto modelo)
        {
            var response = new Response <Data.Entities.Producto>();

            response.IsSuccess = false;
            try
            {
                Data.Entities.Producto producto = db.Productos.Find(modelo.ID_Producto);
                Estado        estado            = db.Estados.Find(modelo.Estado.ID_Estado);
                TipoDescuento tipo_Descuento    = db.Tipo_Descuentos.Find(modelo.TipoDescuento.ID_Tipo_Descuento);
                Unidad        unidad            = db.Unidades.Find(modelo.Unidad.ID_Unidad);
                Marca         marca             = db.Marca.Find(modelo.Marca.ID_Marca);
                Familia       familia           = db.Familias.Find(modelo.Familia.ID_Familia);
                Subfamilia    subfamilia        = db.Subfamilia.Find(modelo.SubFamilia.ID_Subfamilia);
                Tipo_producto tipoProducto      = db.Tipo_Productos.Find(modelo.TipoProducto.ID_Tipo_Producto);
                //TipoInventario tipoInventario = db.Tipo_Inventario.Find(modelo.Tipo_inventario.ID_Tipo_Inventario);
                Tipo_material tipoMaterial = db.Tipo_Material.Find(modelo.TipoMaterial.ID_Tipo_Material);
                Data.Entities.ClienteProveedor clienteProveedor = db.ClienteProveedors.Find(modelo.ClienteProveedor.ID_Cliente_Proveedor);

                modelo.Estado        = estado;
                modelo.TipoDescuento = tipo_Descuento;
                modelo.Unidad        = unidad;
                modelo.Marca         = marca;
                modelo.Familia       = familia;
                modelo.SubFamilia    = subfamilia;
                modelo.TipoProducto  = tipoProducto;
                //modelo.Tipo_inventario = tipoInventario;
                modelo.TipoMaterial     = tipoMaterial;
                modelo.ClienteProveedor = clienteProveedor;


                if (producto == null)
                {
                    response.Message = "Debe proveer la información solicitada...";
                    return(Task.FromResult(response));
                }

                if (tipo_Descuento == null && tipoMaterial == null && tipoProducto == null && marca == null &&
                    unidad == null && familia == null && subfamilia == null && clienteProveedor == null && estado == null)
                {
                    response.Message = "Debe asignar un estado";
                    return(Task.FromResult(response));
                }

                if (tipo_Descuento == null)
                {
                    response.Message = "Debe asignar un tipo de descuento";
                    return(Task.FromResult(response));
                }

                //if (tipoInventario == null)
                //{
                //    response.Message = "Debe asignar un tipo de inventario válido";
                //    return response;
                //}

                if (tipoMaterial == null)
                {
                    response.Message = "Debe asignar un tipo de material";
                    return(Task.FromResult(response));
                }

                if (tipoProducto == null)
                {
                    response.Message = "Debe asignar un tipo de producto";
                    return(Task.FromResult(response));
                }

                if (marca == null)
                {
                    response.Message = "Debe asignar una marca válida";
                    return(Task.FromResult(response));
                }

                if (unidad == null)
                {
                    response.Message = "Debe asignar una unidad";
                    return(Task.FromResult(response));
                }

                if (familia == null)
                {
                    response.Message = "Debe asignar una familia de productos";
                    return(Task.FromResult(response));
                }

                if (subfamilia == null)
                {
                    response.Message = "Debe asignar una subfamilia correspondiente";
                    return(Task.FromResult(response));
                }

                if (clienteProveedor == null)
                {
                    response.Message = "Debe asignar un cliente o proveedor";
                    return(Task.FromResult(response));
                }

                if (estado == null)
                {
                    response.Message = "Debe asignar un estado";
                    return(Task.FromResult(response));
                }

                //if (await db.Productos.AsNoTracking().AnyAsync(p => p.N_Producto.ToLower() == modelo.N_Producto.ToLower()))
                //{
                //    response.Message = "Error el registro ya existe...";
                //    return response;
                //}

                //Asignación de nuevos atributos



                producto.N_Producto       = modelo.N_Producto;
                producto.Descripcion      = modelo.Descripcion;
                producto.Observaciones    = modelo.Observaciones;
                producto.Precio_Venta     = modelo.Precio_Venta;
                producto.Precio_Web       = modelo.Precio_Web;
                producto.Valor_Compra     = modelo.Valor_Compra;
                producto.Valor_Costo      = modelo.Valor_Costo;
                producto.Valor_Flete      = modelo.Valor_Flete;
                producto.Valor_Margen     = modelo.Valor_Margen;
                producto.Valor_Descuento  = modelo.Valor_Descuento;
                producto.Codigo_Barra     = modelo.Codigo_Barra;
                producto.Codigo_Interno   = modelo.Codigo_Interno;
                producto.Codigo_Parte     = modelo.Codigo_Parte;
                producto.Codigo_Proveedor = modelo.Codigo_Proveedor;
                producto.TipoDescuento    = tipo_Descuento;
                //producto.Tipo_inventario = tipoInventario;
                producto.TipoMaterial     = tipoMaterial;
                producto.TipoProducto     = tipoProducto;
                producto.Unidad           = unidad;
                producto.Marca            = marca;
                producto.Familia          = familia;
                producto.SubFamilia       = subfamilia;
                producto.ClienteProveedor = clienteProveedor;
                producto.Estado           = estado;

                //Referenciación a tablas anexas.
                db.Productos.Update(producto);
                db.SaveChanges();
                db.Entry(producto).State = EntityState.Detached;
                db.Entry(producto.TipoProducto).State  = EntityState.Detached;
                db.Entry(producto.TipoDescuento).State = EntityState.Detached;
                //db.Entry(producto.Tipo_inventario).State = EntityState.Detached;
                db.Entry(producto.TipoMaterial).State     = EntityState.Detached;
                db.Entry(producto.Unidad).State           = EntityState.Detached;
                db.Entry(producto.Marca).State            = EntityState.Detached;
                db.Entry(producto.Familia).State          = EntityState.Detached;
                db.Entry(producto.SubFamilia).State       = EntityState.Detached;
                db.Entry(producto.ClienteProveedor).State = EntityState.Detached;
                db.Entry(producto.Estado).State           = EntityState.Detached;

                //
                response.IsSuccess = true;
                response.Result    = producto;
            }
            catch (Exception ex)
            {
                response.Message = ex.Message;
            }
            //
            return(Task.FromResult(response));
        }