/// <summary> /// Cargar los detalles de la remisión /// </summary> private void CargaRemision(string sFolioRemision) { //Objeto que contiene la remisión MedDAL.DAL.remisiones oRemision = new MedDAL.DAL.remisiones(); MedNeg.Remisiones.BlRemisiones oblRemision = new MedNeg.Remisiones.BlRemisiones(); oRemision = oblRemision.BuscarRemisionFolio(sFolioRemision); //Llenar los campos del pedido Session["sIdPedido"] = oRemision.idPedido; Session["sIdCliente"] = oRemision.idCliente; Session["sIdRemision"] = oRemision.idRemision; //Llenar los campos del cliente txbCliente.Text = oRemision.clientes.Nombre + " " + oRemision.clientes.Apellidos; txbDireccion.Text = oRemision.clientes.Calle + " " + oRemision.clientes.NumeroExt; if (oRemision.clientes.NumeroInt != null) { txbDireccion.Text += "Int: " + oRemision.clientes.NumeroInt; } txbPoblacion.Text = oRemision.clientes.poblaciones.Nombre.ToString() + ", " + oRemision.clientes.municipios.Nombre.ToString() + ", " + oRemision.clientes.estados.Nombre.ToString(); //Llenar los datos de la partida de la remisión oblRemision = new MedNeg.Remisiones.BlRemisiones(); //Recuperar la partida del pedido var oQuery = oblRemision.RecuperarPartidaRemision(oRemision.idRemision); //Session["lstDetallePartida"] = new List<MedNeg.Facturas.BlDetallePartida>(); if (((List<MedNeg.Facturas.BlDetallePartida>)Session["lstDetallePartida"]).Count() > 0) { ((List<MedNeg.Facturas.BlDetallePartida>)Session["lstDetallePartida"]).Clear(); } Session["sTotalFactura"] = 0; //Recorrer el resultado y meterlo al datagridview foreach (MedDAL.DAL.remisiones_partida oDetalle in oQuery) { oblDetallePartida = new MedNeg.Facturas.BlDetallePartida( Convert.ToInt32(oDetalle.idProducto), oDetalle.productos.Clave1, oDetalle.productos.Nombre, oDetalle.Cantidad, Convert.ToDecimal(oDetalle.IEPS), Convert.ToDecimal(oDetalle.Iva), Convert.ToDecimal(oDetalle.Precio), oDetalle.Observaciones, Convert.ToDecimal((oDetalle.Precio * oDetalle.Cantidad) + oDetalle.IEPS + oDetalle.Iva)); ((List<MedNeg.Facturas.BlDetallePartida>)Session["lstDetallePartida"]).Add(oblDetallePartida); Session["sTotalFactura"] = Convert.ToDecimal(Session["sTotalFactura"]) + Convert.ToDecimal((oDetalle.Precio * oDetalle.Cantidad) + oDetalle.IEPS + oDetalle.Iva); } //Hacer el binding de la data al dgvDatos lblTotal.Text = "TOTAL:$" + Session["sTotalFactura"].ToString(); dgvPartidaDetalle.DataBind(); }
/// <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> /// Cargar los detalles de la remisión /// </summary> private void CargaRemision(string sFolioRemision) { //Objeto que contiene la remisión MedDAL.DAL.remisiones oRemision = new MedDAL.DAL.remisiones(); MedNeg.Remisiones.BlRemisiones oblRemision = new MedNeg.Remisiones.BlRemisiones(); oRemision = oblRemision.BuscarRemisionFolio(sFolioRemision); //Llenar los campos del pedido Session["sIdPedido"] = oRemision.idPedido; Session["sIdCliente"] = oRemision.idCliente; Session["sIdRemision"] = oRemision.idRemision; //Llenar los campos del cliente txbCliente.Text = oRemision.clientes.Nombre + " " + oRemision.clientes.Apellidos; txbDireccion.Text = oRemision.clientes.Calle + " " + oRemision.clientes.NumeroExt; if (oRemision.clientes.NumeroInt != null) { txbDireccion.Text += "Int: " + oRemision.clientes.NumeroInt; } txbPoblacion.Text = oRemision.clientes.poblaciones.Nombre.ToString() + ", " + oRemision.clientes.municipios.Nombre.ToString() + ", " + oRemision.clientes.estados.Nombre.ToString(); //Llenar los datos de la partida de la remisión oblRemision = new MedNeg.Remisiones.BlRemisiones(); //Recuperar la partida del pedido List<MedDAL.DAL.remisiones_partida> oQuery = new List<MedDAL.DAL.remisiones_partida>(); oQuery.AddRange(oblRemision.RecuperarPartidaRemision(oRemision.idRemision)); //Session["lstDetallePartida"] = new List<MedNeg.Facturas.BlDetallePartida>(); if (((List<MedNeg.Facturas.BlDetallePartida>)Session["lstDetallePartida"]).Count() > 0) { ((List<MedNeg.Facturas.BlDetallePartida>)Session["lstDetallePartida"]).Clear(); } Session["sTotalFactura"] = 0; //0087 Variables para gestionar la carga de datos del producto o del ensamble string sClave; string sNombre; bool bEsEnsamble; //Recorrer el resultado y meterlo al datagridview foreach (MedDAL.DAL.remisiones_partida oDetalle in oQuery) { //0087 Identificar si es un producto o un ensamble if (oDetalle.idEnsamble.Equals(null)) { //Datos del producto sClave = oDetalle.productos.Clave1; sNombre = oDetalle.productos.Nombre; bEsEnsamble = false; } else { //Datos del ensamble sClave = oDetalle.ensamble.ClaveBom; sNombre = oDetalle.ensamble.Descripcion; bEsEnsamble = true; } oblDetallePartida = new MedNeg.Facturas.BlDetallePartida( Convert.ToInt32(oDetalle.idProducto), //0087 Identificar si es un producto o un ensamble //oDetalle.productos.Clave1, //oDetalle.productos.Nombre, sClave, sNombre, oDetalle.Cantidad, Convert.ToDecimal(oDetalle.IEPS), Convert.ToDecimal(oDetalle.Iva), Convert.ToDecimal(oDetalle.Precio), oDetalle.Observaciones, Convert.ToDecimal((oDetalle.Precio * oDetalle.Cantidad) + oDetalle.IEPS + oDetalle.Iva), oDetalle.Descripcion, bEsEnsamble); ((List<MedNeg.Facturas.BlDetallePartida>)Session["lstDetallePartida"]).Add(oblDetallePartida); Session["sTotalFactura"] = Convert.ToDecimal(Session["sTotalFactura"]) + Convert.ToDecimal((oDetalle.Precio * oDetalle.Cantidad) + oDetalle.IEPS + oDetalle.Iva); } //Hacer el binding de la data al dgvDatos lblTotal.Text = "TOTAL:$" + Session["sTotalFactura"].ToString(); dgvPartidaDetalle.DataBind(); }
/// <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"; } }