Example #1
0
        public ActionResult Solicitud(int id)
        {
            //JArray jArray = new JArray();
            //JObject enviar = new JObject();
            EPRTA_MOVIMIENTO movimiento = null;

            try
            {
                if (id > 0)
                {
                    var empleados = (from e in unitOfWork.EmpleadoRepository.GetAll() select e);
                    movimiento = unitOfWork.MovimientoRepository.GetById(id);
                    ViewBag.usuario_solicita    = (string)(from p in empleados where p.USUARIO == movimiento.USUARIO_SOLICITA select p.EMPLEADO).FirstOrDefault();
                    ViewBag.usuario_aprueba     = movimiento.USUARIO_APRUEBA != null ? (from p in empleados where p.USUARIO == movimiento.USUARIO_APRUEBA select p.EMPLEADO).FirstOrDefault() : null;
                    ViewBag.usuario_autoriza    = movimiento.USUARIO_AUTORIZA != null ?  (from p in empleados where p.USUARIO == movimiento.USUARIO_AUTORIZA select p.EMPLEADO).FirstOrDefault() : null;
                    ViewBag.direccion_solicitud = unitOfWork.DireccionRepository.GetById(movimiento.ID_DIRECCION_SOLICITA).DESCRIPCION;
                }
                else
                {
                    movimiento        = new EPRTA_MOVIMIENTO();
                    movimiento.ESTADO = "S";
                    movimiento.ID_DIRECCION_SOLICITA = Convert.ToByte(Session["id_direccion"]);
                    ViewBag.direccion_solicitud      = Session["direccion"];
                }
            }
            catch (Exception ex)
            {
                logger.Error(ex, ex.Message);
                //enviar.Add("resultado", "error");
                //enviar.Add("msg", ex.Message);
            }
            return(View(movimiento));
        }
Example #2
0
        public ActionResult GetDetalleSolicitudAutorizada(int pid_movimiento)
        {
            JArray  jArray = new JArray();
            JObject enviar = new JObject();

            try
            {
                EPRTA_MOVIMIENTO movimiento = unitOfWork.MovimientoRepository.GetById(pid_movimiento);
                var stock = unitOfWork.ArticuloBodegaRepository.GetAll();
                var tmp   = (from p in movimiento.EPRTA_MOVIMIENTO_DETALLE
                             //join st in stock on p.ID_ITEM equals st.ID_ITEM  into pst from st in pst.DefaultIfEmpty()
                             join st in stock on new { id_bodega = movimiento.ID_BODEGA,
                                                       id_item = p.ID_ITEM } equals
                             new { id_bodega = st.ID_BODEGA, id_item = st.ID_ITEM }
                             into pst
                             from st in pst.DefaultIfEmpty()
                             select new
                             { CODIGO = p.EPRTA_ITEM.CODIGO,
                             ITEM = p.EPRTA_ITEM.DESCRIPCION,
                             CANTIDAD = p.CANTIDAD_MOVIMIENTO,
                             MEDIDA = p.EPRTA_ITEM.EPRTA_MEDIDA.NOMBRE,
                             STOCK_ACTUAL = st.CANTIDAD_ACTUAL,
                             COSTO_ACTUAL = st.COSTO_PROMEDIO,
                             ID_ITEM = p.ID_ITEM }).ToList();
                enviar.Add("resultado", "success");
                enviar.Add("data", JArray.FromObject(tmp));
            }
            catch (Exception ex)
            {
                logger.Error(ex, ex.Message);
                enviar.Add("resultado", "error");
                enviar.Add("msg", ex.Message);
            }
            return(Content(enviar.ToString(), "application/json"));
        }
