Exemplo n.º 1
0
        /// <summary>
        /// Anula el detalle seleccionado cambiando su cantidad a 0 y guardandola en el campo CANTIDAD ANULADA.
        /// Se prevee cambiarle también el valor a IDTIPOTRANSACCION
        /// </summary>
        /// <param name="db">contexto de la base de datos</param>
        /// <param name="detalle">detalle fuera de contexto</param>
        /// <remarks> Autor: Farid Antonio Pérez Aldana. Fecha Creación: 14/06/2016</remarks>
        public static void Anular(SinabEntities db, SAB_ALM_DETALLEMOVIMIENTOS detalle)
        {
            var res =
                db.SAB_ALM_DETALLEMOVIMIENTOS.FirstOrDefault(
                    d =>
                    d.IDESTABLECIMIENTO == detalle.IDESTABLECIMIENTO &&
                    d.IDTIPOTRANSACCION == detalle.IDTIPOTRANSACCION &&
                    d.IDMOVIMIENTO == detalle.IDMOVIMIENTO && d.IDDETALLEMOVIMIENTO == detalle.IDDETALLEMOVIMIENTO);

            if (res == null)
            {
                return;
            }
            res.CANTIDADANULADA       = res.CANTIDAD;
            res.ANULADO               = true;
            res.CANTIDAD              = 0;
            res.AUUSUARIOMODIFICACION = Membresia.ObtenerUsuario().USUARIO;
            res.AUFECHAMODIFICACION   = DateTime.Now;
            var anular = res.SAB_ALM_DETALLEMOVIMIENTOLOTES.ToList();

            foreach (var r in anular)
            {
                db.SAB_ALM_DETALLEMOVIMIENTOLOTES.DeleteObject(r);
            }
            db.SaveChanges();
        }
Exemplo n.º 2
0
        public static void Agregar(SAB_CP_PRODUCTOSPROVEEDORES producto)
        {
            using (var trans = new TransactionScope())
            {
                try
                {
                    using (var db = new SinabEntities())
                    {
                        //Guarda el productoProceso
                        Agregar(db, producto);

                        //guarda su estado inicial
                        var estado = new SAB_CP_ESTADOSPRODUCTOS()
                        {
                            IdProductoProveedor = producto.Id,
                            estado     = 1,
                            Fecha      = DateTime.Now,
                            Comentario = "Estado Inicial",
                            usuario    = Membresia.ObtenerUsuario().NombreUsuario
                        };
                        EstadoProductos.Agregar(db, estado);

                        //actualiza contador de productos no certificados

                        ProveedoresProceso.Actualizar(db, producto.SAB_CP_PROVEEDORESPROCESO);
                    }

                    trans.Complete();
                }
                catch (Exception ex)
                {
                    throw new Exception(ex.Message);
                }
            }
        }
Exemplo n.º 3
0
        /// <summary>
        /// Actualiza las cantidades de los lotes dependiendo del tipo de operacion a realizar.
        /// Esta funcion no guarda en la base de datos, se debe actualizar fuera del lazo try-catch que la contenga (db.savechanges()).
        /// </summary>
        /// <param name="db">Datacontext</param>
        /// <param name="detalle">Detalle del movimiento. Contiene las operaciones a relizar sobre los lotes (suma:1, resta:2)</param>
        public static void Actualizar(SinabEntities db, SAB_ALM_DETALLEMOVIMIENTOS detalle)
        {
            var cantidad  = detalle.CANTIDAD;
            var operacion = detalle.SAB_ALM_DETALLEMOVIMIENTOLOTES.FirstOrDefault();

            if (operacion == null)
            {
                return;
            }

            var lote =
                db.SAB_ALM_LOTES.FirstOrDefault(l => l.IDALMACEN == detalle.IDALMACEN && l.IDLOTE == detalle.IDLOTE
                                                &&
                                                ((l.CANTIDADDISPONIBLE >= cantidad && operacion.DISPONIBLE == 2) ||
                                                 operacion.DISPONIBLE <= 1)
                                                &&
                                                ((l.CANTIDADNODISPONIBLE >= cantidad && operacion.NODISPONIBLE == 2) ||
                                                 operacion.NODISPONIBLE <= 1)
                                                &&
                                                ((l.CANTIDADRESERVADA >= cantidad && operacion.RESERVADA == 2) ||
                                                 operacion.RESERVADA <= 1)
                                                &&
                                                ((l.CANTIDADVENCIDA >= cantidad && operacion.VENCIDA == 2) ||
                                                 operacion.VENCIDA <= 1)
                                                &&
                                                ((l.CANTIDADTEMPORAL >= cantidad && operacion.TEMPORAL == 2) ||
                                                 operacion.TEMPORAL <= 1)
                                                );

            if (lote == null)
            {
                throw new Exception("Error: La cantidad Requerida para un producto no puede ser mayor que la cantidad disponible en el lote." +
                                    "Por favor verifique las existencias en el Lote, esta operación no puede continuar" +
                                    "No. del renglón: " + detalle.RENGLON + ", cantidad: " + detalle.CANTIDAD.ToString());
            }
            //evalua cantidad disponible
            lote.CANTIDADDISPONIBLE = EvaluarCantidades(cantidad, operacion.DISPONIBLE, lote.CANTIDADDISPONIBLE);

            //evalua cantidad no disponible
            lote.CANTIDADNODISPONIBLE = EvaluarCantidades(cantidad, operacion.NODISPONIBLE,
                                                          lote.CANTIDADNODISPONIBLE);

            //evalua cantidad reservada
            lote.CANTIDADRESERVADA = EvaluarCantidades(cantidad, operacion.RESERVADA, lote.CANTIDADRESERVADA);

            //evalua cantidad vencida
            lote.CANTIDADVENCIDA = EvaluarCantidades(cantidad, operacion.VENCIDA, lote.CANTIDADVENCIDA);

            //evalua cantidad temporal
            lote.CANTIDADTEMPORAL      = EvaluarCantidades(cantidad, operacion.TEMPORAL, lote.CANTIDADTEMPORAL);
            lote.AUUSUARIOMODIFICACION = Membresia.ObtenerUsuario().USUARIO;
            lote.AUFECHAMODIFICACION   = DateTime.Now;
            db.SaveChanges();
        }
