예제 #1
0
        /// <summary>
        /// Getses the specified request.
        /// </summary>
        /// <param name="request">The request.</param>
        /// <returns>InventoryItemResponse.</returns>
        public InventoryItemResponse GetInventoryItems(InventoryItemRequest request)
        {
            var response = new InventoryItemResponse();

            if (request.LoadOptions.Contains("InventoryItems"))
            {
                response.InventoryItems = InventoryItemDao.GetInventoryItemList();
            }
            if (request.LoadOptions.Contains("InventoryItem"))
            {
                response.InventoryItem = InventoryItemDao.GetInventoryItem(request.InventoryItemId);
            }
            //dành cho phần vật tư
            if (request.LoadOptions.Contains("ItemStock"))
            {
                response.InventoryItems = InventoryItemDao.GetInventoryItemListByStock(request.ItemStockId, request.RefId, request.PostDate, request.CurrencyCode);
            }

            if (request.LoadOptions.Contains("ItemStockInput"))
            {
                response.InventoryItems = InventoryItemDao.GetInventoryItemListByStock(request.ItemStockId);
            }

            return(response);
        }
예제 #2
0
        public async Task <ActionResult <InventoryItemDTO> > CreateInventoryItem([FromBody] InventoryItemRequest InventoryItemRequest)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            return(await _inventoryService.CreateInventoryItem(InventoryItemRequest));
        }
예제 #3
0
        public async Task <IActionResult> UpdateInventoryItem([FromRoute] Guid id, [FromBody] InventoryItemRequest InventoryItem)
        {
            if (!ModelState.IsValid)

            {
                return(BadRequest(ModelState));
            }

            return(await _inventoryService.UpdateInventoryItem(id, InventoryItem));
        }
        public static bool PushProduct(InventoryItemRequest prod)
        {
            var requestUrl = $"/SupplierInventoryService/rest/AddItem/{Key}";
            var request    = new RestRequest(requestUrl, Method.POST);

            request.AddJsonBody(prod);

            var response = Client.Execute(request);

            return(response.StatusCode == HttpStatusCode.OK);
        }
        public static bool PushInventoryItem(InventoryItemRequest item)
        {
            var requestUrl = $"/SupplierInventoryService/rest/{(item.Id > 0 ? "Update" : "Add")}Item/{Key}";

            var request = new RestRequest(requestUrl, Method.POST);

            request.AddJsonBody(item);

            var response = Client.Execute(request);

            return(response.StatusCode == HttpStatusCode.OK);
        }
예제 #6
0
        public async Task <IActionResult> UpdateInventoryItem(Guid id, InventoryItemRequest InventoryItemRequest)
        {
            if (id == Guid.Empty || id == null)
            {
                _logger.LogError("InventoryService::UpdateInventoryItem. Error: id must be a valid Guid.");
                return(new BadRequestObjectResult(new { statuscode = 400, message = "id must be a valid Guid." }));
            }

            if (InventoryItemRequest == null)
            {
                _logger.LogError("InventoryService::UpdateInventoryItem. Error: Unable to update Inventory item. Inventory item must be provided..");
                return(new BadRequestObjectResult(new { statuscode = 400, message = "Inventory item must be provided." }));
            }

            var InventoryItem = await _context.InventoryItem.FindAsync(id);

            if (InventoryItem == null)
            {
                _logger.LogError($"InventoryService::UpdateInventoryItem. Error. Unable to find Inventory item with id {id}.");
                return(new NotFoundObjectResult($"InventoryService::UpdateInventoryItem. Error. Unable to find Inventory item with id {id}."));
            }

            InventoryItem.Name          = InventoryItemRequest.Name;
            InventoryItem.Description   = InventoryItemRequest.Description;
            InventoryItem.Price         = InventoryItemRequest.Price;
            InventoryItem.DeliveryPrice = InventoryItemRequest.DeliveryPrice;

            try
            {
                await _context.SaveChangesAsync();
            }
            catch (DbUpdateConcurrencyException ex) when(!InventoryItemExists(id))
            {
                _logger.LogError($"InventoryService::UpdateInventoryItem. Error. Unable to find Inventory item with id {id}. Exception: {ex.Message}", ex);
            }
            catch (Exception ex)
            {
                _logger.LogError($"InventoryService::UpdateInventoryItem. Exception: {ex.Message}", ex);
            }

            return(new NoContentResult());
        }