Example #3
0
        public FileResult ViewPDF(int?id)
        {
            Stream         stream         = null;
            var            nombreArchivo  = "";
            ReportDocument reportDocument = new ReportDocument();

            byte[] pdfByte = null;
            try
            {
                EPRTA_MOVIMIENTO                  solicitud    = unitOfWork.MovimientoRepository.GetById(id);
                EntitiesProveduria                db           = new EntitiesProveduria();
                SqlConnectionStringBuilder        builderVenta = new SqlConnectionStringBuilder(db.Database.Connection.ConnectionString);
                SP_REQUISICION_BODEGATableAdapter tableAdapter = new SP_REQUISICION_BODEGATableAdapter();
                object    objetos    = new object();
                DataTable dataTable  = tableAdapter.GetData(id, out objetos);
                String    pathReport = Path.Combine(HttpRuntime.AppDomainAppPath, "Reports\\Cr_Requisicion_Bodega.rpt");

                reportDocument.Load(pathReport);
                reportDocument.SetDataSource(dataTable);


                reportDocument.SetDatabaseLogon(builderVenta.UserID, builderVenta.Password);

                stream        = reportDocument.ExportToStream(CrystalDecisions.Shared.ExportFormatType.PortableDocFormat);
                pdfByte       = ReadFully(stream);
                nombreArchivo = "REQUISICION DE BODEGA ";
                Response.AddHeader("content-disposition", "inline; title='';" + "filename=" + nombreArchivo + ".pdf");
            }
            catch (Exception ex)
            {
                logger.Error(ex, ex.Message);
            }
            finally
            {
                if (reportDocument != null)
                {
                    if (reportDocument.IsLoaded)
                    {
                        reportDocument.Close();
                        reportDocument.Dispose();
                    }
                }
            }
            return(File(pdfByte, MediaTypeNames.Application.Pdf));
        }
Example #4
0
        public ActionResult Movimiento(int id)
        {
            //JArray jArray = new JArray();
            //JObject enviar = new JObject();
            EPRTA_MOVIMIENTO movimiento = null;

            string[] arrTiposOperacion = new string[] { "I", "E" };
            List <EPRTA_TIPO_MOVIMIENTO> ltipo_movimiento = unitOfWork.TipoMovimientoRepository.GetAll().Where(p => arrTiposOperacion.Contains(p.INGRESO_EGRESO) && p.ESTADO == "A").ToList();

            ViewBag.ltipo_movimiento = ltipo_movimiento;
            try
            {
                if (id > 0)
                {
                    var empleados = (from e in unitOfWork.EmpleadoRepository.GetAll() select e);
                    movimiento = unitOfWork.MovimientoRepository.GetById(id);
                    ViewBag.usuario_solicita = (string)(from p in empleados where p.USUARIO == movimiento.USUARIO_SOLICITA select p.EMPLEADO).FirstOrDefault();
                    ViewBag.usuario_aprueba  = movimiento.USUARIO_APRUEBA != null ? (from p in empleados where p.USUARIO == movimiento.USUARIO_APRUEBA select p.EMPLEADO).FirstOrDefault() : null;
                    ViewBag.usuario_autoriza = movimiento.USUARIO_AUTORIZA != null ? (from p in empleados where p.USUARIO == movimiento.USUARIO_AUTORIZA select p.EMPLEADO).FirstOrDefault() : null;
                    //ViewBag.departamento_solicitud = unitOfWork.DepartamentoRepository.GetById(movimiento.ID_DEPARTAMENTO_SOLICITA).DESCRIPCION;
                    ViewBag.direccion_solicitud = unitOfWork.DireccionRepository.GetById(movimiento.ID_DIRECCION_SOLICITA).DESCRIPCION;
                }
                else
                {
                    movimiento        = new EPRTA_MOVIMIENTO();
                    movimiento.ESTADO = "S";
                    movimiento.ID_DIRECCION_SOLICITA = Convert.ToByte(Session["id_direccion"]);
                    ViewBag.direccion_solicitud      = Session["direccion"];
                }
            }
            catch (Exception ex)
            {
                logger.Error(ex, ex.Message);
            }
            return(View(movimiento));
        }
