public StoreItemDTO Save(StoreItemDTO entity) { if (entity != null) { if (entity.StoreItemID <= 0) { storeItemRepository.Add(new StoreItem { StoreItemID = entity.StoreItemID, ItemName = entity.ItemName, ItemCost = entity.ItemCost, IsDeleted = false, CreatedDate = DateTime.Now }); } else { var storeItem = storeItemRepository.FindById(entity.StoreItemID); storeItem.ItemName = entity.ItemName; storeItem.ItemCost = entity.ItemCost; storeItem.IsDeleted = entity.IsDeleted; storeItemRepository.Update(storeItem); } } return(entity); }
public StoreItem Add(StoreItem item) { StoreItem old = _storeItemRepository.FindByStoreIdAndItemId(item.StoreId, item.ItemId); if (old == null) { item.Id = Guid.NewGuid(); return(_storeItemRepository.Add(item)); } return(old); }
private async Task <bool> PostToStore(Bill bill, BillType billtype, BillItem billItem, ItemUnit itemUnit, bool rollBack = false) { var inOrOut = int.Parse(EnumHelper.GetDescription(billtype.Type)); var billItemQuantity = inOrOut * billItem.Quantity; if (rollBack) { billItemQuantity = billItemQuantity * -1; } #region storeItemUnit var storeItemUnit = await _storeItemUnitRepo.NativeGetAll().FirstOrDefaultAsync(e => e.StoreId == billItem.StoreId && e.ItemUnitId == billItem.ItemUnitId); if (!rollBack && storeItemUnit == null) // check if not exist => create one { if (billtype.PreventNegativeOutput && billItemQuantity < 0) { return(false); } storeItemUnit = new StoreItemUnit(billItem.StoreId, billItem.ItemUnitId, billItemQuantity); _storeItemUnitRepo.Add(storeItemUnit, false); } else // if exist => update quantity { if (!rollBack && billtype.PreventNegativeOutput && storeItemUnit.Quantity + billItemQuantity < 0) { return(false); } storeItemUnit.Quantity = storeItemUnit.Quantity + billItemQuantity; // if quantity equal zero set end date of this item unit store if (!rollBack && billItemQuantity <= 0) { storeItemUnit.SetEndDateNow(); } _storeItemUnitRepo.Edit(storeItemUnit, false); } #endregion #region storeItem var storeItem = await _storeItemRepo.NativeGetAll().FirstOrDefaultAsync(e => e.StoreId == billItem.StoreId && e.ItemId == itemUnit.ItemId); // if (!itemUnit.IsDefault) { billItemQuantity = billItemQuantity * itemUnit.Factor; } // if (!rollBack && storeItem == null) // check if not exist => create one { storeItem = new StoreItem(billItem.StoreId, itemUnit.ItemId, billItemQuantity); _storeItemRepo.Add(storeItem, false); } else // if exist => update quantity { storeItem.Quantity = storeItem.Quantity + billItemQuantity; // if quantity equal zero set end date of this item unit store if (billItemQuantity <= 0) { storeItem.SetEndDateNow(); } _storeItemRepo.Edit(storeItem, false); } #endregion bill.IsPosted = !rollBack; return(await Task.FromResult(true)); }