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