/// <summary> /// Nueva Forma de Registrar las partidas de las recetas /// </summary> /// <param name="oRecetaPartida"></param> /// <returns></returns> public bool NuevoRegistroPartida(MedDAL.DAL.recetas_partida oRecetaPartida) { try { oMedicuriEntities.AddTorecetas_partida(oRecetaPartida); oMedicuriEntities.SaveChanges(); return(true); } catch { return(false); } }
private void guardarReceta() { bool bValidar = true; bValidar = ValidarDetalle(); if ((estadoActual == 1 && bValidar) || (estadoActual == 2 && recetaParaEditar.EstatusMedico.Equals("2")) || (estadoActual == 2 && recetaParaEditar.EstatusMedico.Equals("1"))) //if (estadoActual == 1 || estadoActual == 2) { string sRutaArchivoConfig = Server.MapPath("~/Archivos/Configuracion.xml"); bool bAutomatico = false; bool bStockMin = false; try { MedDAL.DAL.recetas receta = null; if (estadoActual == 1) { receta = new MedDAL.DAL.recetas(); } else if (estadoActual == 2) { receta = recetaParaEditar; Session["recetasIdCliente"] = recetaParaEditar.idCliente; } receta.idTipoReceta = int.Parse(cmbTipoReceta.SelectedValue); receta.idVendedor = user.idUsuario; receta.idCliente = int.Parse(Session["recetasIdCliente"].ToString()); receta.idAlmacen = idAlmacen; receta.idEstadoExp = Convert.ToInt32(cmbExpedidoEnEstados.SelectedValue); receta.idMunicipioExp = Convert.ToInt32(cmbExpedidoEnMunicipios.SelectedValue); receta.idPoblacionExp = Convert.ToInt32(cmbExpedidoEnPoblaciones.SelectedValue); receta.idColoniaExp = Convert.ToInt32(cmbExpedidoEnColonias.SelectedValue); receta.idEstadoSur = Convert.ToInt32(cmbSurtidoEnEstados.SelectedValue); receta.idMunicipioSur = Convert.ToInt32(cmbSurtidoEnMunicipios.SelectedValue); receta.idPoblacionSur = Convert.ToInt32(cmbSurtidoEnPoblaciones.SelectedValue); receta.idColoniaSur = Convert.ToInt32(cmbSurtidoEnColonias.SelectedValue); receta.idVendedor = medico.idVendedor; if (estadoActual == 1 && Session["iFolioAutomatico"].ToString() == txbFolio.Text) { receta.Folio = blRecetas.RecuperaFolioAutomatico(sRutaArchivoConfig).ToString(); bAutomatico = true; } else { receta.Folio = txbFolio.Text; } receta.ClaveMed = txbPieCedulaProf.Text; receta.Paciente = txbCliente.Text; //receta.Domicilio = receta.Telefono = txbClienteTelefono.Text; //receta.Celular //receta.CorreoElectronico= receta.Fecha = DateTime.Parse(txbFecha.Text); receta.EstatusMedico = cmbEstatus.SelectedValue; receta.Estatus = "1"; //Validar si la receta ya existe con el folio dado MedDAL.DAL.recetas oRecetaValidar = oblRecetas.BuscarRecetaFolioRepetido(receta.Folio); if ((oRecetaValidar == null && estadoActual == 1) || estadoActual == 2) { //JID Aqui se guarda o se edita la receta if (estadoActual == 1) { blRecetas.guardarReceta(receta); if (bAutomatico) { blRecetas.ActualizarFolioReceta(sRutaArchivoConfig); } } else if (estadoActual == 2) { blRecetas.EditarReceta(receta); } MedDAL.DAL.recetas oReceta = new MedDAL.DAL.recetas(); if (estadoActual == 1) { oReceta = blRecetas.BuscarRecetaFolioRepetido(receta.Folio); } //Aqui es un nuevo registro if (estadoActual == 1) { //blRecetas.guardarRecetasPartida(lPartida); foreach (MedDAL.DAL.recetas_partida oRecetasPartida in (List<MedDAL.DAL.recetas_partida>)Session["lstrecetaspartida"]) { oRecetasPartida.idReceta = oReceta.idReceta; MedDAL.DAL.recetas_partida oRecetasPartidaNuevo = new MedDAL.DAL.recetas_partida(); oRecetasPartidaNuevo.idReceta = oReceta.idReceta; oRecetasPartidaNuevo.idProducto = oRecetasPartida.idProducto; oRecetasPartidaNuevo.idLineaCredito = oRecetasPartida.idLineaCredito; oRecetasPartidaNuevo.idCausesCie = oRecetasPartida.idCausesCie; oRecetasPartidaNuevo.CantidadRecetada = oRecetasPartida.CantidadRecetada; oRecetasPartidaNuevo.CantidaSurtida = oRecetasPartida.CantidaSurtida; oRecetasPartidaNuevo.Precio = oRecetasPartida.Precio; oRecetasPartidaNuevo.Lote = oRecetasPartida.Lote; oRecetasPartidaNuevo.NoSerie = oRecetasPartida.NoSerie; oRecetasPartidaNuevo.PrimeraIntencion = oRecetasPartida.PrimeraIntencion; oRecetasPartidaNuevo.SegundaIntencion = oRecetasPartida.SegundaIntencion; oRecetasPartidaNuevo.Cause = oRecetasPartida.Cause; oRecetasPartidaNuevo.Factura = oRecetasPartida.Factura; blRecetas.NuevoRegistroPartida(oRecetasPartidaNuevo); if (oRecetasPartida.CantidadRecetada > oRecetasPartida.CantidaSurtida) { MedDAL.DAL.bitacora_faltantes oBitacoraFaltantes = new MedDAL.DAL.bitacora_faltantes(); oBitacoraFaltantes.idReceta = oReceta.idReceta; oBitacoraFaltantes.idProducto = Convert.ToInt32(oRecetasPartida.idProducto); oBitacoraFaltantes.idAlmacen = int.Parse(oReceta.idAlmacen.ToString()); oBitacoraFaltantes.Cantidad = Convert.ToInt32(oRecetasPartida.CantidadRecetada - oRecetasPartida.CantidaSurtida); oblBitacoraFaltantes.NuevoRegistro(oBitacoraFaltantes); MedDAL.DAL.recetas_partida_faltantes oRecetasPartidaFaltantes = new MedDAL.DAL.recetas_partida_faltantes(); oRecetasPartidaFaltantes.idReceta = oReceta.idReceta; oRecetasPartidaFaltantes.idProducto = Convert.ToInt32(oRecetasPartida.idProducto); oRecetasPartidaFaltantes.idAlmacen = int.Parse(oReceta.idAlmacen.ToString()); oRecetasPartidaFaltantes.Fecha = DateTime.Now; oblRecetasPartidaFaltantes.NuevoRegistro(oRecetasPartidaFaltantes); } MedDAL.DAL.productos_almacen oProductoAlmacen = oblProductos.ObtenerProductoLote(idAlmacen, Convert.ToInt32(oRecetasPartida.idProducto), oRecetasPartida.Lote); MedDAL.DAL.productos_almacen_stocks oProductoAlmacenStocks = oblProductos.ObtenerProductoAlmacenStock(idAlmacen, Convert.ToInt32(oRecetasPartida.idProducto)); if (oProductoAlmacen.Cantidad - oRecetasPartidaNuevo.CantidaSurtida <= oProductoAlmacenStocks.StockMin) { bStockMin = true; } } blRecetas.disminuirExistencias(idAlmacen, (List<MedDAL.DAL.recetas_partida>)Session["lstrecetaspartida"]); if (bStockMin) { ScriptManager.RegisterStartupScript(upnForm, upnForm.GetType(), "alertstock", "alertarStock(1);", true); } //Se actualizan las variables de sesion para que queden en blanco Session["recetasIdCliente"] = 0; Session["recetasIdCausesCie"] = null; } //Aqui es edicion else if (estadoActual == 2) { //JID se eliminan todas las recetas de la partida //blRecetas.eliminaRecetasPartida(receta.idReceta); //JID se coloca la partida ya existente en la receta foreach (MedDAL.DAL.recetas_partida oRecetasPartida in (List<MedDAL.DAL.recetas_partida>)Session["lstrecetaspartidaedicion"]) { MedDAL.DAL.recetas_partida oRecetasPartidaNuevo = new MedDAL.DAL.recetas_partida(); oRecetasPartidaNuevo.idReceta = receta.idReceta; oRecetasPartidaNuevo.idProducto = oRecetasPartida.idProducto; oRecetasPartidaNuevo.idLineaCredito = oRecetasPartida.idLineaCredito; oRecetasPartidaNuevo.idCausesCie = oRecetasPartida.idCausesCie; oRecetasPartidaNuevo.CantidadRecetada = oRecetasPartida.CantidadRecetada; oRecetasPartidaNuevo.CantidaSurtida = oRecetasPartida.CantidaSurtida; oRecetasPartidaNuevo.Precio = oRecetasPartida.Precio; oRecetasPartidaNuevo.Lote = oRecetasPartida.Lote; oRecetasPartidaNuevo.NoSerie = oRecetasPartida.NoSerie; oRecetasPartidaNuevo.PrimeraIntencion = oRecetasPartida.PrimeraIntencion; oRecetasPartidaNuevo.SegundaIntencion = oRecetasPartida.SegundaIntencion; oRecetasPartidaNuevo.Cause = oRecetasPartida.Cause; oRecetasPartidaNuevo.Factura = oRecetasPartida.Factura; blRecetas.NuevoRegistroPartida(oRecetasPartidaNuevo); if (oRecetasPartida.CantidadRecetada > oRecetasPartida.CantidaSurtida) { MedDAL.DAL.bitacora_faltantes oBitacoraFaltantes = new MedDAL.DAL.bitacora_faltantes(); oBitacoraFaltantes.idReceta = receta.idReceta; oBitacoraFaltantes.idProducto = Convert.ToInt32(oRecetasPartida.idProducto); oBitacoraFaltantes.idAlmacen = int.Parse(oReceta.idAlmacen.ToString()); oblBitacoraFaltantes.NuevoRegistro(oBitacoraFaltantes); MedDAL.DAL.recetas_partida_faltantes oRecetasPartidaFaltantes = new MedDAL.DAL.recetas_partida_faltantes(); oRecetasPartidaFaltantes.idReceta = receta.idReceta; oRecetasPartidaFaltantes.idProducto = Convert.ToInt32(oRecetasPartida.idProducto); oRecetasPartidaFaltantes.idAlmacen = int.Parse(oReceta.idAlmacen.ToString()); oblRecetasPartidaFaltantes.NuevoRegistro(oRecetasPartidaFaltantes); } MedDAL.DAL.productos_almacen oProductoAlmacen = oblProductos.ObtenerProductoLote(idAlmacen, Convert.ToInt32(oRecetasPartidaNuevo.idProducto), oRecetasPartida.Lote); MedDAL.DAL.productos_almacen_stocks oProductoAlmacenStocks = oblProductos.ObtenerProductoAlmacenStock(idAlmacen, Convert.ToInt32(oRecetasPartida.idProducto)); if (oProductoAlmacen.Cantidad - oRecetasPartidaNuevo.CantidaSurtida <= oProductoAlmacenStocks.StockMin) { bStockMin = true; } } if (receta.EstatusMedico == "2") { //JID Aquí solo se agregan las partidas hechas en edición y se hace la reducción de stock blRecetas.disminuirExistencias(idAlmacen, ((List<MedDAL.DAL.recetas_partida>)Session["lstrecetaspartidaedicion"])); if (bStockMin) { ScriptManager.RegisterStartupScript(upnForm, upnForm.GetType(), "alertstock", "alertarStock(1);", true); } } //JID si la receta es cancelada if (receta.EstatusMedico == "4") { blRecetas.aumentarExistencias((int)recetaParaEditar.idAlmacen, ((List<MedDAL.DAL.recetas_partida>)Session["lstrecetaspartida"])); } //blRecetas.guardarRecetasPartida(lPartida); //List<Producto> lProductosAgregados = new List<Producto>(); //Editar esto con cuidado!! /* foreach (Producto p in lstProductos) { if (p.agregadoPorEdicionDePartida) lProductosAgregados.Add(p); } blRecetas.disminuirExistencias(idAlmacen, lProductosAgregados);*/ } lblDatos.Text = "Proceso finalizado con éxito"; } else { lblDatos.Text = "El folio que desea ingresar ya existe"; } } catch (Exception ex) { lblDatos.Text = "Error: " + ex.Message; } } else { if (!bValidar) { lblDatos.Text = "Atencion: Debe de agregar mínimo un producto o ensamble"; } else { lblDatos.Text = "Error: No se puede editar una receta con status diferente de \"Parcial\" o \"Surtida\""; } } }
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); } } }
public bool NuevoRegistroPartida(MedDAL.DAL.recetas_partida oRecetasPartida) { return(oRecetas.NuevoRegistroPartida(oRecetasPartida)); }