/// <summary> /// PAGE LOAD /// </summary> /// <param name="sender"></param> /// <param name="e"></param> protected void Page_Load(object sender, EventArgs e) { Hashtable htbPermisos = (Hashtable)Session["permisos"]; char cPermiso = 'N'; try { #region Interfaz cPermiso = (char)htbPermisos["remisiones"]; imbNuevo = (ImageButton)Master.FindControl("imgBtnNuevo"); imbNuevo.Click += new ImageClickEventHandler(this.imbNuevo_Click); imbEditar = (ImageButton)Master.FindControl("imgBtnEditar"); imbEditar.Click += new ImageClickEventHandler(this.imbEditar_Click); imbEliminar = (ImageButton)Master.FindControl("imgBtnEliminar"); imbEliminar.Click += new ImageClickEventHandler(this.imbEliminar_Click); imbMostrar = (ImageButton)Master.FindControl("imgBtnMostrar"); imbMostrar.Click += new ImageClickEventHandler(this.imbMostrar_Click); imbAceptar = (ImageButton)Master.FindControl("imgBtnAceptar"); imbAceptar.Click += new ImageClickEventHandler(this.imbAceptar_Click); imbCancelar = (ImageButton)Master.FindControl("imgBtnCancelar"); imbCancelar.Click += new ImageClickEventHandler(this.imbCancelar_Click); imbImprimir = (ImageButton)Master.FindControl("imgBtnImprimir"); imbImprimir.Click += new ImageClickEventHandler(this.imbImprimir_Click); rdbTodos = (RadioButton)Master.FindControl("rdbFiltro1"); rdbTodos.Text = "Folio"; rdbClave = (RadioButton)Master.FindControl("rdbFiltro2"); rdbClave.Text = "Cliente"; rdbNombre = (RadioButton)Master.FindControl("rdbFiltro3"); rdbNombre.Text = "Fecha"; btnBuscar = (Button)Master.FindControl("btnBuscar"); btnBuscar.Click += new EventHandler(this.btnBuscar_Click); txbBuscar = (TextBox)Master.FindControl("txtBuscar"); lblNombreModulo = (Label)Master.FindControl("lblNombreModulo"); lblNombreModulo.Text = "Remisiones"; //GT 0175 imbReportes = (ImageButton)Master.FindControl("imgBtnReportes"); imbReportes.Click += new ImageClickEventHandler(this.imbReportes_Click); lblDatos.Text = ""; switch (cPermiso) { case 'T': break; case 'E': DesactivarEdicionEliminacion(); break; case 'L': DesactivarEdicionEliminacion(); DesactivarNuevo(); break; } #endregion if (!IsPostBack) { Session["editarpartidas"] = 0; Session["reporteactivo"] = 0; Session["reportdocument"] = ""; Session["titulo"] = ""; //GT: Lista donde se guardan los productos que se agregan en una edicion de remisiones a los ya existentes Session["lstremisionespartidaedicion"] = new List<MedNeg.Facturas.BlDetallePartida>(); Session["accion"] = 0; } if (int.Parse(Session["editarpartidas"].ToString()) == 1) { Session["editarpartidas"] = 0; } else { dgvPartidaDetalle.Visible = true; dgvPartidaDetalle.ShowHeader = true; dgvPartidaDetalle.EmptyDataText = "Sin Detalle"; dgvPartidaDetalle.DataSource = ((List<MedNeg.Facturas.BlDetallePartida>)Session["lstDetallePartida"]); dgvPartidaDetalle.DataBind(); txbClave.TextChanged += new EventHandler(txbClave_TextChanged); } if (!IsPostBack) { // Saber si estan activados los folios automaticos y poner su valor por default // Se almacena en una variable de sesión para comparar que se esta respetando el formato automatico // y validar que no haya cambiado el folio de pedidos debido a otro registro mientras se hacia el actual oblRemision = new MedNeg.Remisiones.BlRemisiones(); Session["iFolioAutomatico"] = oblRemision.RecuperaFolioAutomatico(Server.MapPath("~/Archivos/Configuracion.xml")); txbFolio.Text = Session["iFolioAutomatico"].ToString(); //Session["lstDetallePartida"] = null; Session["lstDetallePartida"] = new List<MedNeg.Facturas.BlDetallePartida>(); Session["sEsDePedido"] = false; pnlFormulario.Visible = false; pnlCatalogo.Visible = false; //pnlReportes.Visible = false; Session["sTotalFactura"] = 0; Session["resultadoquery"] = ""; ViewState["direccionsorting"] = System.Web.UI.WebControls.SortDirection.Ascending; //Variable de sesion para saber si es un ensamble al momento de registrar el detalle de la partida // 0 = False, 1 = True Session["sBolEsEnsamble"] = 0; //GT 0175 ConfigurarMenuBotones(true, true, false, false, false, false, true, true); } } catch (NullReferenceException) { if (!ClientScript.IsStartupScriptRegistered("alertsession")) { Page.ClientScript.RegisterStartupScript(this.GetType(), "alertsession", "alertarSesion();", true); } pnlFormulario.Visible = false; pnlCatalogo.Visible = false; Site1 oPrincipal = (Site1)this.Master; oPrincipal.DeshabilitarControles(this); oPrincipal.DeshabilitarControles(); } }
/// <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"; } }