Exemple #1
0
        private bool ShouldPreventAutomerge(IssueDetails issueDetails)
        {
            // no issue, no opt-out
            if (issueDetails == null)
            {
                return(false);
            }
            // no configuration for this? no opt-out
            if (string.IsNullOrEmpty(_jiraSettings.DisableAutomergeFieldName))
            {
                return(false);
            }
            if (string.IsNullOrEmpty(_jiraSettings.DisableAutomergeFieldValue))
            {
                return(false);
            }
            // no matching custom field? no opt-out
            if (issueDetails.CustomFields == null)
            {
                return(false);
            }
            if (!issueDetails.CustomFields.Contains(_jiraSettings.DisableAutomergeFieldName))
            {
                return(false);
            }

            // apparently the custom field is set; lets see if it has the value that indicates opt-out for the automerge
            return(issueDetails.CustomFields[_jiraSettings.DisableAutomergeFieldName].Contains(_jiraSettings.DisableAutomergeFieldValue));
        }
Exemple #2
0
        public Task <IssueStatus> GetStatusAsync(string organization, string repo, int issue)
        {
            var info = new IssueDetails
            {
                Organization = organization,
                Repo         = repo,
                Issue        = issue
            };

            return(GetStatusAsync(info));
        }
Exemple #3
0
 public void RegisterIssue(IssueDetails issue)
 {
     if (issue.IssueType == "warning")
     {
         RegisterWarning();
     }
     if (issue.IssueType == "error")
     {
         RegisterError();
     }
 }
Exemple #4
0
        public MergeRequest(string mergeUserName, string mergeUserEmail, IssueDetails issueDetails)
            : this(mergeUserName, mergeUserEmail)
        {
            if (issueDetails == null)
            {
                throw new ArgumentNullException(nameof(issueDetails), $"{nameof(issueDetails)} is null.");
            }

            IssueDetails      = issueDetails;
            BranchName        = issueDetails.Key;
            BranchNameIsExact = false;
        }
Exemple #5
0
        public static bool SaveToHistory(IssueDetails issueDetails)
        {
            CreateHistoryFile();
            HistoryIssue historyIssue = JsonConvert.DeserializeObject <HistoryIssue>(File.ReadAllText(IssueTrackerHistoryFile));

            if (historyIssue.IssueHistory.ContainsKey(GetIssueNumber(issueDetails.IssueURL)) == false)
            {
                historyIssue.IssueHistory.Add(GetIssueNumber(issueDetails.IssueURL), issueDetails.CurrentIssueTitle);
                string serializedJson = JsonConvert.SerializeObject(historyIssue, Formatting.Indented);
                File.WriteAllText(IssueTrackerHistoryFile, serializedJson);
                return(true);
            }
            return(false);
        }
