private void btnSave_Click(object sender, EventArgs e) { try { if (ValidateArticleStock()) { if (CommonFunc.ShowMessage("Are you sure? The stock quantity will be updated in the system.", Models.Enums.MessageType.OKCancel) == DialogResult.OK) { articleStockOutModel = new ArticleStockOutModel(); articleStockOutModel.StockOutReason = GetStockOutReason(); if (cmbFromLocation.SelectedIndex != -1) { articleStockOutModel.StockFromLocation = GetStockFromLocation(); } articleStockOutModel.OrderDtlModels = FillOrderDtlDataToModel(); articleStockOutModel.Reason = txtRemark.Text.Trim(); this.articleStockManager.SaveArticleStockOutData(articleStockOutModel); CommonFunc.ShowMessage("Stock Quantity has been updated", MessageType.Information); ResetArticleStockOutData(); } } } catch (Exception ex) { CommonFunc.ShowMessage(ex.Message, MessageType.Information); Logger.Log(ex.Message, Logger.LogingLevel.Error); } }
public bool SaveArticleStockOutData(ArticleStockOutModel articleStockOutModel) { try { var orderHdr = new OrderHdr(); orderHdr.OrderDtl = new List <OrderDtl>(); //Get article codes for updating article stock var articleCodes = (from a in articleStockOutModel.OrderDtlModels select a.ArticleCode).ToList(); var articleStockBalanceList = this.articleStockBalanceRepository.GetArticleStockBalanceByArticleCodes(articleCodes); for (int rowIndex = 0; rowIndex < articleStockOutModel.OrderDtlModels.Count(); rowIndex++) { var articleStockBalance = articleStockBalanceList.Where(a => a.ArticleCode == articleStockOutModel.OrderDtlModels[rowIndex].ArticleCode).FirstOrDefault(); if (articleStockBalance != null) { decimal quantity = articleStockOutModel.OrderDtlModels[rowIndex].AdjustmentQty; if (articleStockOutModel.StockOutReason == StockOutReason.ReturnToSupplier || articleStockOutModel.StockOutReason == StockOutReason.WriteOff) { articleStockBalance.PhysicalQty -= quantity; switch (articleStockOutModel.StockFromLocation) { case StockFromLocation.Damaged: articleStockBalance.TotalPhysicalNonSaleableQty -= quantity; articleStockBalance.DamagedQty -= quantity; break; case StockFromLocation.NonSaleable: articleStockBalance.TotalPhysicalNonSaleableQty -= quantity; articleStockBalance.NonSaleableQty -= quantity; break; case StockFromLocation.Saleable: articleStockBalance.TotalPhysicalSaleableQty -= quantity; articleStockBalance.TotalSaleableQty -= quantity; break; } } else { articleStockBalance.TotalPhysicalNonSaleableQty += quantity; articleStockBalance.TotalPhysicalSaleableQty -= quantity; articleStockBalance.TotalSaleableQty -= quantity; if (articleStockOutModel.StockOutReason == StockOutReason.Damaged) { articleStockBalance.DamagedQty += quantity; } else if (articleStockOutModel.StockOutReason == StockOutReason.NonSaleable) { articleStockBalance.NonSaleableQty -= quantity; } } articleStockBalance.UPDATEDON = DateTime.Now; articleStockBalance.UPDATEDBY = CommonModel.UserID; articleStockBalance.UPDATEDAT = CommonModel.SiteCode; } } var maxTranNo = this.articleStockBalanceRepository.GetMaxTranNoInStockAdjustment(); maxTranNo = maxTranNo + 1; var stockAdjustmentList = new List <StockAdjustment>(); for (int i = 0; i < articleStockOutModel.OrderDtlModels.Count; i++) { stockAdjustmentList.Add(new StockAdjustment { SiteCode = CommonModel.SiteCode, TrnNo = maxTranNo, FinYear = CommonModel.CurrentDate.ToString("yyyy"), TrnDate = CommonModel.CurrentDate, ArticleCode = articleStockOutModel.OrderDtlModels[i].ArticleCode, EAN = articleStockOutModel.OrderDtlModels[i].EAN, UOM = articleStockOutModel.OrderDtlModels[i].UnitofMeasure, Qty = articleStockOutModel.OrderDtlModels[i].AdjustmentQty, Reason = (!string.IsNullOrEmpty(articleStockOutModel.OrderDtlModels[i].Reason)) ? articleStockOutModel.OrderDtlModels[i].Reason : articleStockOutModel.Reason, CREATEDAT = CommonModel.SiteCode, CREATEDBY = CommonModel.UserID, CREATEDON = CommonModel.CurrentDate, UPDATEDAT = CommonModel.SiteCode, UPDATEDBY = CommonModel.UserID, UPDATEDON = CommonModel.CurrentDate, STATUS = true }); maxTranNo += 1; } return(this.articleStockBalanceRepository.UpdateArticleStockOutData(articleStockBalanceList.ToList(), stockAdjustmentList)); } catch (Exception ex) { Logger.Log(ex.Message, Logger.LogingLevel.Error); throw ex; } }