Exemplo n.º 4
0
        public Requisicion Obtener(SinabEntities db, string codigo)
        {
            var idalmacen = Membresia.ObtenerUsuario().Almacen.IDALMACEN;
            var reqs      = db.SAB_FARM_REQUISICION.Include("SAB_FARM_DETALLEREQUISICION")
                            .Where(r => r.CodigoRequisicion == codigo && r.IdAlmacen == idalmacen);

            var requisicion = new Requisicion(db, reqs.FirstOrDefault());

            foreach (var r in reqs)
            {
                requisicion.DetallesRequisicion.AddRange(r.SAB_FARM_DETALLEREQUISICION.Where(dr => dr.Procesado == false));
            }
            return(requisicion);
        }
Exemplo n.º 5
0
        public static void Anular(SinabEntities db, SAB_ALM_VALESSALIDA vale)
        {
            var v =
                db.SAB_ALM_VALESSALIDA.FirstOrDefault(
                    vs => vs.IDVALE == vale.IDVALE && vs.IDALMACEN == vale.IDALMACEN && vs.ANIO == vale.ANIO);

            if (v == null)
            {
                return;
            }
            v.ANULADO               = true;
            v.OBSERVACION           = vale.OBSERVACION;
            v.AUUSUARIOMODIFICACION = Membresia.ObtenerUsuario().USUARIO;
            v.AUFECHAMODIFICACION   = DateTime.Now;
            db.SaveChanges();
        }
Exemplo n.º 6
0
        public static void Anular(SinabEntities db, SAB_ALM_MOVIMIENTOS movimiento)
        {
            var mv = db.SAB_ALM_MOVIMIENTOS.FirstOrDefault(m => m.IDMOVIMIENTO == movimiento.IDMOVIMIENTO &&
                                                           m.IDTIPOTRANSACCION == movimiento.IDTIPOTRANSACCION &&
                                                           m.IDESTABLECIMIENTO == movimiento.IDESTABLECIMIENTO);

            if (mv == null)
            {
                return;
            }
            mv.ANULADO  = true;
            mv.IDESTADO = 3; //anulado
            mv.AUUSUARIOMODIFICACION = Membresia.ObtenerUsuario().USUARIO;
            mv.AUFECHAMODIFICACION   = DateTime.Now;
            db.SaveChanges();
        }