Exemple #6
0
        private void UpdateIssueDetails(MergeRequest mergeRequest, IssueDetails issueDetails)
        {
            if (mergeRequest == null || issueDetails == null)
            {
                return;
            }
            if (issueDetails.CustomFields != null)
            {
                // see if we have an upstream branch name set; so we can override the initial guess of "master"
                if (!string.IsNullOrEmpty(_jiraSettings.UpstreamBranchFieldName) &&
                    issueDetails.CustomFields.Contains(_jiraSettings.UpstreamBranchFieldName))
                {
                    Logger.Debug(m => m("Checking {0} potential upstream branches: {1}",
                                        issueDetails.CustomFields[_jiraSettings.UpstreamBranchFieldName].Count(),
                                        string.Join(", ", issueDetails.CustomFields[_jiraSettings.UpstreamBranchFieldName])));
                    // technically, this could be a list or something. we'll just ignore all but the first one and hope it works out.
                    string upstreamBranch = issueDetails.CustomFields[_jiraSettings.UpstreamBranchFieldName].FirstOrDefault();
                    if (!string.IsNullOrWhiteSpace(upstreamBranch))
                    {
                        Logger.Info(m => m("Merge request for '{0}' uses upstream branch '{1}' instead of default '{2}'.", mergeRequest.BranchName, upstreamBranch, mergeRequest.UpstreamBranch));
                        mergeRequest.UpstreamBranch = upstreamBranch;
                    }
                    else
                    {
                        Logger.Info(m => m("Merge request for '{0}' uses default upstream branch '{1}'.", mergeRequest.BranchName, mergeRequest.UpstreamBranch));
                    }
                }

                // see if we have an actual branch name set instead of using the issue key
                if (!string.IsNullOrEmpty(_jiraSettings.BranchFieldName) &&
                    issueDetails.CustomFields.Contains(_jiraSettings.BranchFieldName))
                {
                    Logger.Debug(m => m("Checking {0} potential branch names: {1}",
                                        issueDetails.CustomFields[_jiraSettings.BranchFieldName].Count(),
                                        string.Join(", ", issueDetails.CustomFields[_jiraSettings.BranchFieldName])));
                    // technically, this could be a list or something. we'll just ignore all but the first one and hope it works out.
                    string branchName = issueDetails.CustomFields[_jiraSettings.BranchFieldName].FirstOrDefault();
                    if (!string.IsNullOrWhiteSpace(branchName))
                    {
                        Logger.Info(m => m("Merge request for '{0}' uses branch name '{1}' instead of issue key.", mergeRequest.BranchName, branchName));
                        mergeRequest.BranchName        = branchName;
                        mergeRequest.BranchNameIsExact = true;
                    }
                    else
                    {
                        Logger.Info(m => m("Merge request for '{0}' uses issue key as branch name.", mergeRequest.BranchName));
                    }
                }
            }
        }
Exemple #7
0
 public override int GetHashCode()
 {
     unchecked
     {
         int hashCode = (ChangeDetails != null ? ChangeDetails.GetHashCode() : 0);
         hashCode = (hashCode * 397) ^ (IssueDetails != null ? IssueDetails.GetHashCode() : 0);
         hashCode = (hashCode * 397) ^ Generated.GetHashCode();
         hashCode = (hashCode * 397) ^ (FromVersion != null ? FromVersion.GetHashCode() : 0);
         hashCode = (hashCode * 397) ^ (ToVersion != null ? ToVersion.GetHashCode() : 0);
         hashCode = (hashCode * 397) ^ (ReferenceBuildConfiguration != null ? ReferenceBuildConfiguration.GetHashCode() : 0);
         hashCode = (hashCode * 397) ^ (BuildConfiguration != null ? BuildConfiguration.GetHashCode() : 0);
         return(hashCode);
     }
 }
Exemple #8
0
        private void Post(string json)
        {
            var issueDetails = IssueDetails.ParseFromJson(json);

            if (issueDetails == null)
            {
                return;
            }
            string transitionUserName = issueDetails.TransitionUserName;
            string transitionUserMail = issueDetails.TransitionUserEMail;
            var    mergeRequest       = new MergeRequest(transitionUserName, transitionUserMail, issueDetails);

            _gitMerger.QueueRequest(mergeRequest);
        }
