Beispiel #1
0
 /// <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);
                }
            }
        }
Beispiel #4
0
 public bool NuevoRegistroPartida(MedDAL.DAL.recetas_partida oRecetasPartida)
 {
     return(oRecetas.NuevoRegistroPartida(oRecetasPartida));
 }