public bool SaveArticleStockInData(ArticleStockInModel articleStockInModel)
        {
            try
            {
                var invoice = new Invoice();

                var orderHdr = new OrderHdr();
                orderHdr.OrderDtl = new List <OrderDtl>();

                var articleStockBalances = new List <ArticleStockBalances>();

                //Get article codes for updating article stock
                var articleCodes = (from a in articleStockInModel.ArticleStockBalanceModels
                                    select a.ArticleCode).ToList();

                var articleStockBalanceList = this.articleStockBalanceRepository.GetArticleStockBalanceByArticleCodes(articleCodes);

                Mapper.Map(articleStockInModel.InvoiceModel, invoice);
                Mapper.Map(articleStockInModel.OrderHdrModel, orderHdr);

                for (int rowIndex = 0; rowIndex < articleStockInModel.OrderDtlModels.Count; rowIndex++)
                {
                    orderHdr.OrderDtl.Add(Mapper.Map(articleStockInModel.OrderDtlModels[rowIndex], new OrderDtl()));
                }

                for (int rowIndex = 0; rowIndex < articleStockInModel.ArticleStockBalanceModels.Count; rowIndex++)
                {
                    var articleStockBalance = articleStockBalanceList.Where(a => a.ArticleCode == articleStockInModel.ArticleStockBalanceModels[rowIndex].ArticleCode && a.SiteCode == CommonModel.SiteCode).FirstOrDefault();
                    if (articleStockBalance != null)
                    {
                        articleStockBalance.PhysicalQty += articleStockInModel.ArticleStockBalanceModels[rowIndex].PhysicalQty;
                        articleStockBalance.TotalPhysicalSaleableQty += articleStockInModel.ArticleStockBalanceModels[rowIndex].TotalPhysicalSaleableQty;
                        articleStockBalance.TotalSaleableQty         += articleStockInModel.ArticleStockBalanceModels[rowIndex].TotalSaleableQty;
                        articleStockBalance.UPDATEDAT = CommonModel.SiteCode;
                        articleStockBalance.UPDATEDBY = CommonModel.UserID;
                        articleStockBalance.UPDATEDON = DateTime.Now;
                    }
                }

                return(this.articleStockBalanceRepository.SaveArticleStockInData(invoice, orderHdr, articleStockBalanceList.ToList()));
            }
            catch (Exception ex)
            {
                Logger.Log(ex.Message, Logger.LogingLevel.Error);
                throw ex;
            }
        }
        /// <summary>
        ///
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void btnUpdateStock_Click(object sender, EventArgs e)
        {
            try
            {
                if (ValidateArticleStock())
                {
                    if (CommonFunc.ShowMessage("Are you sure? The stock Quantity will be updated in the system.", MessageType.OKCancel) == DialogResult.OK)
                    {
                        bool     status  = false;
                        DateTime dt      = DateTime.Now;
                        string   stryear = dt.ToString("yy");
                        finYear = dt.ToString("yyyy");

                        string sitecodenew = CommonModel.SiteCode.ToString();
                        sitecodenew = sitecodenew.Substring(sitecodenew.Length - 3);

                        int grnNextNo = commonManager.GetNextID(CommonModel.SiteCode, "GR");
                        grnNextNo = grnNextNo + 1;
                        string strlastcode = string.Format("{0}", grnNextNo.ToString().PadLeft(7, '0'));
                        grnNumber              = "GRS" + sitecodenew + stryear + strlastcode;
                        documentNumber         = grnNumber;
                        invoiceNumber          = "INVS" + sitecodenew + stryear + strlastcode;
                        articleStockInOutModel = new ArticleStockInModel();
                        articleStockInOutModel.OrderDtlModels            = FillOrderDtlDataToModel();
                        articleStockInOutModel.OrderHdrModel             = FillOrderHdrDataToModel();
                        articleStockInOutModel.ArticleStockBalanceModels = FillArticleStockBalanceDataToModel();
                        articleStockInOutModel.InvoiceModel = FillInvoiceDataToModel();

                        this.articleStockManager.SaveArticleStockInData(articleStockInOutModel);

                        CommonFunc.ShowMessage("Stock Quantity has been updated", MessageType.Information);
                        ResetArticleStockInData();
                    }
                }
            }
            catch (Exception ex)
            {
                CommonFunc.ShowMessage(ex.Message, MessageType.Information);
                Logger.Log(ex.Message, Logger.LogingLevel.Error);
            }
        }