Exemple #9
0
        private async Task <IssueStatus> GetStatusAsync(IssueDetails info)
        {
            try
            {
                using (var message = new HttpRequestMessage(HttpMethod.Get, $"repos/{info.Organization}/{info.Repo}/issues/{info.Issue}"))
                {
                    IssueStatusCacheItem status;
                    if (_issueCache.TryGetValue(info, out status))
                    {
                        message.Headers.TryAddWithoutValidation("If-None-Match", status.Headers.ETag);
                    }

                    using (var response = await SendAsync(message))
                    {
                        var headers = new GithubHeaders(response.Headers);

                        if (response.StatusCode == HttpStatusCode.NotModified)
                        {
                            return(status.Status);
                        }

                        if (!response.IsSuccessStatusCode)
                        {
                            return(headers.Remaining == 0 ? IssueStatus.RateLimited : IssueStatus.Unavailable);
                        }

                        using (var content = await response.Content.ReadAsStreamAsync())
                        {
                            var issueResponse = (GitHubIssueResponse)s_serializer.ReadObject(content);

                            var item = new IssueStatusCacheItem
                            {
                                Headers = headers,
                                Status  = issueResponse.GetStatus()
                            };

                            _issueCache.AddOrUpdate(info, item, (_, __) => item);

                            return(item.Status);
                        }
                    }
                }
            }
            catch (HttpRequestException)
            {
                return(IssueStatus.Unavailable);
            }
        }
        private IssueDetails UserTableTransform(Table table)
        {
            IssueDetails body = table.CreateInstance <IssueDetails>();

            foreach (var row in table.Rows)
            {
                if (row[0] == "labels")
                {
                    body.labels = row[1].Split(',');
                }
            }

            contextProperties.IssueBody  = body.body;
            contextProperties.IssueTitle = body.title;
            return(body);
        }
 public IActionResult IssueBook(IssueDetails issue)
 {
     using (var httpclient = new HttpClient())
     {
         httpclient.BaseAddress = new Uri("http://localhost:63479/");
         IssueDetails issue1 = new IssueDetails()
         {
             Book_Id = issue.Book_Id, Book_Name = issue.Book_Name, Book_Author = issue.Book_Author, User_Id = issue.User_Id, User_Name = issue.User_Name, Issue_Date = issue.Issue_Date, Phone_Number = issue.Phone_Number
         };
         var postData = httpclient.PostAsJsonAsync <IssueDetails>("api/Admin/IssueBook", issue1);
         var res      = postData.Result;
         if (res.IsSuccessStatusCode)
         {
             return(RedirectToAction("IssuedBook"));
         }
     }
     return(View(issue));
 }
Exemple #12
0
        public int IssueBook(IssueDetails issue)
        {
            int result = 0;

            if (context != null)
            {
                //Book book = context.Books.FirstOrDefault(x => x.Book_Id == issue.Book_Id);
                //Usercredentials user = context.Usercredential.FirstOrDefault(x => x.User_Id == issue.User_Id);
                //  if (book != null && user != null)
                //  {


                context.IssueDetail.Add(issue);
                result = context.SaveChanges();
                //}
            }
            return(result);
        }
Exemple #13
0
 public IActionResult IssueBook(IssueDetails issue)
 {
     _log4net.Info(" Http request IssueBook Initiated");
     try
     {
         var i = adm.IssueBook(issue);
         if (i > 0)
         {
             return(Ok(i));
         }
         else
         {
             return(NoContent());
         }
     }
     catch (Exception)
     {
         return(BadRequest());
     }
 }
        public IssueDetailsResponse Get(IssueDetails request)
        {
            var issue = IssueRepository.GetById(request.Id);
            if (issue == null)
                throw HttpError.NotFound("Issue does not exist: " + request.Id);

            var category = CategoryRepository.GetById(issue.CategoryId);
            var reporter = PersonRepository.GetById(issue.ReporterId);
            var priority = PriorityRepository.GetById(issue.PriorityId);
            var status = StatusRepository.GetById(issue.StatusId);

            return new IssueDetailsResponse
            {
                Issue = issue,
                Category = category,
                Reporter = reporter,
                Priority = priority,
                Status = status
            };
        }