Example #5
0
        public ActionResult Grabar(EPRTA_MOVIMIENTO pmovimiento, bool pregistro_nuevo)
        {
            string  msgErr  = "";
            JObject retorno = new JObject();

            if (pregistro_nuevo)
            {
                try
                {
                    EPRTA_MOVIMIENTO movimiento = new EPRTA_MOVIMIENTO();
                    movimiento.OBSERVACION           = pmovimiento.OBSERVACION.ToUpper();
                    movimiento.USUARIO_SOLICITA      = Session["usuario"].ToString();
                    movimiento.FECHA_SOLICITUD       = DateTime.Now;
                    movimiento.ESTADO                = "S";
                    movimiento.ID_DIRECCION_SOLICITA = Convert.ToByte(Session["id_direccion"].ToString());
                    movimiento.ANIO = (short)DateTime.Now.Year;
                    movimiento.ID_TIPO_MOVIMIENTO = 12;
                    movimiento.ID_BODEGA          = 1;

                    msgErr = "[Intentando obtener secuencia] ";
                    EPRTA_SECUENCIA secuencia = unitOfWork.SecuenciaRepository.GetAll().Where(p => p.ID_TIPO_MOVIMIENTO == 12 && p.ANIO == movimiento.ANIO).FirstOrDefault();
                    movimiento.NUMERO_MOVIMIENTO = (int)secuencia.SECUENCIA;
                    msgErr = "";
                    foreach (EPRTA_MOVIMIENTO_DETALLE detalle in pmovimiento.EPRTA_MOVIMIENTO_DETALLE)
                    {
                        detalle.ESTADO = "A";
                        movimiento.EPRTA_MOVIMIENTO_DETALLE.Add(detalle);
                    }
                    secuencia.SECUENCIA++;
                    msgErr = "[Intentando grabar en Base de datos] ";
                    unitOfWork.MovimientoRepository.Insert(movimiento);
                    unitOfWork.SecuenciaRepository.Update(secuencia);
                    unitOfWork.Save();
                    retorno.Add("resultado", "success");
                    retorno.Add("data", null);
                }
                catch (Exception ex)
                {
                    retorno.Add("resultado", "error");
                    retorno.Add("data", null);
                    retorno.Add("msg", msgErr + ex.ToString());
                    logger.Error(ex, ex.Message);
                }
            }
            else //Registro a modificar
            {
                try
                {
                    EPRTA_MOVIMIENTO movimiento = unitOfWork.MovimientoRepository.GetById(pmovimiento.ID_MOVIMIENTO);
                    movimiento.OBSERVACION = pmovimiento.OBSERVACION;
                    if (pmovimiento.ESTADO == "A")
                    {
                        movimiento.ESTADO             = "A";
                        movimiento.USUARIO_AUTORIZA   = Session["usuario"].ToString();
                        movimiento.FECHA_AUTORIZACION = DateTime.Now;
                    }
                    else if (pmovimiento.ESTADO == "S")
                    {
                        movimiento.ESTADO             = "S";
                        movimiento.USUARIO_AUTORIZA   = null;
                        movimiento.FECHA_AUTORIZACION = null;
                    }


                    foreach (EPRTA_MOVIMIENTO_DETALLE detalle in pmovimiento.EPRTA_MOVIMIENTO_DETALLE)
                    {
                        if (detalle.ID_DETALLE == 0) //Si no tiene un id no existe en la base y se tiene que registrar
                        {
                            detalle.ID_MOVIMIENTO    = movimiento.ID_MOVIMIENTO;
                            detalle.EPRTA_MOVIMIENTO = movimiento;
                            detalle.ESTADO           = "A";
                            movimiento.EPRTA_MOVIMIENTO_DETALLE.Add(detalle);
                        }
                        else
                        {
                            if (detalle.ESTADO == "E" && detalle.ID_DETALLE > 0)  //Si tiene un id se busca en la base para eliminarlo
                            {
                                //EPRTA_MOVIMIENTO_DETALLE registro_eliminar = unitOfWork.MovimientoDetalleRepository.GetById(detalle.ID_DETALLE);
                                unitOfWork.MovimientoDetalleRepository.Delete(detalle.ID_DETALLE);
                            }
                            else
                            {
                                movimiento.EPRTA_MOVIMIENTO_DETALLE.Where(p => p.ID_DETALLE == detalle.ID_DETALLE).FirstOrDefault().CANTIDAD_MOVIMIENTO = detalle.CANTIDAD_MOVIMIENTO;
                            }
                        }
                    }
                    unitOfWork.MovimientoRepository.Update(movimiento);
                    unitOfWork.Save();
                    retorno.Add("resultado", "success");
                    retorno.Add("data", null);
                    retorno.Add("mensaje", "");
                }
                catch (Exception ex)
                {
                    retorno.Add("resultado", "error");
                    retorno.Add("data", null);
                    retorno.Add("mensaje", ex.ToString());
                    logger.Error(ex, ex.Message);
                }
            }
            return(Content(retorno.ToString(), "application/json"));
        }
