Exemple #1
0
        /// <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;
            }
        }
Exemple #2
0
        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));
        }