Exemple #15
0
        public static bool SubscribeToIssue(IssueDetails issueDetails)
        {
            CreateIssueFileLocation();
            string IssueNumber = GetIssueNumber(issueDetails.IssueURL);

            if (IsSubscribedToIssue(IssueNumber) == false)
            {
                SubscribeIssue subscribeIssue = new SubscribeIssue();
                subscribeIssue.SubscribedIssueResolution  = issueDetails.CurrentIssueStatus;
                subscribeIssue.SubscribedIssueTitle       = issueDetails.CurrentIssueTitle;
                subscribeIssue.SubscribedIssueID          = IssueNumber;
                subscribeIssue.SubscribedIssueLink        = issueDetails.IssueURL;
                subscribeIssue.SubscribedIssueDescription = issueDetails.CurrentIssueDescription;
                subscribeIssue.SubscribedIssueRepro       = issueDetails.CurrentIssueRepro;
                subscribeIssue.SubscribedIssueMoreInfo    = issueDetails.CurrentIssueAnswerHubLink;
                string SubscribeIssueJson = JsonConvert.SerializeObject(subscribeIssue, Formatting.Indented);
                File.WriteAllText(IssueFilesDirectory + IssueNumber + IssueTrackerFileExtension, SubscribeIssueJson);
                return(true);
            }
            return(false);
        }
        public override string GetDefectDetails(List <string> crqIds)
        {
            var    details = new IssueDetails();
            Random random  = new Random(Environment.TickCount);

            foreach (string id in crqIds)
            {
                details.Add(new IssueDetail {
                    ID       = id,
                    Name     = "",
                    State    = SimulationResults[random.Next(0, 5)],
                    Type     = "Defect",
                    Severity = random.Next(0, 5)
                });
            }

            var stringBuilder = new StringBuilder();

            using (var xmlWriter = XmlWriter.Create(stringBuilder, new XmlWriterSettings {
                NewLineOnAttributes = true, Indent = true
            })) {
                xmlWriter.WriteStartElement("IssueDetails");
                xmlWriter.WriteAttributeString("xmlns", "xsi", null, @"http://www.w3.org/2001/XMLSchema-instance");
                xmlWriter.WriteAttributeString("xmlns", "xsd", null, @"http://www.w3.org/2001/XMLSchema");
                foreach (var detail in details)
                {
                    xmlWriter.WriteStartElement("IssueDetail");
                    xmlWriter.WriteElementString("Type", detail.Type);
                    xmlWriter.WriteElementString("State", detail.State);
                    xmlWriter.WriteElementString("ID", detail.ID);
                    xmlWriter.WriteElementString("Name", detail.Name);
                    xmlWriter.WriteElementString("Severity", detail.Severity.ToString());
                    xmlWriter.WriteEndElement();
                }
                xmlWriter.WriteEndElement();
            }
            return(stringBuilder.ToString());
        }
 public void AddJsonBody(IssueDetails body)
 {
     restRequest.AddJsonBody(body);
 }
 public void WhenISendAPutRequestWithTheFollowingRequestBody(IssueDetails body)
 {
     httpsRequests.AddJsonBody(body);
     httpsRequests.SendRequest();
 }
        private void btnGenerate_Click(object sender, RoutedEventArgs e)
        {
            ReportTable = null;
            avReport = null;
            dgReportGrid.DataContext = null;
            dgReportGrid.Visibility = Visibility.Visible;
            if (cmbReportSelector.SelectedIndex == 0)
            {

                ReportTable = dataAccess.GetReportData(dpFrom.SelectedDate.Value, dpTo.SelectedDate.Value);

                dgReportGrid.DataContext = ReportTable;

                
            }
            else if (cmbReportSelector.SelectedIndex == 1)
            {
                avReport = new AvailabilityReport();
                int[] lineids = {1,2,3,4,5,6,7,8,9,10};
                foreach (Shift s in shifts)
                {
                    if (s.Name != "GEN_SHIFT")
                    {
                        String date = String.Empty;
                        foreach (Session se in s.Sessions)
                        {
                            DateTime f = new DateTime(dpFrom.SelectedDate.Value.Year,
                                dpFrom.SelectedDate.Value.Month,
                                dpFrom.SelectedDate.Value.Day,
                                TimeSpan.Parse(se.StartTime).Hours,
                                TimeSpan.Parse(se.StartTime).Minutes,
                                TimeSpan.Parse(se.StartTime).Seconds
                                );
                            
                                
                            DateTime t = new DateTime(dpTo.SelectedDate.Value.Year,
                                dpTo.SelectedDate.Value.Month,
                                dpTo.SelectedDate.Value.Day,
                                TimeSpan.Parse(se.EndTime).Hours,
                                TimeSpan.Parse(se.EndTime).Minutes,
                                TimeSpan.Parse(se.EndTime).Seconds
                                );
                            if (s.Name == "THIRD SHIFT" && se.Name != "FIRST HOUR")
                            {
                                t = t.AddDays(1);
                                date = t.ToShortDateString();
                            }
                            else
                                date = f.ToShortDateString();
                            foreach(int n in lineids)
                            {
                                
                                DataTable dt = dataAccess.GetHourlyReportData(n, f, t);
                                if (dt.Rows.Count == 0) continue;
                                Availability av = new Availability();
                                for (int j = 0; j < dt.Rows.Count; j++)
                                {

                                    IssueDetails issueDetail = new IssueDetails();
                                    issueDetail.Line = (int)dt.Rows[j]["LINE"];
                                    issueDetail.Station = (int)dt.Rows[j]["STATION"];
                                    issueDetail.Tolerance = (int)dt.Rows[j]["Tolerance"];
                                    issueDetail.Raised = (TimeSpan)dt.Rows[j]["Raised"];
                                    if (dt.Rows[j]["Resolved"] == DBNull.Value)
                                        issueDetail.Resolved = TimeSpan.Parse(se.EndTime);
                                    else
                                    {
                                        issueDetail.Resolved = (TimeSpan)dt.Rows[j]["Resolved"];
                                        if (issueDetail.Resolved > TimeSpan.Parse(se.EndTime))
                                        {
                                            issueDetail.Resolved = TimeSpan.Parse(se.EndTime);
                                        }
                                    }

                                    TimeSpan ToleranceLimit = new TimeSpan(0, issueDetail.Tolerance, 0);
                                    if (issueDetail.Resolved - issueDetail.Raised > ToleranceLimit)
                                    {
                                        av.Add(issueDetail);
                                    }
                                }
                                avReport.Add(new AvailabilityRecord((string)dt.Rows[0]["LINENAME"],
                                    date, f.ToShortTimeString() + "-" + t.ToShortTimeString(),
                                    av.getAvailability( f.TimeOfDay, t.TimeOfDay).ToString()));



                            }
                        }
                    }
                }
                dgReportGrid.AutoGenerateColumns = true;
                dgReportGrid.DataContext = avReport;
            }



        }