Example #6
0
        private void ActualizaStock(EPRTA_MOVIMIENTO pmovimiento, string pingreso_egreso)
        {
            try  {
                foreach (EPRTA_MOVIMIENTO_DETALLE detalle in pmovimiento.EPRTA_MOVIMIENTO_DETALLE)
                {
                    //Obtengo el registro del item
                    EPRTA_ITEM item = unitOfWork.ItemRepository.GetById(detalle.ID_ITEM);

                    //Obtengo el registro del stock del item
                    EPRTA_ARTICULO_BODEGA itemStock = unitOfWork.ArticuloBodegaRepository.GetAll().Where(p => p.ID_BODEGA == pmovimiento.ID_BODEGA && p.ID_ITEM == detalle.ID_ITEM).FirstOrDefault();
                    if (pingreso_egreso == "E")
                    {
                        //Actualizo el stock y el costo unitario
                        itemStock.CANTIDAD_ACTUAL -= detalle.CANTIDAD_MOVIMIENTO;
                        unitOfWork.ArticuloBodegaRepository.Update(itemStock);

                        //Actualizo la fecha del ultimo egreso
                        item.FECHA_ULTIMO_EGRESO = DateTime.Now;
                        unitOfWork.ItemRepository.Update(item);
                    }
                    else if (pingreso_egreso == "I")
                    {
                        //Calcular nuevo costo promedio
                        decimal nuevo_costo_promedio = 0;
                        decimal nuevo_cantidad_stock = 0;

                        if (itemStock == null)
                        {
                            nuevo_costo_promedio = Convert.ToDecimal(detalle.COSTO_MOVIMIENTO);
                        }
                        else
                        {
                            decimal costo_total_actual     = Convert.ToDecimal(itemStock.CANTIDAD_ACTUAL) * Convert.ToDecimal(itemStock.COSTO_PROMEDIO);
                            decimal costo_total_movimiento = Convert.ToDecimal(detalle.COSTO_MOVIMIENTO) * Convert.ToDecimal(detalle.CANTIDAD_MOVIMIENTO);
                            nuevo_cantidad_stock = Convert.ToDecimal(itemStock.CANTIDAD_ACTUAL) + Convert.ToDecimal(detalle.CANTIDAD_MOVIMIENTO);
                            nuevo_costo_promedio = Math.Round((costo_total_actual + costo_total_movimiento) / nuevo_cantidad_stock, 3);
                        }

                        //Si no tiene registro de stock
                        if (itemStock == null)
                        {
                            itemStock                  = new EPRTA_ARTICULO_BODEGA();
                            itemStock.ID_ITEM          = detalle.ID_ITEM;
                            itemStock.ID_BODEGA        = pmovimiento.ID_BODEGA;
                            itemStock.CANTIDAD_MAXIMA  = 0;
                            itemStock.CANTIDAD_ACTUAL  = detalle.CANTIDAD_MOVIMIENTO;
                            itemStock.CANTIDAD_INICIO  = detalle.CANTIDAD_MOVIMIENTO;
                            itemStock.CANTIDAD_CRITICA = 0;
                            itemStock.CANTIDAD_MINIMA  = 0;
                            itemStock.CANTIDAD_BAJA    = 0;
                            itemStock.COSTO_PROMEDIO   = nuevo_costo_promedio;
                            unitOfWork.ArticuloBodegaRepository.Insert(itemStock);
                        }
                        else   //Si ya tiene registro de stock, se procede a acutalizar valores
                        {
                            itemStock.COSTO_PROMEDIO  = nuevo_costo_promedio;
                            itemStock.CANTIDAD_ACTUAL = nuevo_cantidad_stock;
                            //Actualizo la cantidad maxima

                            if (itemStock.CANTIDAD_MAXIMA < itemStock.CANTIDAD_ACTUAL)
                            {
                                itemStock.CANTIDAD_MAXIMA = itemStock.CANTIDAD_ACTUAL;
                            }
                            unitOfWork.ArticuloBodegaRepository.Update(itemStock);
                        }

                        //Actualizo la fecha del ultimo ingreso y el historial del costo
                        item.FECHA_ULTIMO_INGRESO = DateTime.Now;
                        item.COSTO_ANTERIOR       = item.COSTO_ACTUAL;
                        item.COSTO_ACTUAL         = nuevo_costo_promedio;
                        unitOfWork.ItemRepository.Update(item);
                    }
                }
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
Example #7
0
        public ActionResult Grabar(EPRTA_MOVIMIENTO pmovimiento)
        {
            string  msgErr  = "";
            JObject retorno = new JObject();

            try
            {
                //EPRTA_MOVIMIENTO movimiento = new EPRTA_MOVIMIENTO();
                pmovimiento.USUARIO_SOLICITA = Session["usuario"].ToString();
                pmovimiento.FECHA_SOLICITUD  = DateTime.Now;
                pmovimiento.USUARIO_APRUEBA  = Session["usuario"].ToString();
                pmovimiento.FECHA_APROBACION = DateTime.Now;
                pmovimiento.ESTADO           = "D";
                pmovimiento.ANIO             = (short)DateTime.Now.Year;
                pmovimiento.ID_BODEGA        = Byte.Parse(Session["bodega_id"].ToString());
                foreach (EPRTA_MOVIMIENTO_DETALLE detalle in pmovimiento.EPRTA_MOVIMIENTO_DETALLE)
                {
                    detalle.ESTADO = "A";
                    EPRTA_ARTICULO_BODEGA itemstock = unitOfWork.ArticuloBodegaRepository.GetAll().Where(p => p.ID_ITEM == detalle.ID_ITEM && p.ID_BODEGA == Byte.Parse(Session["bodega_id"].ToString())).FirstOrDefault();
                    if (pmovimiento.ID_TIPO_MOVIMIENTO == (int)EnumTipoMovimiento.REQUISICION_BODEGA || pmovimiento.ID_TIPO_MOVIMIENTO == (int)EnumTipoMovimiento.AJUSTE_DE_BODEGA_POR_EGRESO)
                    {
                        if (detalle.CANTIDAD_MOVIMIENTO > itemstock.CANTIDAD_ACTUAL)
                        {
                            throw new ArgumentException("El item " + itemstock.EPRTA_ITEM.DESCRIPCION + " no tiene stock suficiente, y no se puede rebajar");
                        }
                    }

                    detalle.COSTO_ACTUAL = itemstock == null ? 0 : itemstock.COSTO_PROMEDIO;
                    detalle.STOCK_ACTUAL = itemstock == null ? 0 : itemstock.CANTIDAD_ACTUAL;
                    if (pmovimiento.ID_TIPO_MOVIMIENTO != 4)
                    {
                        detalle.COSTO_MOVIMIENTO = itemstock.COSTO_PROMEDIO;
                    }
                }
                msgErr = "Intentado obtener secuencia";
                EPRTA_SECUENCIA secuencia = unitOfWork.SecuenciaRepository.GetAll().Where(p => p.ID_TIPO_MOVIMIENTO == pmovimiento.ID_TIPO_MOVIMIENTO && p.ANIO == pmovimiento.ANIO).FirstOrDefault();
                pmovimiento.NUMERO_MOVIMIENTO = (int)secuencia.SECUENCIA;
                secuencia.SECUENCIA++;
                msgErr = "Intentando grabar en base de datos";
                unitOfWork.MovimientoRepository.Insert(pmovimiento);
                unitOfWork.SecuenciaRepository.Update(secuencia);
                //EPRTA_MOVIMIENTO x = unitOfWork.MovimientoRepository.GetById(movimiento.ID_MOVIMIENTO);
                string ingreso_egreso = unitOfWork.TipoMovimientoRepository.GetById(pmovimiento.ID_TIPO_MOVIMIENTO).INGRESO_EGRESO;
                ActualizaStock(pmovimiento, ingreso_egreso);
                //Si es egreso se busca la solicitud de requisicion para actualizar el estado
                EPRTA_MOVIMIENTO movimiento_relacionado = null;
                if (pmovimiento.ID_MOVIMIENTO_RELACION != null)
                {
                    movimiento_relacionado                  = unitOfWork.MovimientoRepository.Where(x => x.ID_MOVIMIENTO == pmovimiento.ID_MOVIMIENTO_RELACION).FirstOrDefault();
                    movimiento_relacionado.ESTADO           = "D";
                    movimiento_relacionado.FECHA_APROBACION = DateTime.Now;
                    movimiento_relacionado.USUARIO_APRUEBA  = Session["usuario"].ToString();
                    unitOfWork.MovimientoRepository.Update(movimiento_relacionado);
                }
                unitOfWork.Save();
                pmovimiento = unitOfWork.MovimientoRepository.GetById(pmovimiento.ID_MOVIMIENTO);

                retorno.Add("resultado", "success");
                retorno.Add("data", pmovimiento.ID_MOVIMIENTO);
                retorno.Add("mensaje", "");
            }
            catch (Exception ex)
            {
                retorno.Add("resultado", "error");
                retorno.Add("data", null);
                retorno.Add("mensaje", "[" + msgErr + "] " + ex.ToString());
                logger.Error(ex, ex.Message);
            }
            return(Content(retorno.ToString(), "application/json"));
        }