Exemplo n.º 7
0
        public static List <SAB_EST_ENTREGAS> GenerarEntregas(SAB_EST_SOLICITUDES solicitud, int entrega)
        {
            var entregas    = new List <SAB_EST_ENTREGAS>();
            var count       = 0;
            var porcentajes = Utils.DistribuirPorcentajes(entrega);

            using (var db = new SinabEntities())
            {
                short?diasMax = 0;
                try
                {
                    diasMax =
                        db.SAB_EST_ENTREGAS.Where(
                            en =>
                            en.IDESTABLECIMIENTO == solicitud.IDESTABLECIMIENTO &&
                            en.IDSOLICITUD == solicitud.IDSOLICITUD)
                        .OrderByDescending(en => en.DIASENTREGA).Select(en => en.DIASENTREGA).FirstOrDefault();
                }
                catch
                {
                    diasMax = 30;
                }

                var dias = Utils.DistribuirDias((Int32)diasMax, entrega);
                foreach (var p in porcentajes)
                {
                    var nuevaEntrega = new SAB_EST_ENTREGAS
                    {
                        IDSOLICITUD       = solicitud.IDSOLICITUD,
                        IDESTABLECIMIENTO =
                            Membresia.ObtenerUsuario().Establecimiento.IDESTABLECIMIENTO,
                        IDENTREGA         = (short)Convert.ToDecimal(entrega),
                        NUMEROENTREGA     = (short)Convert.ToDecimal(count + 1),
                        PORCENTAJEENTREGA = (decimal?)p,
                        DIASENTREGA       = (short?)Convert.ToDecimal(dias[count]),
                        AUUSUARIOCREACION = HttpContext.Current.User.Identity.Name,
                        AUFECHACREACION   = DateTime.Now
                    };
                    entregas.Add(nuevaEntrega);
                    count++;
                }
            }
            return(entregas);
        }
Exemplo n.º 8
0
 public static void Actualizar(int idInforme, int idEstablecimiento, int estado)
 {
     try
     {
         using (var db = new SinabEntities())
         {
             var obj = Obtener(db, idInforme, idEstablecimiento);
             if (obj == null)
             {
                 throw new ArgumentNullException("No se encontró la notificación con id: " + idInforme);
             }
             obj.IDESTADO = estado;
             obj.AUUSUARIOMODIFICACION = Membresia.ObtenerUsuario().NombreUsuario;
             obj.AUFECHAMODIFICACION   = DateTime.Now;
             db.SaveChanges();
         }
     }
     catch (Exception ex)
     {
         throw new Exception(ex.Message);
     }
 }
Exemplo n.º 9
0
        public static void Agregar(SinabEntities db, int idEstablecimiento, int idProcesoCompra, bool unaSolicitud)
        {
            var existe = db.SAB_UACI_PROGRAMADISTRIBUCION.FirstOrDefault(pd =>
                                                                         pd.IDESTABLECIMIENTO == idEstablecimiento &&
                                                                         pd.IDPROCESOCOMPRA == idProcesoCompra);

            if (existe != null)
            {
                db.SAB_UACI_PROGRAMADISTRIBUCION.DeleteObject(existe);
            }
            //llamar a la funcion
            if (unaSolicitud)
            {
                db.prc_LlenarProgramaDistribucionUna(idProcesoCompra, idEstablecimiento,
                                                     Membresia.ObtenerUsuario().NombreUsuario);
            }
            else
            {
                db.prc_LlenarProgramaDistribucion(idProcesoCompra, idEstablecimiento,
                                                  Membresia.ObtenerUsuario().NombreUsuario);
            }
            //var res = (from aes in db.SAB_EST_ALMACENESENTREGASOLICITUD
            //    join spc in db.SAB_EST_SOLICITUDESPROCESOCOMPRAS on new {aes.IDESTABLECIMIENTO, aes.IDSOLICITUD} equals new {spc.IDESTABLECIMIENTO, spc.IDSOLICITUD}
            //    join ae in db.SAB_CAT_ALMACENESESTABLECIMIENTOS on aes.IDESTABLECIMIENTO equals ae.IDESTABLECIMIENTO
            //    where spc.IDPROCESOCOMPRA == idProcesoCompra &&
            //          aes.IDESTABLECIMIENTO == idEstablecimiento
            //    group aes by new
            //                 {
            //                     aes.IDESTABLECIMIENTO,
            //                     spc.IDPROCESOCOMPRA,
            //                     IdEstablecimientoSolicita = ae.IDESTABLECIMIENTO,
            //                     aes.IDSOLICITUD,
            //                     aes.RENGLON,
            //                     aes.IDALMACENENTREGA,
            //                     aes.IDFUENTEFINANCIAMIENTO
            //                 }
            //    into grupo
            //    select new
            //           {
            //               grupo.Key.IDESTABLECIMIENTO,
            //               grupo.Key.IDPROCESOCOMPRA,
            //               IDESTABLECIMIENTOSOLICITA = grupo.Key.IDESTABLECIMIENTO,
            //               grupo.Key.IDSOLICITUD,
            //               RENGLON = (int) grupo.Key.RENGLON,
            //               IDALMACEN = grupo.Key.IDALMACENENTREGA,
            //               CANTIDADSOLICITADA = grupo.Sum(g => g.CANTIDAD),
            //               grupo.Key.IDFUENTEFINANCIAMIENTO
            //           }).ToList();

            //if (!res.Any()) return;
            //foreach (var obj in res.Select(pd => new SAB_UACI_PROGRAMADISTRIBUCION()
            //{
            //    IDESTABLECIMIENTO = pd.IDESTABLECIMIENTO,
            //    IDPROCESOCOMPRA = pd.IDPROCESOCOMPRA,
            //    IDESTABLECIMIENTOSOLICITA = pd.IDESTABLECIMIENTO,
            //    IDSOLICITUD = pd.IDSOLICITUD,
            //    RENGLON = pd.RENGLON,
            //    IDALMACEN = pd.IDALMACEN,
            //    CANTIDADSOLICITADA = pd.CANTIDADSOLICITADA,
            //    CANTIDADADJUDICADA = 0,
            //    CANTIDADENTREGADA = 0,
            //    AUUSUARIOCREACION = Membresia.ObtenerUsuario().NombreUsuario,
            //    AUFECHACREACION = DateTime.Now,
            //    ESTASINCRONIZADA = 0,
            //    IDFUENTEFINANCIAMIENTO = pd.IDFUENTEFINANCIAMIENTO
            //}))
            //{
            //    db.SAB_UACI_PROGRAMADISTRIBUCION.AddObject(obj);
            //    db.SaveChanges();
            //}
        }