Exemple #20
0
        public ActionResult SaveUpdatePurRet(PurRetMain PurRet, List <PurRetDetail> PurRetDetail, string IsSave)
        {
            using (var transaction = new TransactionScope())
            {
                try
                {
                    RBACUser rUser = new RBACUser(Session["UserName"].ToString());

                    #region for Purs Return transection
                    string trnType = "Save";
                    string Msg     = "1";


                    //Firstly deleted the saved For Update
                    if (IsSave == "1")
                    {
                        if (!rUser.HasPermission("PurchaseReturn_Update"))
                        {
                            return(Json("U", JsonRequestBehavior.AllowGet));
                        }
                        trnType = "Update";
                        Msg     = "2";

                        #region For AVP OR LOT

                        if (Session["MaintLot"].ToString() == "True")
                        {
                            var sRetMain   = _PurRetMainService.All().Where(s => s.PurRetNo == PurRet.PurRetNo).FirstOrDefault();
                            var sRetDetail = _PurRetDetailService.All().Where(s => s.PurRetId == sRetMain.PurRetId).ToList();
                            foreach (var currentItem in sRetDetail)
                            {
                                var currentStocks = _currentStockService.All().ToList().FirstOrDefault(m => m.ItemCode == currentItem.ItemCode &&
                                                                                                       m.LocCode == PurRet.LocNo &&
                                                                                                       m.LotNo == currentItem.LotNo);
                                if (currentStocks != null)
                                {
                                    currentStocks.CurrQty   = currentStocks.CurrQty + currentItem.ReturnQty;
                                    currentStocks.UnitPrice = Convert.ToDouble(currentItem.UnitPrice);
                                    _currentStockService.Update(currentStocks);
                                }
                            }
                        }
                        else
                        {
                            // For Costledger Code
                        }
                        #endregion

                        var saleRetDel = _PurRetMainService.All().ToList().Where(y => y.PurRetNo == PurRet.PurRetNo).FirstOrDefault();
                        _PurRetDetailService.All().ToList().Where(y => y.PurRetId == saleRetDel.PurRetId).ToList().ForEach(x => _PurRetDetailService.Delete(x));
                        _PurRetDetailService.Save();
                        _PurRetMainService.Delete(saleRetDel);
                        _PurRetMainService.Save();

                        var rcvDel = _issueMainService.All().ToList().Where(y => y.RefNo == PurRet.PurRetNo && y.VchrNo == PurRet.VchrNo).FirstOrDefault();
                        _issueDetailService.All().ToList().Where(y => y.IssueNo == PurRet.ChallanNo).ToList().ForEach(x => _issueDetailService.Delete(x));
                        _receiveDetailService.Save();
                        _issueMainService.Delete(rcvDel);
                        _issueMainService.Save();
                    }

                    if (!rUser.HasPermission("PurchaseReturn_Insert"))
                    {
                        return(Json("X", JsonRequestBehavior.AllowGet));
                    }

                    var IfExist = _PurRetMainService.All().Where(x => x.PurRetNo == PurRet.PurRetNo).FirstOrDefault();
                    if (IfExist == null)
                    {
                        PurRet.FinYear       = Session["FinYear"].ToString();
                        PurRet.BranchCode    = Session["BranchCode"].ToString();
                        PurRet.ProjCode      = Session["ProjCode"].ToString();
                        PurRet.EntryDateTime = DateTime.Now;
                        _PurRetMainService.Add(PurRet);
                        _PurRetMainService.Save();

                        if (PurRetDetail != null)
                        {
                            foreach (var sRetDExtItem in PurRetDetail)
                            {
                                PurRetDetail sRetDetail = new PurRetDetail();
                                var          srID       = _PurRetMainService.All().Select(s => s.PurRetId).LastOrDefault();
                                if (srID == 0)
                                {
                                    sRetDExtItem.PurRetId = 1;
                                }
                                else
                                {
                                    sRetDExtItem.PurRetId = srID;
                                }
                                sRetDetail = sRetDExtItem;
                                _PurRetDetailService.Add(sRetDetail);
                            }
                        }
                        _PurRetDetailService.Save();

                        #region  For Issue
                        var IssueNo = _issueMainService.All().Select(s => Convert.ToInt32(s.IssueNo)).LastOrDefault() + 1;
                        if (IssueNo != 0)
                        {
                            var       todayDate = DateTime.Now;
                            IssueMain issueInfo = new IssueMain();
                            issueInfo.IssueNo     = "0" + IssueNo.ToString(); //PurRet.PurRetNo;
                            issueInfo.BranchCode  = Session["BranchCode"].ToString();
                            issueInfo.IssueDate   = PurRet.PurRetDate.AddHours(todayDate.Hour).AddMinutes(todayDate.Minute).AddSeconds(todayDate.Second).AddMilliseconds(todayDate.Millisecond);
                            issueInfo.FromLocCode = PurRet.LocNo;
                            //issueInfo.StoreLocCode = PurRet.StoreLocCode;
                            issueInfo.IssueToSubCode = PurRet.CustCode;
                            //issueInfo.DesLocCode = PurRet.DesLocCode;
                            //issueInfo.Accode = PurRet.Accode;
                            issueInfo.RefNo   = PurRet.PurRetNo;
                            issueInfo.RefDate = PurRet.PurRetDate;
                            issueInfo.Remarks = PurRet.Remarks;
                            //issueInfo.IssueByCode = PurRet.IssueByCode;
                            issueInfo.AppByCode         = PurRet.ApprBy;
                            issueInfo.IssTime           = DateTime.Now;
                            issueInfo.FinYear           = Session["FinYear"].ToString();
                            issueInfo.GLPost            = false;
                            issueInfo.IssDate           = PurRet.PurRetDate.AddHours(todayDate.Hour).AddMinutes(todayDate.Minute).AddSeconds(todayDate.Second).AddMilliseconds(todayDate.Millisecond);
                            issueInfo.cashReceiptStatus = false;
                            issueInfo.IsReceived        = false;
                            issueInfo.VchrNo            = PurRet.VchrNo;
                            double amount = 0.0;
                            issueInfo.EntrySrc   = "PR";
                            issueInfo.EntrySrcNo = issueInfo.IssueNo;
                            List <IssueDetails> issuDetailsList = new List <IssueDetails>();
                            #region For LOT OR AVP
                            if (Session["MaintLot"].ToString() == "True")
                            {
                                #region Not AutoLot by issueDetail

                                foreach (var currentItem in PurRetDetail)
                                {
                                    var currentStocks = _currentStockService.All().ToList().FirstOrDefault(m => m.ItemCode == currentItem.ItemCode &&
                                                                                                           m.LocCode == PurRet.LocNo &&
                                                                                                           m.LotNo == currentItem.LotNo);
                                    if (currentStocks != null)
                                    {
                                        currentStocks.CurrQty   = currentStocks.CurrQty - currentItem.ReturnQty;
                                        currentStocks.UnitPrice = (double)currentItem.UnitPrice;
                                        _currentStockService.Update(currentStocks);
                                    }
                                    else
                                    {
                                        CurrentStock currStock = new CurrentStock();
                                        currStock.LocCode   = PurRet.LocNo;
                                        currStock.LotNo     = currentItem.LotNo;
                                        currStock.ItemCode  = currentItem.ItemCode;
                                        currStock.CurrQty   = 0 - currentItem.ReturnQty;
                                        currStock.UnitPrice = (double)currentItem.UnitPrice;
                                        _currentStockService.Add(currStock);
                                    }
                                }
                                #endregion
                            }
                            else
                            {
                                #region for Cost ledger
                                foreach (var costLedger in PurRetDetail)
                                {
                                    CostLedger cLedger = new CostLedger();
                                    cLedger.IssQty   = costLedger.ReturnQty;
                                    cLedger.IssRate  = (double)costLedger.UnitPrice;
                                    cLedger.IssTotal = cLedger.IssQty * cLedger.IssRate;

                                    cLedger.RecQty   = 0;
                                    cLedger.RecRate  = 0;
                                    cLedger.RecTotal = 0;

                                    var existCurrStoc = CostLedgerAppService.All().Where(x => x.ItemCode == costLedger.ItemCode && x.LocNo == PurRet.LocNo.Trim()).ToList();
                                    if (existCurrStoc.Count != 0)
                                    {
                                        var date           = existCurrStoc.Max(x => x.TrDate);
                                        var existCurrStock = CostLedgerAppService.All().OrderByDescending(s => s.RecId).Where(x => x.ItemCode == costLedger.ItemCode && x.LocNo == PurRet.LocNo.Trim() && x.TrDate == date).FirstOrDefault();

                                        cLedger.BalQty   = existCurrStock.BalQty - cLedger.IssQty;
                                        cLedger.BalRate  = System.Math.Round(existCurrStock.BalRate, 2);
                                        cLedger.BalTotal = System.Math.Round(cLedger.BalQty * cLedger.BalRate, 2);

                                        cLedger.LocNo    = PurRet.LocNo;
                                        cLedger.ItemCode = costLedger.ItemCode;
                                        cLedger.TrDate   = PurRet.PurRetDate.AddHours(todayDate.Hour).AddMinutes(todayDate.Minute).AddSeconds(todayDate.Second).AddMilliseconds(todayDate.Millisecond);

                                        cLedger.UpdSrcNo = PurRet.PurRetNo;
                                        cLedger.UpdSrc   = "PR";
                                        CostLedgerAppService.Add(cLedger);
                                    }
                                    else if (existCurrStoc.Count == 0)
                                    {
                                        cLedger.CurrQty   = 0;
                                        cLedger.UnitPrice = 0;
                                        cLedger.BalTotal  = 0;

                                        cLedger.BalQty   = cLedger.BalQty - cLedger.IssQty;
                                        cLedger.BalRate  = cLedger.IssRate;
                                        cLedger.BalRate  = System.Math.Round(cLedger.BalRate, 2);
                                        cLedger.BalTotal = System.Math.Round(cLedger.BalQty * cLedger.BalRate, 2);

                                        cLedger.LocNo    = PurRet.LocNo;
                                        cLedger.ItemCode = costLedger.ItemCode;
                                        cLedger.TrDate   = PurRet.PurRetDate.AddHours(todayDate.Hour).AddMinutes(todayDate.Minute).AddSeconds(todayDate.Second).AddMilliseconds(todayDate.Millisecond);

                                        cLedger.UpdSrcNo = PurRet.PurRetNo;
                                        cLedger.UpdSrc   = "PR";
                                        CostLedgerAppService.Add(cLedger);
                                    }
                                    CostLedgerAppService.Save();
                                }
                                #endregion
                            }
                            #endregion


                            foreach (var issuDetailsItem in PurRetDetail)
                            {
                                IssueDetails issueDetailsInfo = new IssueDetails();
                                issueDetailsInfo.IssueNo     = "0" + IssueNo.ToString();
                                issueDetailsInfo.ItemCode    = issuDetailsItem.ItemCode;
                                issueDetailsInfo.SubCode     = PurRet.CustCode;
                                issueDetailsInfo.Description = issuDetailsItem.Description;
                                issueDetailsInfo.Qty         = issuDetailsItem.ReturnQty;
                                issueDetailsInfo.Price       = (double)issuDetailsItem.UnitPrice;
                                //issueDetailsInfo.ExQty = issuDetailsItem.ExQty;
                                issueDetailsInfo.LotNo = "01";
                                amount = amount + (issuDetailsItem.ReturnQty * (double)issuDetailsItem.UnitPrice);
                                issuDetailsList.Add(issueDetailsInfo);
                            }

                            issueInfo.Amount       = amount;
                            issueInfo.IssueDetails = issuDetailsList;
                            _issueMainService.Add(issueInfo);
                            _issueMainService.Save();
                        }
                        #endregion
                        TransactionLogService.SaveTransactionLog(_transactionLogService, "Purchase Return", trnType, PurRet.VchrNo, Session["UserName"].ToString());
                        //LoadDropDown.ProvitionInvRSave("IR", "I", recvInfo.RcvNo, recvInfo.VchrNo, Session["FinYear"].ToString(), Session["ProjCode"].ToString(), Session["BranchCode"].ToString(), recvMain.RcvDate.ToString("yyyy-MM-dd"), Session["UserName"].ToString());
                        transaction.Complete();
                        return(Json(new { Msg = Msg }, JsonRequestBehavior.AllowGet));
                    }
                    else
                    {
                        transaction.Dispose();
                        return(Json("3", JsonRequestBehavior.AllowGet));
                    }
                    #endregion
                }
                catch (Exception ex)
                {
                    transaction.Dispose();
                    return(Json(ex.Message.ToString(), JsonRequestBehavior.AllowGet));
                }
            }
        }