예제 #7
0
        public async Task <ActionResult <InventoryItemDTO> > CreateInventoryItem(InventoryItemRequest InventoryItemRequest)
        {
            if (InventoryItemRequest == null)
            {
                _logger.LogError("InventoryService::CreateInventoryItem. Error: Unable to create Inventory item. A new Inventory item must be provided.");
                return(new BadRequestObjectResult(new { statuscode = 400, message = "A new Inventory item must be provided." }));
            }

            var InventoryItem = new InventoryItem()
            {
                Id            = new Guid(),
                Name          = InventoryItemRequest.Name,
                Description   = InventoryItemRequest.Description,
                Price         = InventoryItemRequest.Price,
                DeliveryPrice = InventoryItemRequest.DeliveryPrice
            };

            try
            {
                _context.InventoryItem.Add(InventoryItem);
                await _context.SaveChangesAsync();
            }
            catch (Exception ex)
            {
                _logger.LogError($"InventoryService::CreateInventoryItem. Exception: {ex.Message}", ex);
            }

            InventoryItem = await _context.InventoryItem.FindAsync(InventoryItem.Id);

            if (InventoryItem == null)
            {
                _logger.LogError("InventoryService::CreateInventoryItem. Error creating a new Inventory item.");
                return(new NotFoundResult());
            }
            return(new OkObjectResult(InventoryItemToDTO(InventoryItem)));
        }
예제 #8
0
        private static InventoryItemRequest AddOrUpdateSupplierItem(ProductInventory product, List <InventoryItemResponse> existingInventory, ref List <PrivateCategory> existingCategories)
        {
            Trace.TraceInformation(product.Description);

            var request = new InventoryItemRequest
            {
                Description       = product.Description ?? "",
                PrivateSKU        = product.Id,
                Inactive          = product.Inactive,
                QuantityAvailable = product.QuantityAvailable >= 0 ? product.QuantityAvailable : 0,
                RetailSell        = product.RetailSell
            };

            bool updateCategories = Settings.GetUpdateCategories();
            //lets check if this item already exists, if so just update qty, else
            var existing         = existingInventory.FirstOrDefault(s => s.PrivateSKU == product.Id);
            var existingCategory = existingCategories.FirstOrDefault(s => s?.Name == product.Category);

            var updateExistingProducts = Settings.GetUpdateExistingProducts();

            if (existing != null && !updateExistingProducts)
            {
                return(null);
            }

            // Add
            if (existing == null)
            {
                if (existingCategory == null)
                {
                    try
                    {
                        existingCategory = WebServiceHelper.PushCategory(new PrivateCategory {
                            Name = product.Category
                        });
                        existingCategories.Add(existingCategory);
                    }
                    catch (Exception ex)
                    {
                        Logger.Instance.Error("Product push - adding category" + Environment.NewLine +
                                              JsonConvert.SerializeObject(product.Category) + Environment.NewLine +
                                              ex.Message + Environment.NewLine + ex.StackTrace);
                        throw;
                    }
                }
            }
            // Update
            else
            {
                if (existingCategory == null && updateCategories)
                {
                    try
                    {
                        existingCategory = WebServiceHelper.PushCategory(new PrivateCategory {
                            Name = product.Category
                        });
                        existingCategories.Add(existingCategory);
                    }
                    catch (Exception ex)
                    {
                        Logger.Instance.Error("Product push - updating category" + Environment.NewLine +
                                              JsonConvert.SerializeObject(product.Category) + Environment.NewLine +
                                              ex.Message + Environment.NewLine + ex.StackTrace);
                        throw;
                    }
                }
            }


            if (existingCategory != null && (updateCategories || existing == null))
            {
                request.CategoryId = existingCategory.Id;
            }
            else if (existing != null)
            {
                request.CategoryId = existing.CategoryId;
            }

            request.NetPrice                  = product.NetPrice;
            request.OpenSizeDescription       = product.OpenSizeDescription ?? "";
            request.MasterQuantityDescription = product.MasterQuantityDescription ?? "";
            request.Comments                  = product.Comments ?? "";
            request.DirectDeliveryCode        = product.DirectDeliveryCode ?? "";
            request.DirectDeliveryMinQuantity = product.DirectDeliveryMinQuantity;
            request.FreightFactor             = product.FreightFactor;
            request.IsDirectDelivery          = product.IsDirectDelivery;
            request.MasterQuantityDescription = product.MasterQuantityDescription ?? "";
            request.MinOrderSpring            = product.MinOrderSpring;
            request.MinOrderSummer            = product.MinOrderSummer;
            request.SlaveQuantityDescription  = product.SlaveQuantityDescription ?? "";
            request.SlaveQuantityPerMaster    = product.SlaveQuantityPerMaster;
            request.SuggestedRetailPrice      = product.SuggestedRetailPrice;
            request.UPC = product.UPC;

            if (existing != null)
            {
                request.Id = existing.Id;
            }

            if (product.ProductFeatures != null && product.ProductFeatures.Any())
            {
                request.ProductFeatures = product.ProductFeatures
                                          .Where(p => p.Key != null && p.Value != null)
                                          .Select(p => new ProductFeatureRequest
                {
                    FeatureGroupName = p.Key,
                    Value            = p.Value == null ? "" : p.Value.ToString(),
                    FeatureId        = p.Key + "_" + product.Id
                }).ToList();
            }


            return(request);
        }