Exemplo n.º 10
0
        public static void AgregarTransaccion(SAB_ALM_MOVIMIENTOS movimiento, bool esFarmacia)
        {
            using (var db = new SinabEntities())
            {
                using (var ts = new TransactionScope())
                {
                    try
                    {
                        var dsDetallesMovientoVale = db.DetalleMovimientosValeSalida(
                            movimiento.IDESTABLECIMIENTO,
                            Convert.ToInt32(movimiento.IDMOVIMIENTO),
                            movimiento.IDTIPOTRANSACCION,
                            esFarmacia
                            ).ToList();

                        var primerDetalle = dsDetallesMovientoVale.FirstOrDefault();

                        var usuarioRegistra =
                            db.SAB_CAT_EMPLEADOS.FirstOrDefault(ur => ur.NOMBRECORTO == movimiento.AUUSUARIOCREACION);
                        var usuarioModifica =
                            db.SAB_CAT_EMPLEADOS.FirstOrDefault(ur => ur.NOMBRECORTO == movimiento.AUUSUARIOMODIFICACION);

                        var empleado = Membresia.ObtenerUsuario();

                        if (primerDetalle.IDSUMINISTRO != 1 || !esFarmacia)
                        {
                            return;
                        }


                        var transaccion = new SAB_FARM_TRANSACION()
                        {
                            NumeroVale        = primerDetalle.NUMEROVALE,
                            IdEstablecimiento =
                                usuarioRegistra != null
                                                      ? usuarioRegistra.IDESTABLECIMIENTO ?? 0
                                                      : empleado.Establecimiento.IDESTABLECIMIENTO,
                            IdEstado =
                                Convert.ToChar(EnumHelpers.RequisicionEstados.Enviado).ToString(),
                            IdUsuarioReg =
                                usuarioRegistra != null
                                                      ? usuarioRegistra.IDEMPLEADO
                                                      : empleado.IDEMPLEADO,
                            IdUsuarioMod =
                                usuarioModifica != null
                                                      ? usuarioModifica.IDEMPLEADO
                                                      : empleado.IDEMPLEADO,
                            FechaHoraMod = primerDetalle.AUFECHAMODIFICACION ?? DateTime.Now,
                            FechaHoraReg = primerDetalle.AUFECHACREACION.Value,
                        };

                        db.SAB_FARM_TRANSACION.AddObject(transaccion);
                        db.SaveChanges();

                        foreach (var newex in dsDetallesMovientoVale.Select(t => new SAB_FARM_EXISTENCIA()
                        {
                            IdTrans = transaccion.IdTrans,
                            Codigo = t.Codigo,
                            Cantidad =
                                (double)(t.Cantidad ?? 0),
                            Lote = t.Lote,
                            Precio = (double)(t.Precio ?? 0),
                            FechaVencimiento =
                                t.FECHAVENCIMIENTO,
                            FuenteFinanciamiento =
                                t.FuenteFinanciamiento,
                            FechaHoraReg =
                                t.AUFECHACREACION.Value,
                            FechaHoraMod =
                                t.AUFECHAMODIFICACION,
                            IdUsuarioMod =
                                usuarioModifica.IDEMPLEADO,
                            IdUsuarioReg =
                                usuarioRegistra.IDEMPLEADO
                        }))
                        {
                            db.SAB_FARM_EXISTENCIA.AddObject(newex);
                        }
                        db.SaveChanges();
                        ts.Complete();
                    }
                    catch (Exception ex)
                    {
                        throw new Exception(ex.Message);
                    }
                }
            }
        }