Example #1
0
 public gsItem_BuscarResult Item_Buscar(int idEmpresa, int codigoUsuario, string idProducto, string idCliente, DateTime?fecha,
                                        decimal cantidad, int?idTipoEnlaceContable, decimal?idDireccionOrigen, decimal?idDireccionDestino, decimal idAlmacen,
                                        ref decimal?StockDisponible)
 {
     using (dmIntranetDataContext dci = new dmIntranetDataContext(ConfigurationManager.ConnectionStrings["genesys"].ConnectionString))
     {
         gsItem_BuscarResult   objItem = new gsItem_BuscarResult();
         List <VBG00939Result> objStock;
         try
         {
             dmGenesysDataContext dcg = new dmGenesysDataContext(string.Format(ConfigurationManager.ConnectionStrings[dci.Empresa.SingleOrDefault(x => x.idEmpresa == idEmpresa).baseDatos].ConnectionString, "usrGEN" + (10000 + codigoUsuario).ToString().Substring(1, 4)));
             objItem  = dcg.gsItem_Buscar(idProducto, idCliente, fecha, cantidad, idTipoEnlaceContable, idDireccionOrigen, idDireccionDestino).Single();
             objStock = dcg.VBG00939(null, objItem.Item_ID, null, null, null, null, null, null, null, null, null, null, null, null, null).ToList().FindAll(x => x.ID_Almacen == idAlmacen);
             if (objStock.Count == 0)
             {
                 StockDisponible = 0;
             }
             else
             {
                 StockDisponible = objStock[0].StockDisponible;
             }
             return(objItem);
         }
         catch (Exception ex)
         {
             dci.Excepcion_Registrar(ex.Message, ex.TargetSite.Name);
             dci.SubmitChanges();
             throw new ArgumentException("Error al momento de consultar los items en la base de datos.");
         }
     }
 }
        private void Item_Buscar(string idItem, string idCliente, decimal idAlmacen, bool nuevo)
        {
            decimal?stockDisponible = null;

            try
            {
                ItemWCFClient       objItemWCF        = new ItemWCFClient();
                gsItem_BuscarResult objProducto       = new gsItem_BuscarResult();
                gsItem_BuscarResult objProductoActual = new gsItem_BuscarResult();

                if (nuevo)
                {
                    objProducto = objItemWCF.Item_Buscar(((Usuario_LoginResult)Session["Usuario"]).idEmpresa,
                                                         ((Usuario_LoginResult)Session["Usuario"]).codigoUsuario, idItem, idCliente, DateTime.Now.Date, 0, null, null, null,
                                                         idAlmacen, ref stockDisponible);
                    PrecioInicial.Text = objProducto.Precio.ToString();
                }
                else
                {
                    objProducto = ((List <gsItem_BuscarResult>)Session["lstProductos"]).Find(x => x.Item_ID.ToString() == idItem);
                    //((List<gsItem_BuscarResult>)Session["lstProductos"]).Remove(objProducto);

                    objProductoActual = objItemWCF.Item_Buscar(((Usuario_LoginResult)Session["Usuario"]).idEmpresa,
                                                               ((Usuario_LoginResult)Session["Usuario"]).codigoUsuario, objProducto.Codigo, idCliente, DateTime.Now.Date, 0, null, null, null,
                                                               idAlmacen, ref stockDisponible);
                    PrecioInicial.Text = objProductoActual.Precio.ToString();
                }

                txtCodigo.Text       = objProducto.Codigo;
                txtNombre.Text       = objProducto.Item;
                txtKardex.Text       = objProducto.Item_ID.ToString();
                txtPrecio.Text       = objProducto.Precio.ToString();
                idMoneda.Text        = objProducto.ID_Moneda.ToString();
                lblMonedaPrecio.Text = objProducto.Signo;
                txtFactor.Text       = objProducto.FactorUnidadInv.ToString();
                lblUnidadFactor.Text = objProducto.ID_UnidadInv;
                txtStock.Text        = stockDisponible.ToString();
                //txtStock.Text = objProducto.Stock.ToString();
                lblUnidadStock.Text    = objProducto.UnidadPresentacion;
                lblUnidadCantidad.Text = objProducto.UnidadPresentacion;
                lblMonedaImporte.Text  = objProducto.Signo;
                txtImporte.Text        = objProducto.Importe.ToString();
                txtCantidad.Text       = objProducto.Cantidad.ToString();
                txtDescuento.Text      = objProducto.DctoMax.ToString();
                DescuentoInicial.Text  = objProducto.DctoMax.ToString();
                txtObservacion.Text    = objProducto.Observacion;

                ViewState["objItem"] = JsonHelper.JsonSerializer(objProducto);
                if (stockDisponible == 0)
                {
                    throw new ArgumentException("El producto no se encuentra disponible en el almacen");
                }
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
        protected void btnGuardar_Click(object sender, EventArgs e)
        {
            if (Session["Usuario"] == null)
            {
                ScriptManager.RegisterStartupScript(Page, this.GetType(), "mykey", "CancelEdit();", true);
            }

            if (!ConnectionHelpers.CheckForInternetConnection())
            {
                throw new ArgumentException("ERROR: Revisar su conexión a internet.");
            }

            gsItem_BuscarResult objItem;

            try
            {
                if (txtCantidad.Value <= 0)
                {
                    throw new ArgumentException("ERROR: La cantidad ingresada debe ser mayor a 0.");
                }

                if (!Convert.ToBoolean(Int32.Parse(Request.QueryString["nuevo"])))
                {
                    objItem = new gsItem_BuscarResult();
                    objItem = ((List <gsItem_BuscarResult>)Session["lstProductos"]).Find(x => x.Item_ID.ToString() == Request.QueryString["idItem"]);
                    ((List <gsItem_BuscarResult>)Session["lstProductos"]).Remove(objItem);
                }

                objItem                 = new gsItem_BuscarResult();
                objItem                 = JsonHelper.JsonDeserialize <gsItem_BuscarResult>((string)ViewState["objItem"]);
                objItem.Precio          = Math.Round(decimal.Parse(txtPrecio.Text), 4);
                objItem.Cantidad        = Int32.Parse(txtCantidad.Text);
                objItem.Importe         = Math.Round(objItem.Precio * Int32.Parse(txtCantidad.Text), 4);
                objItem.Observacion     = txtObservacion.Text;
                objItem.Descuento       = Math.Round(decimal.Parse(txtDescuento.Text), 2);
                objItem.FactorUnidadInv = Math.Round(decimal.Parse(txtFactor.Text), 2);
                objItem.Stock           = Math.Round(decimal.Parse(txtStock.Text), 0);;
                objItem.Estado          = 1;
                if (Session["lstProductos"] == null)
                {
                    List <gsItem_BuscarResult> lstProductos = new List <gsItem_BuscarResult>();
                    Session["lstProductos"] = lstProductos;
                }

                ((List <gsItem_BuscarResult>)Session["lstProductos"]).Add(objItem);

                Impuesto_Guardar(objItem.Codigo, Convert.ToBoolean(Int32.Parse(Request.QueryString["nuevo"])));

                ScriptManager.RegisterStartupScript(Page, this.GetType(), "mykey", "CloseAndRebind(" + objItem.Item_ID + ");", true);
            }
            catch (Exception ex)
            {
                lblMensaje.Text     = ex.Message;
                lblMensaje.CssClass = "mensajeError";
            }
        }
Example #4
0
        static List <gsOV_BuscarDetalleResult> OrdenVenta_ObtenerDetalle(gsOV_BuscarCabeceraResult objOrdenVentaCab_R,
                                                                         gsOV_BuscarDetalleResult[] objOrdenVentaDet, int idEmpresa, int codigoUsuario)
        {
            ImpuestoWCFClient objImpuestoWCF = new ImpuestoWCFClient();

            gsOV_BuscarImpuestoResult[]     lstImpuestos = null;
            List <gsOV_BuscarDetalleResult> lstPedidoDet;
            List <gsItem_BuscarResult>      lstProductos = new List <gsItem_BuscarResult>(); // = (List<gsItem_BuscarResult>)Session["lstProductos"];
            //List<gsItem_BuscarResult> lstProductosR = new List<gsItem_BuscarResult>();
            gsOV_BuscarDetalleResult objProducto;
            List <gsImpuesto_ListarPorItemResult> lstImpuestoItem = new List <gsImpuesto_ListarPorItemResult>();
            DateTime fecha;

            try
            {
                foreach (gsOV_BuscarDetalleResult objDetalle in objOrdenVentaDet)
                {
                    gsItem_BuscarResult objItem = new gsItem_BuscarResult();

                    objItem.Codigo           = objDetalle.ID_Item;
                    objItem.Cantidad         = Convert.ToInt32(objDetalle.Cantidad);
                    objItem.DctoMax          = objDetalle.DctoMax;
                    objItem.Descuento        = objDetalle.Dcto;
                    objItem.ID_Moneda        = objDetalle.ID_Moneda;
                    objItem.ID_UnidadControl = objDetalle.ID_UnidadDoc;
                    objItem.ID_UnidadInv     = objDetalle.ID_UnidadInv;
                    objItem.Importe          = objDetalle.Importe;
                    objItem.Item             = objDetalle.Item;
                    objItem.Item_ID          = objDetalle.Item_ID;
                    objItem.NombreMoneda     = objDetalle.NombreMoneda;
                    objItem.Observacion      = objDetalle.Observaciones;
                    objItem.Precio           = objDetalle.Precio;
                    objItem.PrecioInicial    = objDetalle.PrecioMinimo;
                    objItem.Signo            = objDetalle.Signo;
                    if (objOrdenVentaCab_R.Aprobacion1)
                    {
                        objItem.Stock = objDetalle.Stock + objDetalle.Cantidad;
                    }
                    else
                    {
                        objItem.Stock = objDetalle.Stock;
                    }
                    objItem.FactorUnidadInv    = objDetalle.FactorUnidadInv;
                    objItem.UnidadPresentacion = objDetalle.UnidadPresentacion;
                    objItem.ID_Amarre          = objDetalle.ID_Amarre;
                    objItem.Estado             = 1;
                    objItem.CostoUnitario      = objDetalle.CostoUnitario;
                    lstImpuestoItem.AddRange(objImpuestoWCF.Impuesto_ListarPorItem(idEmpresa, codigoUsuario, objDetalle.ID_Item, DateTime.Now));
                    //ViewState["fecha"] = objOrdenVentaCab.FechaOrden;
                    fecha = objOrdenVentaCab_R.FechaOrden;
                    lstProductos.Add(objItem);
                }

                //Session["lstProductos"] = lstProductos;
                //Session["lstImpuestos"] = lstImpuestoItem;


                lstPedidoDet = new List <gsOV_BuscarDetalleResult>();
                foreach (gsItem_BuscarResult producto in lstProductos)
                {
                    objProducto               = new gsOV_BuscarDetalleResult();
                    objProducto.ID_Amarre     = producto.ID_Amarre;
                    objProducto.TablaOrigen   = "OV";
                    objProducto.ID_Item       = producto.Codigo;
                    objProducto.ID_ItemPedido = null;
                    objProducto.Item_ID       = producto.Item_ID;
                    objProducto.Cantidad      = producto.Cantidad;
                    objProducto.Precio        = producto.Precio;
                    objProducto.Dcto          = producto.Descuento;
                    //objProducto.DctoValor = Math.Round(producto.Descuento * producto.Precio / 100, 2);
                    objProducto.DctoValor         = Math.Round(((producto.Descuento / 100)) * producto.Precio, 4);
                    objProducto.Importe           = producto.Importe;
                    objProducto.ID_ItemAnexo      = null;
                    objProducto.ID_CCosto         = null;
                    objProducto.ID_UnidadGestion  = null;
                    objProducto.ID_UnidadProyecto = null;
                    objProducto.ID_UnidadInv      = producto.ID_UnidadInv;
                    objProducto.FactorUnidadInv   = producto.FactorUnidadInv;
                    objProducto.CantidadUnidadInv = producto.Cantidad; // Consultar como se calcula realmente
                    objProducto.ID_UnidadDoc      = producto.ID_UnidadControl;
                    objProducto.CantidadUnidadDoc = producto.Cantidad; // Consultar como se calcula realmente
                    objProducto.Observaciones     = producto.Observacion;
                    objProducto.Estado            = (int)producto.Estado;
                    objProducto.Stock             = producto.Stock;

                    lstPedidoDet.Add(objProducto);
                }
                return(lstPedidoDet);
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
        private void Item_Buscar(string idItem, string idProveedor, decimal idAlmacen, bool nuevo, string stridMoneda)
        {
            decimal?stockDisponible = null;
            double? TC_Cambio       = null;
            decimal?precio          = null;
            decimal?TC = null;

            try
            {
                ItemWCFClient       objItemWCF        = new ItemWCFClient();
                gsItem_BuscarResult objProducto       = new gsItem_BuscarResult();
                gsItem_BuscarResult objProductoActual = new gsItem_BuscarResult();

                if (nuevo)
                {
                    objProducto = objItemWCF.Item_Buscar(((Usuario_LoginResult)Session["Usuario"]).idEmpresa,
                                                         ((Usuario_LoginResult)Session["Usuario"]).codigoUsuario, idItem, idProveedor, DateTime.Now.Date, 0, 1001, null, null,
                                                         idAlmacen, ref stockDisponible, ref TC_Cambio);
                    PrecioInicial.Text = objProducto.Precio.ToString();
                }
                else
                {
                    objProducto = ((List <gsItem_BuscarResult>)Session["lstProductos"]).Find(x => x.Item_ID.ToString() == idItem);

                    objProductoActual = objItemWCF.Item_Buscar(((Usuario_LoginResult)Session["Usuario"]).idEmpresa,
                                                               ((Usuario_LoginResult)Session["Usuario"]).codigoUsuario, objProducto.Codigo, idProveedor, DateTime.Now.Date,
                                                               0, 1001, null, null, idAlmacen, ref stockDisponible, ref TC_Cambio);
                    PrecioInicial.Text = objProductoActual.Precio.ToString();
                }

                idMoneda.Text         = objProducto.ID_Moneda.ToString();
                txtPrecio.Text        = objProducto.Precio.ToString();
                lblMonedaPrecio.Text  = objProducto.Signo;
                lblMonedaImporte.Text = objProducto.Signo;
                TC = Convert.ToDecimal(objProducto.TC.ToString());

                if (stridMoneda != idMoneda.Text)
                {
                    if (stridMoneda == "0")
                    {
                        idMoneda.Text         = "0";
                        precio                = Convert.ToDecimal(objProducto.Precio.ToString());
                        precio                = (precio / TC);
                        PrecioInicial.Text    = precio.ToString();
                        txtPrecio.Text        = precio.ToString();
                        lblMonedaPrecio.Text  = "US$";
                        lblMonedaImporte.Text = "US$";
                    }
                    else
                    {
                        idMoneda.Text         = "1";
                        precio                = Convert.ToDecimal(objProducto.Precio.ToString());
                        precio                = (precio * TC);
                        PrecioInicial.Text    = precio.ToString();
                        txtPrecio.Text        = precio.ToString();
                        lblMonedaImporte.Text = "S/.";
                    }
                }

                txtCodigo.Text         = objProducto.Codigo;
                txtNombre.Text         = objProducto.Item;
                txtKardex.Text         = objProducto.Item_ID.ToString();
                txtFactor.Text         = objProducto.FactorUnidadInv.ToString();
                lblUnidadFactor.Text   = objProducto.ID_UnidadInv;
                txtStock.Text          = objProducto.Stock.ToString(); //stockDisponible.ToString();
                lblUnidadStock.Text    = objProducto.UnidadPresentacion;
                lblUnidadCantidad.Text = objProducto.UnidadPresentacion;

                txtImporte.Text       = objProducto.Importe.ToString();
                txtCantidad.Text      = objProducto.Cantidad.ToString();
                txtDescuento.Text     = objProducto.DctoMax.ToString();
                DescuentoInicial.Text = objProducto.DctoMax.ToString();
                txtObservacion.Text   = objProducto.Observacion;

                txtTC.Text = objProducto.TC.ToString();

                if (objProducto.CostoUnitario == 0 || objProducto.CostoUnitario == null || objProducto.PrecioInicial == 0)
                {
                    txtRentabilidad.Value = 0;
                    hfCostoUnitario.Value = "0";
                }
                else
                {
                    txtRentabilidad.Value = (double)((objProducto.PrecioInicial - (decimal)objProducto.CostoUnitario) * 100 / objProducto.PrecioInicial);
                    hfCostoUnitario.Value = objProducto.CostoUnitario.ToString();
                }

                ViewState["objItem"] = JsonHelper.JsonSerializer(objProducto);
                if (stockDisponible == 0)
                {
                    throw new ArgumentException("El producto no se encuentra disponible en el almacen");
                }
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
        protected void btnAgregar_Click(object sender, EventArgs e)
        {
            int correlativo;

            correlativo         = Convert.ToInt32(txtCorrelativo.Text);
            correlativo         = correlativo + 1;
            txtCorrelativo.Text = correlativo.ToString();

            if (Session["Usuario"] == null)
            {
                ScriptManager.RegisterStartupScript(Page, this.GetType(), "mykey", "CancelEdit();", true);
            }

            List <gsItem_BuscarResult> lstProductosParcial = new List <gsItem_BuscarResult>();
            gsItem_BuscarResult        objItem;

            try
            {
                if (txtCantidadParcial.Value <= 0)
                {
                    throw new ArgumentException("La cantidad ingresada debe ser mayor a 0.");
                }

                if (txtPrecio.Value <= 0)
                {
                    throw new ArgumentException("El precio ingresado debe ser mayor a 0.");
                }

                if (!Convert.ToBoolean(Int32.Parse(Request.QueryString["nuevo"])))
                {
                    objItem = new gsItem_BuscarResult();
                    objItem = ((List <gsItem_BuscarResult>)Session["lstProductosParcial"]).Find(x => x.Item_ID.ToString() == Request.QueryString["idItem"]);
                    ((List <gsItem_BuscarResult>)Session["lstProductosParcial"]).Remove(objItem);
                }

                objItem             = new gsItem_BuscarResult();
                objItem             = JsonHelper.JsonDeserialize <gsItem_BuscarResult>((string)ViewState["objItem"]);
                objItem.Precio      = Math.Round(decimal.Parse(txtPrecio.Text), 2);
                objItem.Cantidad    = Int32.Parse(txtCantidadParcial.Text);
                objItem.Importe     = Math.Round(objItem.Precio * Int32.Parse(txtCantidadParcial.Text), 2);
                objItem.Observacion = txtObservacion.Text;

                objItem.Descuento       = 0;
                objItem.FactorUnidadInv = Math.Round(decimal.Parse(txtFactor.Text), 2);
                objItem.Stock           = Math.Round(decimal.Parse(txtStock.Text), 0);;
                objItem.Estado          = 1;
                objItem.CostoUnitario   = decimal.Parse(hfCostoUnitario.Value);

                objItem.idCCosto    = acbCCosto.Entries[0].Text.Split('-')[0];
                objItem.CCosto      = acbCCosto.Entries[0].Text.Split('-')[1];
                objItem.Fecha       = dpFechaParcial.SelectedDate.Value;
                objItem.correlativo = correlativo;



                if (Session["lstProductosParcial"] == null)
                {
                    Session["lstProductosParcial"] = lstProductosParcial;
                }
                else
                {
                    lstProductosParcial = ((List <gsItem_BuscarResult>)Session["lstProductosParcial"]);
                }

                lstProductosParcial.Add(objItem);
                Session["lstProductosParcial"] = lstProductosParcial;

                Impuesto_Guardar(objItem.Codigo, Convert.ToBoolean(Int32.Parse(Request.QueryString["nuevo"])));



                ScriptManager.RegisterStartupScript(Page, this.GetType(), "mykey", "CloseAndRebind(" + objItem.Item_ID + ");", true);
            }
            catch (Exception ex)
            {
                lblMensaje.Text     = ex.Message;
                lblMensaje.CssClass = "mensajeError";
            }
        }
        private void Item_Buscar(string idItem, string idCliente, decimal idAlmacen, bool nuevo, string stridMoneda)
        {
            decimal?stockDisponible = null;
            double? TC_Cambio       = null;
            decimal?precio          = null;
            decimal?TC = null;

            try
            {
                ItemWCFClient       objItemWCF        = new ItemWCFClient();
                gsItem_BuscarResult objProducto       = new gsItem_BuscarResult();
                gsItem_BuscarResult objProductoActual = new gsItem_BuscarResult();

                if (nuevo)
                {
                    objProducto = objItemWCF.Item_Buscar(((Usuario_LoginResult)Session["Usuario"]).idEmpresa,
                                                         ((Usuario_LoginResult)Session["Usuario"]).codigoUsuario, idItem, idCliente, DateTime.Now.Date, 0, null, null, null,
                                                         idAlmacen, ref stockDisponible, ref TC_Cambio);
                    precio             = Math.Round(Convert.ToDecimal(objProducto.Precio.ToString()), 2);
                    PrecioInicial.Text = precio.ToString();
                    TC = Convert.ToDecimal(objProducto.TC.ToString());
                }
                else
                {
                    objProducto = ((List <gsItem_BuscarResult>)Session["lstProductos"]).Find(x => x.Item_ID.ToString() == idItem && x.Estado == 1);

                    objProductoActual = objItemWCF.Item_Buscar(((Usuario_LoginResult)Session["Usuario"]).idEmpresa,
                                                               ((Usuario_LoginResult)Session["Usuario"]).codigoUsuario, objProducto.Codigo, idCliente, DateTime.Now.Date,
                                                               0, null, null, null, idAlmacen, ref stockDisponible, ref TC_Cambio);

                    precio             = Math.Round(Convert.ToDecimal(objProductoActual.Precio.ToString()), 2);
                    PrecioInicial.Text = precio.ToString();
                    TC = Convert.ToDecimal(objProductoActual.TC.ToString());
                }

                txtCodigo.Text = objProducto.Codigo;
                txtNombre.Text = objProducto.Item;
                txtKardex.Text = objProducto.Item_ID.ToString();


                idMoneda.Text = objProducto.ID_Moneda.ToString();
                if (stridMoneda != idMoneda.Text)
                {
                    if (stridMoneda == "0")
                    {
                        idMoneda.Text = "0";
                        precio        = Convert.ToDecimal(objProducto.Precio.ToString());
                        precio        = (precio / TC);
                        precio        = Math.Round(Convert.ToDecimal(precio.ToString()), 4);

                        PrecioInicial.Text = precio.ToString();
                        txtPrecio.Text     = precio.ToString();
                        objProducto.Precio = decimal.Parse(precio.ToString());

                        lblMonedaPrecio.Text  = "US$";
                        lblMonedaImporte.Text = "US$";
                        objProducto.ID_Moneda = 0;
                        objProducto.Signo     = "US$";
                    }
                    else
                    {
                        idMoneda.Text = "1";
                        precio        = Convert.ToDecimal(objProducto.Precio.ToString());
                        precio        = (precio * TC);
                        precio        = Math.Round(Convert.ToDecimal(precio.ToString()), 4);

                        PrecioInicial.Text = precio.ToString();
                        txtPrecio.Text     = precio.ToString();
                        objProducto.Precio = decimal.Parse(precio.ToString());

                        lblMonedaPrecio.Text  = "S/.";
                        lblMonedaImporte.Text = "S/.";
                        objProducto.ID_Moneda = 1;
                        objProducto.Signo     = "S/.";
                    }
                }
                else
                {
                    precio                = Math.Round(Convert.ToDecimal(objProducto.Precio.ToString()), 4);
                    txtPrecio.Text        = precio.ToString();
                    lblMonedaPrecio.Text  = objProducto.Signo;
                    lblMonedaImporte.Text = objProducto.Signo;

                    if (!nuevo)
                    {
                        //precio = Math.Round(Convert.ToDecimal(objProductoActual.Precio.ToString()), 2);

                        PrecioInicial.Text = objProductoActual.Precio.ToString();
                        idMoneda.Text      = objProductoActual.ID_Moneda.ToString();
                        TC = Convert.ToDecimal(objProductoActual.TC.ToString());

                        if (stridMoneda != idMoneda.Text)
                        {
                            if (stridMoneda == "0")
                            {
                                idMoneda.Text      = "0";
                                precio             = Convert.ToDecimal(objProductoActual.Precio.ToString());
                                precio             = (precio / TC);
                                precio             = Math.Round(Convert.ToDecimal(precio.ToString()), 4);
                                PrecioInicial.Text = precio.ToString();
                            }
                            else
                            {
                                idMoneda.Text      = "1";
                                precio             = Convert.ToDecimal(objProductoActual.Precio.ToString());
                                precio             = (precio * TC);
                                precio             = Math.Round(Convert.ToDecimal(precio.ToString()), 4);
                                PrecioInicial.Text = precio.ToString();
                            }
                        }
                    }
                }


                txtFactor.Text         = objProducto.FactorUnidadInv.ToString();
                lblUnidadFactor.Text   = objProducto.ID_UnidadInv;
                txtStock.Text          = stockDisponible.ToString();
                lblUnidadStock.Text    = objProducto.UnidadPresentacion;
                lblUnidadCantidad.Text = objProducto.UnidadPresentacion;

                txtImporte.Text  = objProducto.Importe.ToString();
                txtCantidad.Text = objProducto.Cantidad.ToString();

                txtDescuentoMax.Text   = objProducto.DctoMax.ToString();
                txtDescuentoFinal.Text = objProducto.Descuento.ToString();

                DescuentoFinal.Text   = objProducto.Descuento.ToString();
                DescuentoInicial.Text = objProducto.Descuento.ToString();
                DescuentoMaximo.Text  = objProducto.DctoMax.ToString();

                txtObservacion.Text = objProducto.Observacion;

                if (objProducto.CostoUnitario == 0 || objProducto.CostoUnitario == null || objProducto.PrecioInicial == 0)
                {
                    txtRentabilidad.Value = 0;
                    hfCostoUnitario.Value = "0";
                }
                else
                {
                    txtRentabilidad.Value = (double)((objProducto.PrecioInicial - (decimal)objProducto.CostoUnitario) * 100 / objProducto.PrecioInicial);
                    hfCostoUnitario.Value = objProducto.CostoUnitario.ToString();
                }

                ViewState["objItem"] = JsonHelper.JsonSerializer(objProducto);

                string Impuesto     = Session["Impuestos"].ToString();
                string ItemImpuesto = "";

                if (objProducto.TieneImpuesto > 0)
                {
                    ItemImpuesto = "IGV";
                }
                else
                {
                    ItemImpuesto = "SINIGV";
                }

                if (Impuesto != ItemImpuesto)
                {
                    if (Impuesto == "")
                    {
                        Session["Impuestos"] = ItemImpuesto;
                        if (stockDisponible <= 0)
                        {
                            lblMensaje.CssClass = "mensajeError";
                            throw new ArgumentException("El producto no se encuentra disponible en el almacen");
                        }
                    }
                    else
                    {
                        btnGuardar.Enabled = false;
                        if (ItemImpuesto == "IGV")
                        {
                            ScriptManager.RegisterStartupScript(Page, this.GetType(), "mykey", "Afecto();", true);
                            lblMensaje.CssClass = "mensajeError";
                            lblMensaje.Text     = "El producto es Afecto al IGV, por favor, registrarlo en otro pedido.";
                            throw new ArgumentException("El producto es Afecto al IGV, por favor, registrarlo en otro pedido.");
                        }
                        else
                        {
                            ScriptManager.RegisterStartupScript(Page, this.GetType(), "mykey", "Inafecto();", true);
                            lblMensaje.CssClass = "mensajeError";
                            lblMensaje.Text     = "El producto es Inafecto al IGV, por favor, registrarlo en otro pedido.";
                            throw new ArgumentException("El producto es Inafecto al IGV, por favor, registrarlo en otro pedido.");
                        }
                    }
                }
                else
                {
                    if (stockDisponible <= 0)
                    {
                        lblMensaje.CssClass = "mensajeError";
                        throw new ArgumentException("El producto no se encuentra disponible en el almacen");
                    }
                }
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }