protected void imbAgregarDetalle_Click(object sender, ImageClickEventArgs e) { lblAviso.Text = ""; int iIdProducto = MedDalProducto.idProducto; MedNeg.Usuarios.BlUsuarios oblUsuarios = new MedNeg.Usuarios.BlUsuarios(); MedDAL.DAL.usuarios oUsuario = new MedDAL.DAL.usuarios(); oUsuario = (MedDAL.DAL.usuarios)oblUsuarios.Buscar(int.Parse(Session["usuarioid"].ToString())); MedNeg.Productos.BlProductos oblProducto = new MedNeg.Productos.BlProductos(); List<MedDAL.DAL.productos_almacen> lstProductosAlmacen = new List<MedDAL.DAL.productos_almacen>(); lstProductosAlmacen.AddRange(oblProducto.ObtenerExistenciaProducto(iIdProducto, oUsuario.idAlmacen, ddlProductoLotes.SelectedValue, ddlProductoSeries.SelectedValue)); string sRutaArchivoConfig = Server.MapPath("~/Archivos/Configuracion.xml"); MedNeg.Configuracion.BlConfiguracion oblConfiguracion = new MedNeg.Configuracion.BlConfiguracion(); MedDAL.Configuracion.DALConfiguracion objConfiguracion = new MedDAL.Configuracion.DALConfiguracion(); objConfiguracion = (MedDAL.Configuracion.DALConfiguracion)oblConfiguracion.CargaDatos(sRutaArchivoConfig); decimal dCantidad = decimal.Parse(txbCantSurtida.Text); if (lstProductosAlmacen.Count != 0) { if ((lstProductosAlmacen[0].Cantidad >= dCantidad || (objConfiguracion.iVentasNegativas == 1 && lstProductosAlmacen[0].Cantidad < dCantidad)) && lstProductosAlmacen[0].FechaCaducidad.Value > DateTime.Today) { MedDAL.DAL.recetas_partida oRecetaPartida = new MedDAL.DAL.recetas_partida(); oRecetaPartida.idProducto = MedDalProducto.idProducto; oRecetaPartida.idLineaCredito = int.Parse(cmbLineasCredito.SelectedValue); oRecetaPartida.CantidadRecetada = decimal.Parse(txbCantRecetada.Text); oRecetaPartida.CantidaSurtida = decimal.Parse(txbCantSurtida.Text); oRecetaPartida.Precio = MedDalProducto.PrecioPublico; oRecetaPartida.Lote = ddlProductoLotes.SelectedValue; oRecetaPartida.NoSerie = ddlProductoSeries.SelectedValue; oRecetaPartida.PrimeraIntencion = rdbIntencionPrimera.Checked; oRecetaPartida.SegundaIntencion = rdbIntencionSegunda.Checked; MedNeg.Causes.BlCauses oBLCauses = new MedNeg.Causes.BlCauses(); MedDAL.DAL.causes_cie oCausesCie = oBLCauses.BuscarCie(txbClaveCie.Text); if (oCausesCie != null) { oRecetaPartida.Cause = true; oRecetaPartida.idCausesCie = oCausesCie.idCauseCie; oRecetaPartida.causes_cie = new MedDAL.DAL.causes_cie(); oRecetaPartida.causes_cie.Clave = oCausesCie.Clave; } else { oRecetaPartida.Cause = false; oRecetaPartida.idCausesCie = null; } //oRecetaPartida.Cause = rdbCauseSi.Checked; oRecetaPartida.Factura = false; oRecetaPartida.lineas_creditos = new MedDAL.DAL.lineas_creditos(); oRecetaPartida.lineas_creditos.Clave = cmbLineasCredito.SelectedItem.ToString(); oRecetaPartida.productos = new MedDAL.DAL.productos(); oRecetaPartida.productos.Nombre = txbProducto.Text; oRecetaPartida.productos.Clave1 = txbClave.Text; if (lstProductosAlmacen[0].FechaCaducidad.Value <= DateTime.Today) { ScriptManager.RegisterStartupScript(upnForm, upnForm.GetType(), "alertstock", "alertarCaducidad(3);", true); } else if (lstProductosAlmacen[0].FechaCaducidad.Value <= DateTime.Today.AddDays(objConfiguracion.iCaducidad)) { ScriptManager.RegisterStartupScript(upnForm, upnForm.GetType(), "alertstock", "alertarCaducidad(2);", true); } //else if (lstProductosAlmacen[0].FechaCaducidad.Value <= DateTime.Today) //{ //} /*Producto pTemp = new Producto(MedDalProducto, MedDalProducto.Clave1, MedDalProducto.Nombre, decimal.Parse(txbCantRecetada.Text), decimal.Parse(txbCantSurtida.Text), ddlProductoLotes.SelectedValue, ddlProductoSeries.SelectedValue, (decimal)0, //decimal.Parse(ddlPrecios.SelectedItem.Text), rdbIntencionPrimera.Checked ? 1 : 2, rdbCauseSi.Checked, blRecetas.buscarLineaCredito(idAlmacen, MedDalProducto.idProducto, ddlProductoSeries.SelectedValue, ddlProductoLotes.SelectedValue) );*/ if (estadoActual == 2) { ((List<MedDAL.DAL.recetas_partida>)Session["lstrecetaspartidaedicion"]).Add(oRecetaPartida); int iContador = ((List<MedDAL.DAL.recetas_partida>)Session["lstrecetaspartida"]).Count + 1 - ((List<MedDAL.DAL.recetas_partida>)Session["lstrecetaspartidaedicion"]).Count; int i = 0; foreach (GridViewRow oRow in dgvPartidaDetalle.Rows) { oRow.Cells[9].Controls.Clear(); i++; if (i == iContador) break; } } ((List<MedDAL.DAL.recetas_partida>)Session["lstrecetaspartida"]).Add(oRecetaPartida); dgvPartidaDetalle.DataBind(); //GT 14-10-2011 0578 Aqui es el lugar correcto donde se debe de limpiar el txbCantidadSurtida y no en los eventos text_changed de clave o producto por que la función inicializaGuiPartida va a borrar lo que el usuario capturo en el textbox de cantidad surtida, por eso se comenta esa linea en la funcion y se pone aqui inicializaGuiPartida(true, true); txbCantSurtida.Text = "0"; txbCantRecetada.Text = "0"; } else if (objConfiguracion.iVentasNegativas == 0 && lstProductosAlmacen[0].Cantidad < dCantidad) { ScriptManager.RegisterStartupScript(upnForm, upnForm.GetType(), "alertstock", "alertarStock(2);", true); } else if (lstProductosAlmacen[0].FechaCaducidad.Value <= DateTime.Today) { ScriptManager.RegisterStartupScript(upnForm, upnForm.GetType(), "alertstock", "alertarCaducidad(3);", true); } } }
protected void imbAgregarDetalle_Click(object sender, ImageClickEventArgs e) { lblAviso.Text = ""; //Evitar mandar valores nullos para las conversiones decimal dCantidad, dIeps, dImp1 = 0, dImp2 = 0, dIva, dPrecio, dTotal; bool bEsEnsamble; if (txbCant.Text.Equals("")) dCantidad = 0; else dCantidad = int.Parse(txbCant.Text); //Calcular el total dPrecio = decimal.Parse(cmbPrecios.SelectedValue); dTotal = dCantidad * dPrecio; //IEPS if (txbIeps.Text.Equals("")) dIeps = 0; else dIeps = dTotal * (decimal.Parse(txbIeps.Text) / 100); ////Imp1 //if (txbImp1.Text.Equals("")) // dImp1 = 0; //else // dImp1 = dTotal * (decimal.Parse(txbImp1.Text) / 100); /////Imp2 //if (txbImp2.Text.Equals("")) // dImp2 = 0; //else // dImp2 = dTotal * (decimal.Parse(txbImp2.Text) / 100); ///Iva if (txbIva.Text.Equals("")) dIva = 0; else dIva = dTotal * (decimal.Parse(txbIva.Text) / 100); //Agregar los impuestos al total dTotal += dIeps + dImp1 + dImp2 + dIva; //Recuperar el id del producto para ya tenerlo en la lista MedNeg.Productos.BlProductos oblProducto = new MedNeg.Productos.BlProductos(); int iIdProducto = oblProducto.RecuperarIdProducto(txbClave.Text); MedNeg.Usuarios.BlUsuarios oblUsuarios = new MedNeg.Usuarios.BlUsuarios(); MedDAL.DAL.usuarios oUsuario = new MedDAL.DAL.usuarios(); oUsuario = (MedDAL.DAL.usuarios)oblUsuarios.Buscar(int.Parse(Session["usuarioid"].ToString())); List<MedDAL.DAL.productos_almacen> lstProductosAlmacen = new List<MedDAL.DAL.productos_almacen>(); lstProductosAlmacen.AddRange(oblProducto.ObtenerExistenciaProducto(iIdProducto, oUsuario.idAlmacen)); string sRutaArchivoConfig = Server.MapPath("~/Archivos/Configuracion.xml"); MedNeg.Configuracion.BlConfiguracion oblConfiguracion = new MedNeg.Configuracion.BlConfiguracion(); MedDAL.Configuracion.DALConfiguracion objConfiguracion = new MedDAL.Configuracion.DALConfiguracion(); objConfiguracion = (MedDAL.Configuracion.DALConfiguracion)oblConfiguracion.CargaDatos(sRutaArchivoConfig); if (lstProductosAlmacen.Count != 0) { if (lstProductosAlmacen[0].Cantidad >= dCantidad || (objConfiguracion.iVentasNegativas == 1 && lstProductosAlmacen[0].Cantidad < dCantidad)) { if ((int)Session["sBolEsEnsamble"] == 1) bEsEnsamble = true; else bEsEnsamble = false; //Crear el objeto ya con sus parametros oblDetallePartida = new MedNeg.Facturas.BlDetallePartida( iIdProducto, txbClave.Text, txbProducto.Text, dCantidad, dIeps, //dImp1, //dImp2, dIva, dPrecio, txbObservaciones.Text, dTotal, txbProducto.Text, bEsEnsamble); //Agregar el objeto detalle partida al objeto lstDetallePartidaPedidos ((List<MedNeg.Facturas.BlDetallePartida>)Session["lstDetallePartidaPedidos"]).Add(oblDetallePartida); Session["sTotalFactura"] = Convert.ToDecimal(Session["sTotalFactura"]) + dTotal; lblTotal.Text = "TOTAL:$" + Session["sTotalFactura"].ToString(); dgvPartidaDetalle.DataBind(); LimpiarDatosDetalle(); txbClave.Focus(); } else if (objConfiguracion.iVentasNegativas == 0 && lstProductosAlmacen[0].Cantidad < dCantidad) { lblAviso.Text = "El producto que desea agregar no cuenta con suficientes existencias"; } } }
/// <summary> /// Registrar nuevo pedido /// </summary> private void Nuevo() { string sRutaArchivoConfig=Server.MapPath("~/Archivos/Configuracion.xml"); oRemision = new MedDAL.DAL.remisiones(); oblRemision = new MedNeg.Remisiones.BlRemisiones(); if (Session["sIdCliente"] != null) { oRemision.idCliente = (int)Session["sIdCliente"]; oRemision.Fecha = DateTime.Now; oRemision.Estatus = cmbEstatus.SelectedValue; //Validar Folio Repetido if (ValidaFolioRepetido()) { //Validar si se esta respetando el folio automatico y verificar si aun es el mismo o cambio su valor if (Session["iFolioAutomatico"].Equals(txbFolio.Text)) { oRemision.Folio = oblRemision.RecuperaFolioAutomatico(sRutaArchivoConfig).ToString(); } else { oRemision.Folio = txbFolio.Text; } if ((bool)Session["sEsDePedido"] == true) { oRemision.idPedido = (int)Session["sIdPedido"]; } if (oblRemision.NuevoRegistro(oRemision)) { //Datos de la bitacora string sDatosBitacora = string.Empty; sDatosBitacora += "Tipo:" + cmbTipoRemision.SelectedValue.ToString() + " "; sDatosBitacora += "Folio:" + txbFolio.Text + " "; sDatosBitacora += "Fecha:" + txbFecha.Text + " "; sDatosBitacora += "Estatus:" + cmbEstatus.SelectedItem.ToString() + " "; sDatosBitacora += "Cliente:" + txbCliente.Text + " "; // Registrar la partida de la remision oRemision = new MedDAL.DAL.remisiones(); oRemision = oblRemision.BuscarRemisionFolio(txbFolio.Text); int iIdRemision = oRemision.idRemision; bool bRegistroFallido = false; //Recorrer el objeto de sesion lstDetallePartida que contiene los datos de la partida foreach (MedNeg.Facturas.BlDetallePartida pedidoDetalle in (List<MedNeg.Facturas.BlDetallePartida>)Session["lstDetallePartida"]) { //0087 Saber si es un ensamble el que se esta registrando if (pedidoDetalle.bEsEnsamble == true) { AgregarDetalleEnsamble(pedidoDetalle, iIdRemision); } else { oblRemision = new MedNeg.Remisiones.BlRemisiones(); MedDAL.DAL.remisiones_partida oRemisionPartida = new MedDAL.DAL.remisiones_partida(); oRemisionPartida.idRemision = iIdRemision; oRemisionPartida.idProducto = pedidoDetalle.iIdProducto; oRemisionPartida.Cantidad = pedidoDetalle.dCantidad; oRemisionPartida.IEPS = pedidoDetalle.dIeps; oRemisionPartida.Iva = pedidoDetalle.dIva; oRemisionPartida.Precio = pedidoDetalle.dPrecio; oRemisionPartida.Observaciones = pedidoDetalle.sObservaciones; oRemisionPartida.Descripcion = pedidoDetalle.sDescripcion; //Registrar el detalle del pedido if (!oblRemision.NuevoDetallePartida(oRemisionPartida)) { bRegistroFallido = true; } else { sDatosBitacora += "Producto:" + pedidoDetalle.iIdProducto.ToString() + " "; sDatosBitacora += "Cant:" + pedidoDetalle.dCantidad.ToString() + " "; sDatosBitacora += "IEPS:" + pedidoDetalle.dIeps.ToString() + " "; sDatosBitacora += "Iva:" + pedidoDetalle.dIva.ToString() + " "; sDatosBitacora += "Precio:" + pedidoDetalle.dPrecio.ToString() + " "; sDatosBitacora += "Total:" + Convert.ToDecimal((pedidoDetalle.dCantidad * pedidoDetalle.dPrecio) + pedidoDetalle.dIeps + pedidoDetalle.dIva) + ", "; } } } if (!bRegistroFallido) { //Registrar datos de la remision en la bitacora //lblAviso.Text = "El usuario se ha registrado con éxito"; oBitacora = new MedDAL.DAL.bitacora(); oblBitacora = new MedNeg.Bitacora.BlBitacora(); oBitacora.FechaEntradaSrv = DateTime.Now; oBitacora.FechaEntradaCte = DateTime.Now;//Linea Temporal oBitacora.Modulo = "Remisiones"; oBitacora.Usuario = Session["usuario"].ToString(); oBitacora.Nombre = Session["nombre"].ToString(); oBitacora.Accion = "Nueva Remisión"; oBitacora.Descripcion = sDatosBitacora; if (!oblBitacora.NuevoRegistro(oBitacora)) { lblDatos.Text = "El evento no pudo ser registrado en la bitácora"; } //Actualizar el consecutivo en configuracion (la validacion de si esta activa o no la opcion se hace dentro de la misma funcion) oblRemision.ActualizarFolioRemision(sRutaArchivoConfig); Session["sIdCliente"] = null; if ((bool)Session["sEsDePedido"] == true) { //Actualizar el estatus del pedido en caso de que se haya hecho la remision a partir de un pedido MedDAL.DAL.pedidos oPedido = new MedDAL.DAL.pedidos(); MedNeg.Pedidos.BlPedidos oblPedido = new MedNeg.Pedidos.BlPedidos(); //Actualizar el estatus del pedido oPedido = oblPedido.BuscarPedido((int)Session["sIdPedido"]); oPedido.Estatus = "2"; if (!oblPedido.EditarRegistro(oPedido)) { lblDatos.Text = "No se pudo cambiar el estatus del pedido, contacte al administrador"; } } /******* Realizar la resta de las existencias ***********/ MedNeg.Productos.BlProductos oblProductos = new MedNeg.Productos.BlProductos(); MedNeg.Usuarios.BlUsuarios oblUsuario = new MedNeg.Usuarios.BlUsuarios(); MedDAL.DAL.usuarios oUsuario = new MedDAL.DAL.usuarios(); oUsuario = (MedDAL.DAL.usuarios)oblUsuario.Buscar(Session["usuario"].ToString()); MedNeg.Remisiones.BlRemisiones oblRemisiones; bool bModificarExistenciasError = false; bool bStockMin = false; //Recorrer el objeto de sesion lstDetallePartida que contiene los datos de la partida //Checar la existencia del producto despues de extraer la cantidad marcada en el detalle y alertar en caso necesario sobre stock bajo foreach (MedNeg.Facturas.BlDetallePartida oPedidoDetalle in (List<MedNeg.Facturas.BlDetallePartida>)Session["lstDetallePartida"]) { oblRemisiones = new MedNeg.Remisiones.BlRemisiones(); if (!oblRemisiones.ModificarExistenciaProducto(oUsuario.idAlmacen, oPedidoDetalle.iIdProducto, oPedidoDetalle.dCantidad, 1)) bModificarExistenciasError = true; else { //Si el proceso de extraer se da exitosamente, se revisa ahora las existencias de todos los lotes de ese almacen //Posteriormente se revisa si la existencia esta por igual o debajo del Stock Minimo requerido decimal dCantidad = 0; foreach (MedDAL.DAL.productos_almacen oProductoAlmacen in oblProductos.ObtenerExistenciaProducto(oPedidoDetalle.iIdProducto, oUsuario.idAlmacen)) { dCantidad += oProductoAlmacen.Cantidad; } MedDAL.DAL.productos_almacen_stocks oProductoAlmacenStocks = oblProductos.ObtenerProductoAlmacenStock(oUsuario.idAlmacen, oPedidoDetalle.iIdProducto); if (dCantidad <= oProductoAlmacenStocks.StockMin) { bStockMin = true; } } } if (bModificarExistenciasError == true) { lblDatos.Text = "No se pudo modificar la existencia de los productos, por favor contacte al administrador"; } if (bStockMin) { ScriptManager.RegisterStartupScript(pnlFormulario, pnlFormulario.GetType(), "alertstock", "alertarStock(1);", true); } /****** Termina resta de las existencias ***************************/ Session["sTotalFactura"] = 0; } else { //Eliminar la remisión, su partida e indicar al usuario que lo intente de nuevo, limpiar la cadena de bitacora Eliminar(iIdRemision); sDatosBitacora = ""; lblDatos.Text = "No se pudo registrar la remisión, por favor verifique los datos y vuelva a intentarlo"; } } else { //Fallo esl registro de la remisión lblDatos.Text = "No se pudo registrar la remisión, por favor verifique los datos y vuelva a intentarlo"; } } else //si es folio repetido { lblDatos.Text = "Folio Repetido, no se puede generar la remisión."; } } else { lblDatos.Text = "Por favor, elija a un Cliente"; } }
/// <summary> /// Editar /// </summary> private void Editar() { oRemision = new MedDAL.DAL.remisiones(); oblRemision = new MedNeg.Remisiones.BlRemisiones(); //oRemision.idRemision = int.Parse(dgvDatos.SelectedDataKey.Value.ToString()); oRemision = oblRemision.BuscarRemisionFolio(txbFolio.Text); oRemision.Estatus = cmbEstatus.SelectedValue.ToString(); oblRemision = new MedNeg.Remisiones.BlRemisiones(); if(oblRemision.EditarRegistro(oRemision)) { //Datos de la bitacora sDatosBitacora += "Tipo:" + cmbTipoRemision.SelectedValue.ToString() + " "; sDatosBitacora += "Folio:" + txbFolio.Text + " "; sDatosBitacora += "Fecha:" + txbFecha.Text + " "; sDatosBitacora += "Estatus:" + cmbEstatus.SelectedItem.ToString() + " "; sDatosBitacora += "Cliente:" + txbCliente.Text + " "; oblRemision = new MedNeg.Remisiones.BlRemisiones(); if (oblRemision.EliminarRemisionPartida(oRemision.idRemision)) { bool bRegistroFallido = false; //Recorrer el objeto de sesion lstDetallePartida que contiene los datos de la partida foreach (MedNeg.Facturas.BlDetallePartida pedidoDetalle in (List<MedNeg.Facturas.BlDetallePartida>)Session["lstDetallePartida"]) { //Saber si es un ensamble el que se esta registrando if (pedidoDetalle.bEsEnsamble == true) { AgregarDetalleEnsamble(pedidoDetalle, oRemision.idRemision); } else { oblRemision = new MedNeg.Remisiones.BlRemisiones(); MedDAL.DAL.remisiones_partida oRemisionPartida = new MedDAL.DAL.remisiones_partida(); oRemisionPartida.idRemision = oRemision.idRemision; oRemisionPartida.idProducto = pedidoDetalle.iIdProducto; oRemisionPartida.Cantidad = pedidoDetalle.dCantidad; oRemisionPartida.IEPS = pedidoDetalle.dIeps; oRemisionPartida.Iva = pedidoDetalle.dIva; oRemisionPartida.Precio = pedidoDetalle.dPrecio; //Registrar el detalle del pedido if (!oblRemision.NuevoDetallePartida(oRemisionPartida)) { bRegistroFallido = true; } else { sDatosBitacora += "Producto:" + pedidoDetalle.iIdProducto.ToString() + " "; sDatosBitacora += "Cant:" + pedidoDetalle.dCantidad.ToString() + " "; sDatosBitacora += "IEPS:" + pedidoDetalle.dIeps.ToString() + " "; sDatosBitacora += "Iva:" + pedidoDetalle.dIva.ToString() + " "; sDatosBitacora += "Precio:" + pedidoDetalle.dPrecio.ToString() + " "; sDatosBitacora += "Total:" + Convert.ToDecimal((pedidoDetalle.dCantidad * pedidoDetalle.dPrecio) + pedidoDetalle.dIeps + pedidoDetalle.dIva) + ", "; } } } /****** GT: Modificar las existencias de los productos nuevos ***************/ MedNeg.Usuarios.BlUsuarios oblUsuario = new MedNeg.Usuarios.BlUsuarios(); MedNeg.Productos.BlProductos oblProductos = new MedNeg.Productos.BlProductos(); MedDAL.DAL.usuarios oUsuario = new MedDAL.DAL.usuarios(); bool bModificarExistenciasError = false; bool bStockMin = false; oUsuario = (MedDAL.DAL.usuarios)oblUsuario.Buscar(Session["usuario"].ToString()); oblRemision = new MedNeg.Remisiones.BlRemisiones(); foreach (MedNeg.Facturas.BlDetallePartida remisionDetalleNuevos in (List<MedNeg.Facturas.BlDetallePartida>)Session["lstremisionespartidaedicion"]) { if (oblRemision.ModificarExistenciaProducto(oUsuario.idAlmacen, remisionDetalleNuevos.iIdProducto, remisionDetalleNuevos.dCantidad, 1)) { //Si el proceso de extraer se da exitosamente, se revisa ahora las existencias de todos los lotes de ese almacen //Posteriormente se revisa si la existencia esta por igual o debajo del Stock Minimo requerido decimal dCantidad = 0; foreach (MedDAL.DAL.productos_almacen oProductoAlmacen in oblProductos.ObtenerExistenciaProducto(remisionDetalleNuevos.iIdProducto, oUsuario.idAlmacen)) { dCantidad += oProductoAlmacen.Cantidad; } MedDAL.DAL.productos_almacen_stocks oProductoAlmacenStocks = oblProductos.ObtenerProductoAlmacenStock(oUsuario.idAlmacen, remisionDetalleNuevos.iIdProducto); if (dCantidad <= oProductoAlmacenStocks.StockMin) { bStockMin = true; } } else { bModificarExistenciasError = true; } } if (bModificarExistenciasError == true) { lblDatos.Text = "No se pudo modificar la existencia de los productos, por favor contacte al administrador"; } if (bStockMin) { ScriptManager.RegisterStartupScript(pnlFormulario, pnlFormulario.GetType(), "alertstock", "alertarStock(1);", true); } /****** GT: Modificar las existencias de los productos nuevos ***************/ //Anotar en la bitacora la modificación a la remision oBitacora = new MedDAL.DAL.bitacora(); oblBitacora = new MedNeg.Bitacora.BlBitacora(); oBitacora.FechaEntradaSrv = DateTime.Now; oBitacora.FechaEntradaCte = DateTime.Now;//Linea Temporal oBitacora.Modulo = "Remisiones"; oBitacora.Usuario = Session["usuario"].ToString(); oBitacora.Nombre = Session["nombre"].ToString(); oBitacora.Accion = "Edición de Remision"; oBitacora.Descripcion = sDatosBitacora; if (!oblBitacora.NuevoRegistro(oBitacora)) { //lblAviso2.Text = "El evento no pudo ser registrado en la bitácora"; } Session["sTotalFactura"] = 0; } } }
/// <summary> /// Agregar detalle a la partida /// </summary> /// <param name="sender"></param> /// <param name="e"></param> protected void imbAgregarDetalle_Click(object sender, ImageClickEventArgs e) { lblAviso.Text = ""; //Evitar mandar valores nullos para las conversiones //int iCantidad; decimal dCantidad,dIeps, dImp1=0, dImp2=0, dIva, dPrecio, dTotal; if (txbCant.Text.Equals("")) dCantidad = 0; else dCantidad = int.Parse(txbCant.Text); //Calcular el total dPrecio = decimal.Parse(cmbPrecios.SelectedValue); dTotal = dCantidad * dPrecio; //IEPS if (txbIeps.Text.Equals("")) dIeps = 0; else dIeps = dTotal * (decimal.Parse(txbIeps.Text) / 100); ////Imp1 //if (txbImp1.Text.Equals("")) // dImp1 = 0; //else // dImp1 = dTotal * (decimal.Parse(txbImp1.Text) / 100); /////Imp2 //if (txbImp2.Text.Equals("")) // dImp2 = 0; //else // dImp2 = dTotal * (decimal.Parse(txbImp2.Text) / 100); ///Iva if (txbIva.Text.Equals("")) dIva = 0; else dIva = dTotal * (decimal.Parse(txbIva.Text) / 100); //Agregar los impuestos al total dTotal += dIeps + dImp1 + dImp2 + dIva; //Recuperar el id del producto para ya tenerlo en la lista MedNeg.Productos.BlProductos oblProducto = new MedNeg.Productos.BlProductos(); int iIdProducto = oblProducto.RecuperarIdProducto(txbClave.Text); MedNeg.Usuarios.BlUsuarios oblUsuarios = new MedNeg.Usuarios.BlUsuarios(); MedDAL.DAL.usuarios oUsuario = new MedDAL.DAL.usuarios(); oUsuario = (MedDAL.DAL.usuarios)oblUsuarios.Buscar(int.Parse(Session["usuarioid"].ToString())); List<MedDAL.DAL.productos_almacen> lstProductosAlmacen = new List<MedDAL.DAL.productos_almacen>(); lstProductosAlmacen.AddRange(oblProducto.ObtenerExistenciaProducto(iIdProducto, oUsuario.idAlmacen)); string sRutaArchivoConfig = Server.MapPath("~/Archivos/Configuracion.xml"); MedNeg.Configuracion.BlConfiguracion oblConfiguracion = new MedNeg.Configuracion.BlConfiguracion(); MedDAL.Configuracion.DALConfiguracion objConfiguracion = new MedDAL.Configuracion.DALConfiguracion(); objConfiguracion = (MedDAL.Configuracion.DALConfiguracion)oblConfiguracion.CargaDatos(sRutaArchivoConfig); if (lstProductosAlmacen.Count != 0) { if (lstProductosAlmacen[0].Cantidad >= dCantidad || (objConfiguracion.iVentasNegativas == 1 && lstProductosAlmacen[0].Cantidad < dCantidad) || lstProductosAlmacen[0].FechaCaducidad.Value > DateTime.Today) { // 0087 Datos del ensamble bool bEsEnsamble; if ((int)Session["sBolEsEnsamble"] == 1) bEsEnsamble = true; else bEsEnsamble = false; //Crear el objeto ya con sus parametros oblDetallePartida = new MedNeg.Facturas.BlDetallePartida( iIdProducto, txbClave.Text, txbProducto.Text, dCantidad, dIeps, //dImp1, //dImp2, dIva, dPrecio, txbObservaciones.Text, dTotal, txbProducto.Text, // 0087 Datos del ensamble bEsEnsamble); // 0087 Datos del ensamble //Agregar el objeto detalle partida al objeto lstDetallePartida ((List<MedNeg.Facturas.BlDetallePartida>)Session["lstDetallePartida"]).Add(oblDetallePartida); dgvPartidaDetalle.DataBind(); //GT: Agregar los nuevos detalles a una lista alterna para poder modificar sus existencias sin duplicar las de los productos ya existentes if ((int)Session["accion"] == 2) ((List<MedNeg.Facturas.BlDetallePartida>)Session["lstremisionespartidaedicion"]).Add(oblDetallePartida); Session["sTotalFactura"] = Convert.ToDecimal(Session["sTotalFactura"]) + dTotal; lblTotal.Text = "TOTAL:$" + Session["sTotalFactura"].ToString(); LimpiarDatosDetalle(); txbClave.Focus(); if (lstProductosAlmacen[0].FechaCaducidad.Value <= DateTime.Today.AddDays(objConfiguracion.iCaducidad)) { ScriptManager.RegisterStartupScript(pnlFormulario, pnlFormulario.GetType(), "alertstock", "alertarCaducidad(2);", true); } } else if (objConfiguracion.iVentasNegativas == 0 && lstProductosAlmacen[0].Cantidad < dCantidad) { ScriptManager.RegisterStartupScript(pnlFormulario, pnlFormulario.GetType(), "alertstock", "alertarStock(2);", true); } else if (lstProductosAlmacen[0].FechaCaducidad.Value <= DateTime.Today) { ScriptManager.RegisterStartupScript(pnlFormulario, pnlFormulario.GetType(), "alertstock", "alertarCaducidad(3);", true); } } }