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\""; } } }
public bool EliminarRegistro(MedDAL.DAL.recetas_partida_faltantes oRecetasPartidaFaltante) { return(odalRecetasPartidaFaltantes.EliminarRegistro(oRecetasPartidaFaltante)); }