public IList <DetailAssetInRequestDto> GetEditDetails(Guid inRequestId, Guid cellarId)
        {
            IList <DetailAssetInRequestDto> detail = new List <DetailAssetInRequestDto>();
            var @entity = _inRequestManager.GetEditDetails(inRequestId).ToList();

            if (@entity == null)
            {
                throw new UserFriendlyException("No se pudo encontrar la Ubicación, fue borrada o no existe.");
            }
            int index = 0;

            foreach (var item in @entity)
            {
                DetailAssetInRequestDto detailItem = new DetailAssetInRequestDto();
                detailItem.Asset            = item.Asset;
                detailItem.NameAsset        = item.NameAsset;
                detailItem.InRequestId      = item.InRequestId;
                detailItem.StockAsset       = item.StockAsset;
                detailItem.AssetId          = item.AssetId;
                detailItem.AssetCode        = item.Asset.Code;
                detailItem.Price            = item.Price.ToString();
                detailItem.Index            = index;
                detailItem.Update           = 1;
                detailItem.Saved            = 1;
                detailItem.Delete           = 0;
                detailItem.ErrorCode        = 0;
                detailItem.ErrorDescription = "";
                detail.Add(detailItem);
                index++;
            }
            return(detail);
        }
        public ActionResult AddAndRenderListDetallesOrden(IList <string> jsonDetallesList, Guid?assetId, string nameAsset, double?stockAsset, string price)
        {
            try
            {
                IEnumerable <DetailAssetInRequestDto> detalleList = new JavaScriptSerializer().Deserialize <IList <DetailAssetInRequestDto> >(jsonDetallesList[0]);

                if (assetId == null)
                {
                    return(Json(new { Error = -1, Message = "Por Favor seleccione el artículo correctamente." }));
                }

                if (stockAsset == null || stockAsset < 0)
                {
                    return(Json(new { Error = -1, Message = "Por Favor indique la cantidad del artículo correctamente." }));
                }



                if (detalleList.Any(item => item.AssetId == assetId && item.Delete == 0))
                {
                    return(Json(new { Error = -1, Message = "Ya existe una salida para el artículo" + nameAsset + " por favor edite correctamente el detalle." }));
                }

                DetailAssetInRequestDto detalle = new DetailAssetInRequestDto();
                detalle.AssetId   = (Guid)assetId;
                detalle.NameAsset = nameAsset;
                if (stockAsset > 0.0)
                {
                    detalle.StockAsset = (double)stockAsset;
                }
                else
                {
                    return(Json(new { Error = -1, Message = "Por Favor indique la cantidad del artículo correctamente." }));
                }
                detalle.Price            = price;
                detalle.Saved            = 0;
                detalle.Update           = 1;
                detalle.Delete           = 0;
                detalle.ErrorDescription = "";
                detalle.ErrorCode        = 0;

                IList <DetailAssetInRequestDto> newList = new List <DetailAssetInRequestDto>();
                int index = 0;
                foreach (var item in detalleList)
                {
                    item.Index = index;
                    newList.Add(item);
                    index++;
                }
                detalle.Index = index;
                newList.Add(detalle);
                return(PartialView("_tableDetails", newList));
            }
            catch (Exception)
            {
                return(Json(new { Error = -1, Message = "Error al Agregar/Modificar la Solicitud" }));
            }
        }
        public ActionResult AddListDetallesOrden(IList <string> jsonDetallesList, string code)
        {
            try
            {
                IEnumerable <DetailAssetInRequestDto> detalleList = new JavaScriptSerializer().Deserialize <IList <DetailAssetInRequestDto> >(jsonDetallesList[0]);
                IList <DetailAssetInRequestDto>       newList     = new List <DetailAssetInRequestDto>();
                var asset = _inRequestService.GetAssetBarCode(code, _currentUser.CompanyName);

                if (asset == null)
                {
                    return(Json(new { Error = -1, Message = "No se ha encontrado un artículo con este código de barra" }));
                }

                // var stock = _inRequestService.GetStockAsset(asset.Id, _currentUser.CompanyName, cellarId);


                bool cambio = false;
                if (detalleList.Any(item => item.AssetId == asset.Id && item.Delete == 0))
                {
                    cambio = true;
                    int index = 0;
                    foreach (var item in detalleList)
                    {
                        if (item.AssetId == asset.Id)
                        {
                            item.StockAsset = item.StockAsset + 1;
                            //if (item.StockAsset > stock.GetStockItemsQtyBlocked())
                            //  return Json(new { Error = -1, Message = "No hay suficientes artículos en Ubicación seleccionada. Por Favor revise las existencias." });
                        }

                        item.Index = index;
                        newList.Add(item);
                        index++;
                    }
                }


                if (!cambio)
                {
                    DetailAssetInRequestDto detalle = new DetailAssetInRequestDto();
                    detalle.AssetId    = asset.Id;
                    detalle.NameAsset  = asset.Name;
                    detalle.StockAsset = 1;

                    detalle.Price            = asset.Price.ToString();
                    detalle.Saved            = 0;
                    detalle.Update           = 1;
                    detalle.Delete           = 0;
                    detalle.ErrorDescription = "";
                    detalle.ErrorCode        = 0;

                    int index = 0;
                    foreach (var item in detalleList)
                    {
                        item.Index = index;
                        newList.Add(item);
                        index++;
                    }
                    detalle.Index = index;
                    newList.Add(detalle);
                }


                return(PartialView("_tableDetails", newList));
            }
            catch (Exception ex)
            {
                return(Json(new { Error = -1, Message = "Error al Agregar/Modificar la Solicitud" }));
            }
        }