public long ReturnItemSold(StoreItemSoldObject itemSold)
        {
            try
            {
                if (itemSold == null || itemSold.StoreItemStockId < 1)
                {
                    return(-2);
                }
                using (var db = _db)
                {
                    var soldItems = db.StoreItemSolds.Where(e => e.StoreItemStockId == itemSold.StoreItemStockId && e.SaleId == itemSold.SaleId).ToList();
                    if (!soldItems.Any())
                    {
                        return(-2);
                    }

                    var myItems = db.StoreItemStocks.Where(i => i.StoreItemStockId == itemSold.StoreItemStockId).ToList();
                    if (!myItems.Any())
                    {
                        return(-2);
                    }

                    var myItem = myItems[0];

                    var orderedItems = db.PurchaseOrderItems.Where(i => i.PurchaseOrderItemId == itemSold.PurchaseOrderItemId).ToList();
                    if (orderedItems.Any())
                    {
                        var orderedItem = orderedItems[0];
                        orderedItem.QuantityInStock += itemSold.ReturnedQuantity;
                        db.Entry(orderedItem).State  = EntityState.Modified;
                        db.SaveChanges();
                    }

                    //update stock accordingly
                    myItem.QuantityInStock          += itemSold.ReturnedQuantity;
                    myItem.TotalQuantityAlreadySold -= itemSold.ReturnedQuantity;

                    db.Entry(myItem).State = EntityState.Modified;
                    db.SaveChanges();

                    //deduct quantity of sold stock accordingly
                    var x = soldItems[0];
                    x.QuantityReturned += itemSold.ReturnedQuantity;
                    db.Entry(x).State   = EntityState.Modified;
                    db.SaveChanges();


                    return(itemSold.StoreItemStockId);
                }
            }
            catch (Exception ex)
            {
                ErrorLogger.LogError(ex.StackTrace, ex.Source, ex.Message);
                return(-2);
            }
        }
示例#2
0
 public int UpdateStoreItemSold(StoreItemSoldObject itemSold)
 {
     try
     {
         return(_itemSoldRepository.UpdateStoreItemSold(itemSold));
     }
     catch (Exception ex)
     {
         ErrorLogger.LogError(ex.StackTrace, ex.Source, ex.Message);
         return(-2);
     }
 }
示例#3
0
 public long AddStoreItemSold(StoreItemSoldObject itemSoldAccount)
 {
     try
     {
         return(_itemSoldRepository.AddStoreItemSold(itemSoldAccount));
     }
     catch (Exception ex)
     {
         ErrorLogger.LogError(ex.StackTrace, ex.Source, ex.Message);
         return(0);
     }
 }
示例#4
0
 public int UpdateStoreItemSold(StoreItemSoldObject itemSold)
 {
     try
     {
         if (itemSold == null)
         {
             return(-2);
         }
         var itemSoldEntity = ModelCrossMapper.Map <StoreItemSoldObject, StoreItemSold>(itemSold);
         if (itemSoldEntity == null || itemSoldEntity.StoreItemSoldId < 1)
         {
             return(-2);
         }
         _repository.Update(itemSoldEntity);
         _uoWork.SaveChanges();
         return(5);
     }
     catch (Exception ex)
     {
         ErrorLogger.LogError(ex.StackTrace, ex.Source, ex.Message);
         return(-2);
     }
 }
示例#5
0
        public long AddStoreItemSold(StoreItemSoldObject itemSold)
        {
            try
            {
                if (itemSold == null)
                {
                    return(-2);
                }

                var itemSoldEntity = ModelCrossMapper.Map <StoreItemSoldObject, StoreItemSold>(itemSold);
                if (itemSoldEntity == null || itemSoldEntity.StoreItemStockId < 1)
                {
                    return(-2);
                }
                var returnStatus = _repository.Add(itemSoldEntity);
                _uoWork.SaveChanges();
                return(returnStatus.StoreItemSoldId);
            }
            catch (Exception ex)
            {
                ErrorLogger.LogError(ex.StackTrace, ex.Source, ex.Message);
                return(0);
            }
        }
 public long ReturnItemSold(StoreItemSoldObject itemSold)
 {
     return(_storeItemStockRepository.ReturnItemSold(itemSold));
 }
 public StoreItemSoldObject UpdateStoreItemStock(StoreItemSoldObject itemSold, out double remainingStockVolume)
 {
     return(_storeItemStockRepository.UpdateStoreItemStock(itemSold, out remainingStockVolume));
 }
        public StoreItemSoldObject UpdateStoreItemStock(StoreItemSoldObject itemSold, out double remainingStockVolume)
        {
            try
            {
                if (itemSold == null)
                {
                    remainingStockVolume = 0;
                    return(new StoreItemSoldObject());
                }
                using (var db = _db)
                {
                    var itemSoldEntity = ModelCrossMapper.Map <StoreItemSoldObject, StoreItemSold>(itemSold);
                    if (itemSoldEntity == null || itemSoldEntity.StoreItemStockId < 1)
                    {
                        remainingStockVolume = 0;
                        return(new StoreItemSoldObject());
                    }

                    var storeSettings = db.StoreSettings.ToList();
                    if (!storeSettings.Any())
                    {
                        remainingStockVolume = 0;
                        return(new StoreItemSoldObject());
                    }

                    //todo: retrieve from web config
                    //var serviceCategory = 3;

                    var remainingVolume = 0.0;
                    var setting         = storeSettings[0];
                    var myItems         = db.StoreItemStocks.Where(i => i.StoreItemStockId == itemSoldEntity.StoreItemStockId).Include("StoreItem").ToList();
                    if (!myItems.Any())
                    {
                        remainingStockVolume = 0;
                        return(new StoreItemSoldObject());
                    }

                    var myItem    = myItems[0];
                    var storeItem = myItem.StoreItem;

                    if (itemSold.StoreItemCategoryId > 0 && itemSold.StoreItemCategoryId != storeItem.StoreItemCategoryId)
                    {
                        if (setting.DeductStockAtSalesPoint)
                        {
                            itemSoldEntity.QuantityDelivered = itemSoldEntity.QuantitySold;
                            itemSoldEntity.QuantityBalance   = 0;

                            var orderedItems = db.PurchaseOrderItems.Where(i => i.PurchaseOrderItemId == itemSold.PurchaseOrderItemId).ToList();
                            if (orderedItems.Any())
                            {
                                var orderedItem = orderedItems[0];
                                orderedItem.QuantityInStock = orderedItem.QuantityInStock - itemSoldEntity.QuantitySold;
                                db.Entry(orderedItem).State = EntityState.Modified;
                                db.SaveChanges();
                            }

                            myItem.QuantityInStock = myItem.QuantityInStock - itemSoldEntity.QuantitySold;

                            myItem.TotalQuantityAlreadySold += itemSoldEntity.QuantitySold;

                            db.Entry(myItem).State = EntityState.Modified;
                            db.SaveChanges();
                            remainingVolume = myItem.QuantityInStock;
                        }
                        else
                        {
                            remainingVolume = myItem.QuantityInStock;
                            itemSoldEntity.QuantityBalance = itemSoldEntity.QuantitySold;
                        }
                    }

                    var soldItem = db.StoreItemSolds.Add(itemSoldEntity);
                    db.SaveChanges();

                    remainingStockVolume     = remainingVolume;
                    itemSold.StoreItemSoldId = soldItem.StoreItemSoldId;

                    return(itemSold);
                }
            }
            catch (Exception ex)
            {
                ErrorLogger.LogError(ex.StackTrace, ex.Source, ex.Message);
                remainingStockVolume = 0;
                return(new StoreItemSoldObject());
            }
        }