/// <summary> /// Created By : Ashwajit Bansod /// Created Date : 20-OCT-2018 /// Created For : To approve and reject bill /// </summary> /// <param name="Obj"></param> /// <param name="UserName"></param> /// <param name="UserId"></param> /// <param name="LocationId"></param> /// <returns></returns> public string ApproveBill(BillListApproveModel Obj, string UserName, long UserId, long LocationId) { bool IsApproved = false; string result = ""; var objDAR = new DARModel(); var CommonManager = new CommonMethodManager(); string ApproveStatus = ""; try { var userDataItem = _workorderems.UserRegistrations.Where(x => x.UserId == UserId && x.IsDeleted == false && x.IsEmailVerify == true).FirstOrDefault(); if (Obj != null) { string Action = "I"; if (Obj.Comment == null) { Obj.Status = "Y"; ApproveStatus = "Approved"; } else { Obj.Status = "N"; ApproveStatus = "Rejected"; } var saveBillApprove = _workorderems.spSetApprovalForPreBill(Obj.LBLL_Id, Obj.Comment, Obj.Status, UserId); //var saveApprove = _workorderems.spSetApprovalForBill(Obj.LBLL_Id, Obj.Comment,Obj.Status,UserId); Obj.InvoiceDate = Convert.ToDateTime(Obj.BillDate); var saveSetBill = _workorderems.spSetBill(Action, Obj.QuickBookBillId, null, null, Obj.BillId, Obj.VendorId, LocationId, "Manual Bill", null, Obj.BillAmount, Obj.InvoiceDate, Obj.BillImage, UserId, UserId, "Y"); IsApproved = true; if (Obj.Comment == null) { result = CommonMessage.BillApprove(); } else { result = CommonMessage.BillReject(); } #region Save DAR var locationData = _workorderems.LocationMasters.Where(x => x.LocationId == LocationId && x.IsDeleted == false).FirstOrDefault(); objDAR.ActivityDetails = DarMessage.BillApprovedReject(userDataItem.FirstName + "" + userDataItem.LastName, locationData.LocationName, ApproveStatus); objDAR.TaskType = (long)TaskTypeCategory.BillApprovedReject; objDAR.UserId = UserId; objDAR.CreatedBy = UserId; objDAR.LocationId = LocationId; objDAR.CreatedOn = DateTime.UtcNow; CommonManager.SaveDAR(objDAR); #endregion DAR } else { IsApproved = true; } if (IsApproved == true) { #region Email var objEmailLogRepository = new EmailLogRepository(); var objEmailReturn = new List <EmailToManagerModel>(); var objListEmailog = new List <EmailLog>(); var objTemplateModel = new TemplateModel(); if (IsApproved == true) { var userData = _workorderems.spGetVendorAllDetail(Obj.VendorId). Select(x => new BillListApproveModel() { Email = x.COD_Email, }).FirstOrDefault(); if (userData != null) { bool IsSent = false; var objEmailHelper = new EmailHelper(); objEmailHelper.emailid = userData.Email; objEmailHelper.LocationName = Obj.LocationName; objEmailHelper.VendorName = Obj.VendorName; objEmailHelper.UserName = userDataItem.FirstName + " " + userDataItem.LastName; objEmailHelper.MailType = "APPROVEBILL"; objEmailHelper.SentBy = UserId; objEmailHelper.LocationID = LocationId; objEmailHelper.TimeAttempted = DateTime.UtcNow.ToMobileClientTimeZone(objTemplateModel.TimeZoneName, objTemplateModel.TimeZoneOffset, objTemplateModel.IsTimeZoneinDaylight, false).ToString(); IsSent = objEmailHelper.SendEmailWithTemplate(); var userDataApprove = _workorderems.LogBills.Join(_workorderems.UserRegistrations, q => q.LBLL_ModifiedBy, u => u.UserId, (q, u) => new { q, u }). Where(x => x.q.LBLL_Id == Obj.LBLL_Id).FirstOrDefault(); //Push Notification if (userDataApprove != null) { if (userDataApprove.u.DeviceId != null) { string message = PushNotificationMessages.BillApprovedReject(objEmailHelper.LocationName, Obj.LBLL_Id, ApproveStatus, objEmailHelper.UserName); PushNotification.GCMAndroid(message, userDataApprove.u.DeviceId, objEmailHelper); } } if (IsSent == true) { var objEmailog = new EmailLog(); try { objEmailog.CreatedBy = UserId; objEmailog.CreatedDate = DateTime.UtcNow; objEmailog.DeletedBy = null; objEmailog.DeletedOn = null; objEmailog.LocationId = LocationId; objEmailog.ModifiedBy = null; objEmailog.ModifiedOn = null; objEmailog.SentBy = UserId; objEmailog.SentEmail = userData.Email; objEmailog.Subject = objEmailHelper.Subject; objEmailog.SentTo = Obj.VendorId; objListEmailog.Add(objEmailog); } catch (Exception) { throw; } } using (var context = new workorderEMSEntities()) { context.EmailLogs.AddRange(objListEmailog); context.SaveChanges(); } #endregion Email } } else { result = "Somethinsg goes wrong."; } } return(result); } catch (Exception ex) { Exception_B.Exception_B.exceptionHandel_Runtime(ex, "public MiscellaneousListDetails GetListMiscellaneous(long? UserId,long? Location, int? pageIndex, int? numberOfRows, string sortColumnName, string sortOrderBy, long? locationId, string textSearch, string statusType)", "Exception While Getting List of Miscellaneous details.", null); throw; } }
public JsonResult ApproveBillData(BillListApproveModel Obj, long LocationId, List <BillFacilityModel> FacilityData) { eTracLoginModel ObjLoginModel = null; string result = ""; string UserName = ""; string data = ""; long UserId = 0; var resultBill = new Bill(); if (Session["eTrac"] != null) { ObjLoginModel = (eTracLoginModel)(Session["eTrac"]); } try { if (Obj != null && Obj.BillId > 0) { UserName = ObjLoginModel.UserName; UserId = ObjLoginModel.UserId; //if (Session["realmId"] != null) //{ string realmId = CallbackController.RealMId.ToString();// Session["realmId"].ToString(); try { string AccessToken = CallbackController.AccessToken.ToString(); //Session["access_token"].ToString(); if (AccessToken == null) { AccessToken = Session["refresh_token"].ToString(); AccessToken = CallbackController.AccessToken.ToString(); } var principal = User as ClaimsPrincipal; OAuth2RequestValidator oauthValidator = new OAuth2RequestValidator(AccessToken); // Create a ServiceContext with Auth tokens and realmId ServiceContext serviceContext = new ServiceContext(realmId, IntuitServicesType.QBO, oauthValidator); serviceContext.IppConfiguration.MinorVersion.Qbo = "23"; DataService commonServiceQBO = new DataService(serviceContext); // Create a QuickBooks QueryService using ServiceContext QueryService <Vendor> querySvc = new QueryService <Vendor>(serviceContext); List <Vendor> vendorList = querySvc.ExecuteIdsQuery("SELECT * FROM Vendor MaxResults 1000").ToList(); QueryService <Account> querySvcBill = new QueryService <Account>(serviceContext); List <Account> BillList = querySvcBill.ExecuteIdsQuery("SELECT * FROM Account MaxResults 1000").ToList(); var VendorDetails = _IVendorManagement.GetCompanyQuickBookId(Convert.ToInt64(Obj.VendorId)); //var vendorData = vendorList.Where(x => x.Id == "64").FirstOrDefault(); //var dataget = BillList.Where(x => x.Name == "Sample1").FirstOrDefault(); var bill = new Bill(); //Vendor Reference var reference = new ReferenceType(); var accountRef = new AccountBasedExpenseLineDetail(); if (VendorDetails > 0) { var vendorData = vendorList.Where(x => x.Id == VendorDetails.ToString()).FirstOrDefault(); //Vendor Reference bill.VendorRef = new ReferenceType() { name = vendorData.DisplayName, Value = vendorData.Id }; } //End Vendor Reference bill.TotalAmt = Convert.ToDecimal(Obj.BillAmount); var metaData = new ModificationMetaData(); metaData.CreateTime = Convert.ToDateTime(Obj.InvoiceDate); bill.MetaData = metaData; //End Time var LocationName = _IBillDataManager.GetLocationDataByLocId(LocationId); bill.DepartmentRef = new ReferenceType() { name = LocationName.LocationName, Value = LocationName.QBK_Id.ToString() }; Line line = new Line(); List <Line> lineList = new List <Line>(); bill.APAccountRef = new ReferenceType() { name = "Accounts Payable (A/P)", Value = "33" }; int i = 1; var costArray = new List <long>(); var costCodeArray = new List <CostCodeListData>(); var costDataModel = new CostCodeListData(); decimal amt = 0; decimal?Total = 0; if (FacilityData != null && FacilityData.Count() > 0) { foreach (var item in FacilityData) { long CostCodeId = Convert.ToInt64(item.CostCodeId); var costCodeName = _IBillDataManager.GetCostCodeData(CostCodeId); var dataget = BillList.Where(x => x.Name == costCodeName.Description).FirstOrDefault(); accountRef.AccountRef = new ReferenceType() { name = dataget.Name, Value = dataget.Id }; if (costCodeArray.Count() > 0) { foreach (var tt in costCodeArray) { if (tt.CostCodeId == item.CostCodeId) { amt = Convert.ToDecimal(item.Amount); Total = amt + tt.Amount; line.Amount = Convert.ToDecimal(Total); } else { line.Amount = Convert.ToDecimal(item.Amount); } } line.AnyIntuitObject = accountRef; line.DetailType = LineDetailTypeEnum.AccountBasedExpenseLineDetail; line.DetailTypeSpecified = true; //line.Amount = Convert.ToDecimal(item.Amount); // line.Amount = Convert.ToDecimal(objBillDataServiceModel.InvoiceAmount); line.AmountSpecified = true; line.LineNum = Convert.ToString(i); line.Description = "Manual Bill"; lineList.Add(line); } else { line.Amount = Convert.ToDecimal(item.Amount); if (FacilityData.Count() == 1) { line.AnyIntuitObject = accountRef; line.DetailType = LineDetailTypeEnum.AccountBasedExpenseLineDetail; line.DetailTypeSpecified = true; //line.Amount = Convert.ToDecimal(item.Amount); // line.Amount = Convert.ToDecimal(objBillDataServiceModel.InvoiceAmount); line.AmountSpecified = true; line.LineNum = Convert.ToString(i); line.Description = "Manual Bill"; lineList.Add(line); } } costDataModel.CostCodeId = Convert.ToInt64(item.CostCodeId); costDataModel.Amount = Convert.ToDecimal(item.Amount); costCodeArray.Add(costDataModel); i++; } } else { line.Amount = Convert.ToDecimal(Obj.BillAmount); var dataget = BillList.Where(x => x.Name == "Other Expenses").FirstOrDefault(); accountRef.AccountRef = new ReferenceType() { name = dataget.Name, Value = dataget.Id }; line.AnyIntuitObject = accountRef; line.DetailType = LineDetailTypeEnum.AccountBasedExpenseLineDetail; line.DetailTypeSpecified = true; //line.Amount = Convert.ToDecimal(item.Amount); // line.Amount = Convert.ToDecimal(objBillDataServiceModel.InvoiceAmount); line.AmountSpecified = true; line.LineNum = Convert.ToString(i); line.Description = "Manual Bill"; lineList.Add(line); } bill.Line = lineList.ToArray(); // bill.ref resultBill = commonServiceQBO.Add(bill) as Bill; } catch (Exception ex) { return(Json(ex.Message, JsonRequestBehavior.AllowGet)); } //} Obj.QuickBookBillId = Convert.ToInt64(resultBill.Id); result = _IBillDataManager.ApproveBill(Obj, UserName, UserId, LocationId); } else { result = "No data to Approve please check bill data in grid."; } } catch (Exception ex) { return(Json(ex.Message, JsonRequestBehavior.AllowGet)); } return(Json(result, JsonRequestBehavior.AllowGet)); }