예제 #9
0
        /// <summary>
        /// Setses the specified request.
        /// </summary>
        /// <param name="request">The request.</param>
        /// <returns>InventoryItemResponse.</returns>
        public InventoryItemResponse SetInventoryItems(InventoryItemRequest request)
        {
            var response = new InventoryItemResponse();
            var mapper   = request.InventoryItem;

            if (request.Action != PersistType.Delete)
            {
                if (!mapper.Validate())
                {
                    foreach (string error in mapper.ValidationErrors)
                    {
                        response.Message += error + Environment.NewLine;
                    }
                    response.Acknowledge = AcknowledgeType.Failure;
                    return(response);
                }
            }
            try
            {
                if (request.Action == PersistType.Insert)
                {
                    var lstInventoryItem = InventoryItemDao.GetInventoryItemByCode(mapper.InventoryItemCode);
                    if (lstInventoryItem.Count > 0)
                    {
                        response.Message = "Bạn nhập mã đã tồn tại " + mapper.InventoryItemCode + "!";
                    }
                    else
                    {
                        AutoNumberListDao.UpdateIncreateAutoNumberListByValue("InventoryItem");
                        mapper.InventoryItemId = InventoryItemDao.InsertInventoryItem(mapper);
                        response.Message       = null;
                    }
                }
                else if (request.Action == PersistType.Update)
                {
                    var objInventoryItem = InventoryItemDao.GetInventoryItemByCode(mapper.InventoryItemCode).FirstOrDefault();
                    if (objInventoryItem == null)
                    {
                        response.Message = InventoryItemDao.UpdateInventoryItem(mapper);
                    }
                    else
                    {
                        if (objInventoryItem.InventoryItemId == mapper.InventoryItemId)
                        {
                            response.Message = InventoryItemDao.UpdateInventoryItem(mapper);
                        }
                        else
                        {
                            response.Message = "Bạn nhập mã đã tồn tại " + mapper.InventoryItemCode + "!";
                        }
                    }
                }

                else
                {
                    response.Message = InventoryItemDao.DeleteInventoryItem(request.InventoryItemId);
                }
            }
            catch (Exception ex)
            {
                response.Acknowledge = AcknowledgeType.Failure;
                response.Message     = ex.Message;
                return(response);
            }

            response.InventoryItemId = mapper != null ? mapper.InventoryItemId : 0;
            response.Acknowledge     = response.Message != null ? AcknowledgeType.Failure : AcknowledgeType.Success;
            return(response);
        }
예제 #10
0
        private static InventoryItemRequest AddOrUpdateSupplierItem(ProductInventory product, List <InventoryItemResponse> existingInventory, ref List <PrivateCategory> existingCategories)
        {
            Trace.TraceInformation(product.Description);

            var request = new InventoryItemRequest
            {
                Description       = product.Description ?? "",
                PrivateSKU        = product.Id,
                Inactive          = product.Inactive,
                QuantityAvailable = product.QuantityAvailable >= 1 ? product.QuantityAvailable : 1
            };

            bool updateCategories = Settings.GetUpdateCategories();
            //lets check if this item already exists, if so just update qty, else
            var existing         = existingInventory.FirstOrDefault(s => s.PrivateSKU == product.Id);
            var existingCategory = existingCategories.FirstOrDefault(s => s?.Name == product.Category);

            var updateExistingProducts = Settings.GetUpdateExistingProducts();

            if (existing != null && !updateExistingProducts)
            {
                return(null);
            }

            // Add
            if (existing == null)
            {
                if (existingCategory == null)
                {
                    existingCategory = WebServiceHelper.PushCategory(new PrivateCategory {
                        Name = product.Category
                    });
                    existingCategories.Add(existingCategory);
                }
            }
            // Update
            else
            {
                if (existingCategory == null && updateCategories)
                {
                    existingCategory = WebServiceHelper.PushCategory(new PrivateCategory {
                        Name = product.Category
                    });
                    existingCategories.Add(existingCategory);
                }
            }


            if (existingCategory != null && (updateCategories || existing == null))
            {
                request.CategoryId = existingCategory.Id;
            }
            else if (existing != null)
            {
                request.CategoryId = existing.CategoryId;
            }

            request.NetPrice                  = product.NetPrice;
            request.OpenSizeDescription       = product.OpenSizeDescription ?? "";
            request.MasterQuantityDescription = product.MasterQuantityDescription ?? "";
            request.Comments                  = product.Comments ?? "";
            request.DirectDeliveryCode        = product.DirectDeliveryCode ?? "";
            request.DirectDeliveryMinQuantity = product.DirectDeliveryMinQuantity;
            request.FreightFactor             = product.FreightFactor;
            request.IsDirectDelivery          = product.IsDirectDelivery;
            request.MasterQuantityDescription = product.MasterQuantityDescription ?? "";
            request.MinOrderSpring            = product.MinOrderSpring;
            request.MinOrderSummer            = product.MinOrderSummer;
            request.SlaveQuantityDescription  = product.SlaveQuantityDescription ?? "";
            request.SlaveQuantityPerMaster    = product.SlaveQuantityPerMaster;
            request.SuggestedRetailPrice      = product.SuggestedRetailPrice;
            request.UPC = product.UPC;

            if (existing != null)
            {
                request.Id = existing.Id;
            }

            return(request);
        }