Пример #1
0
        public JsonResult MakePaymentData(PaymentModel objPaymentModel, PaymentModel ObjData)
        {
            eTracLoginModel ObjLoginModel = null;
            long            Vendor        = 0;
            var             result        = "";
            var             resultPayment = new BillPayment();

            if (Session["eTrac"] != null)
            {
                ObjLoginModel = (eTracLoginModel)(Session["eTrac"]);
            }
            try
            {
                if (objPaymentModel != null && ObjData != null)
                {
                    objPaymentModel.UserId = ObjLoginModel.UserId;

                    string realmId = CallbackController.RealMId.ToString(); // Session["realmId"].ToString();
                    try
                    {
                        if (realmId != null)
                        {
                            string AccessToken = CallbackController.AccessToken.ToString(); //Session["access_token"].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> querySvcAccount = new QueryService <Account>(serviceContext);
                            List <Account>         accountData     = querySvcAccount.ExecuteIdsQuery("SELECT * FROM Account MaxResults 1000").ToList();

                            var VendorDetails = _IVendorManagement.GetCompanyQuickBookId(Convert.ToInt64(ObjData.VendorId));
                            //var getAccountDetails = _IVendorManagement.GetAccountDetailsByVendorId(Convert.ToInt64(objPaymentModel.OpeartorCAD_Id)); // (Convert.ToInt64(ObjData.VendorId));
                            var getAccountDetails            = _IVendorManagement.GetAccountDetailsByVendorId(Convert.ToInt64(objPaymentModel.CompanyAccountId)); // (Convert.ToInt64(ObjData.VendorId));
                            var getBill                      = _IBillDataManager.GetBillQBKId(Convert.ToInt64(ObjData.BillNo));
                            QueryService <Bill> querySvcBill = new QueryService <Bill>(serviceContext);
                            List <Bill>         billData     = querySvcBill.ExecuteIdsQuery("SELECT * FROM Bill MaxResults 1000").ToList();

                            var bill = billData.Where(x => x.Id == getBill.ToString()).FirstOrDefault();
                            // var vendorData = vendorList.Where(x => x.Id == "64").FirstOrDefault();
                            var payment = new BillPayment();
                            //Vendor Reference
                            var reference         = new ReferenceType();
                            var accountRef        = new AccountBasedExpenseLineDetail();
                            var billPaymentCheck  = new BillPaymentCheck();
                            var billPaymentCredit = new BillPaymentCreditCard();
                            var line     = new Line();
                            var lineList = new List <Line>();

                            if (VendorDetails > 0)
                            {
                                var vendorData = vendorList.Where(x => x.Id == VendorDetails.ToString()).FirstOrDefault();
                                //Vendor Reference
                                payment.VendorRef = new ReferenceType()
                                {
                                    name  = vendorData.DisplayName,
                                    Value = vendorData.Id
                                };
                            }
                            line.LineNum = "1";
                            var any = new IntuitAnyType();
                            if (getAccountDetails != null)
                            {
                                var ayintuit        = new IntuitAnyType();
                                var accountsDetails = accountData.Where(x => x.Id == getAccountDetails.QuickbookAcountId.ToString()).FirstOrDefault();//getAccountDetails.QuickbookAcountId.ToString()
                                if (ObjData.PaymentMode == "Wired")
                                {
                                    payment.PayType = BillPaymentTypeEnum.CreditCard;
                                    var CCD = new CreditCardPayment();
                                    billPaymentCredit.CCAccountRef = new ReferenceType()
                                    {
                                        name  = accountsDetails.Name,
                                        Value = accountsDetails.Id,
                                    };
                                    payment.AnyIntuitObject = billPaymentCredit;
                                }
                                else if (ObjData.PaymentMode == "Card")
                                {
                                    payment.PayType = BillPaymentTypeEnum.CreditCard;
                                    var CCD = new CreditCardPayment();
                                    billPaymentCredit.CCAccountRef = new ReferenceType()
                                    {
                                        name  = accountsDetails.Name,
                                        Value = accountsDetails.Id,
                                    };
                                    payment.AnyIntuitObject = billPaymentCredit;
                                }
                                else if (ObjData.PaymentMode == "Check")
                                {
                                    var checking = new CheckPayment();
                                    payment.PayType = BillPaymentTypeEnum.Check;
                                    billPaymentCheck.BankAccountRef = new ReferenceType()
                                    {
                                        name  = accountsDetails.Name,
                                        Value = accountsDetails.Id
                                    };
                                    billPaymentCheck.PrintStatus = PrintStatusEnum.NeedToPrint;
                                    payment.AnyIntuitObject      = billPaymentCheck;
                                }
                            }
                            payment.APAccountRef = new ReferenceType()
                            {
                                name  = "Accounts Payable (A/P)",
                                Value = "33"
                            };
                            QueryService <Department> querySvcDept = new QueryService <Department>(serviceContext);
                            var LocationName = _IBillDataManager.GetLocationDataByLocId(Convert.ToInt64(ObjData.LocationId));
                            payment.DepartmentRef = new ReferenceType()
                            {
                                name  = LocationName.LocationName,
                                Value = LocationName.QBK_Id.ToString()
                            };

                            line.Amount          = Convert.ToDecimal(ObjData.BillAmount);
                            line.AmountSpecified = true;
                            var linkedlist = new List <LinkedTxn>();
                            var linked     = new LinkedTxn();
                            linked.TxnId   = bill.Id;
                            linked.TxnType = "Bill";

                            linkedlist.Add(linked);
                            line.LinkedTxn  = linkedlist.ToArray();
                            line.DetailType = LineDetailTypeEnum.PaymentLineDetail;
                            lineList.Add(line);
                            payment.Line = lineList.ToArray();
                            //payment.PayType = BillPaymentTypeEnum.CreditCard;
                            payment.PayTypeSpecified  = true;
                            payment.TotalAmt          = Convert.ToDecimal(ObjData.BillAmount);
                            payment.TotalAmtSpecified = true;

                            var metaData = new ModificationMetaData();
                            metaData.CreateTime      = Convert.ToDateTime(ObjData.BillDate);
                            payment.MetaData         = metaData;
                            payment.PayTypeSpecified = true;
                            resultPayment            = commonServiceQBO.Add(payment) as BillPayment;

                            //To close PO after Payment. Update Payment in Quickbook.
                            QueryService <PurchaseOrder> querySvcPO = new QueryService <PurchaseOrder>(serviceContext);
                            List <PurchaseOrder>         POList     = querySvcPO.ExecuteIdsQuery("SELECT * FROM PurchaseOrder MaxResults 1000").ToList();
                            if (ObjData.BillType == "PO")
                            {
                                var getPOQData = _IPaymentManager.GetPODetails(objPaymentModel, ObjData);
                                if (getPOQData.QuickBookPOId > 0)
                                {
                                    var data = POList.Where(x => x.Id == getPOQData.QuickBookPOId.ToString()).FirstOrDefault();
                                    data.POStatus = PurchaseOrderStatusEnum.Closed;
                                    var update = commonServiceQBO.Update(data) as PurchaseOrder;
                                }
                            }
                        }
                        else
                        {
                            ViewBag.Message           = CommonMessage.FailureMessage();
                            result                    = CommonMessage.FailureMessage();
                            ViewBag.AlertMessageClass = ObjAlertMessageClass.Danger;
                            return(Json(result, JsonRequestBehavior.AllowGet));
                        }
                    }
                    catch (Exception ex)
                    {
                        ViewBag.Message           = ex.Message;
                        ViewBag.AlertMessageClass = ObjAlertMessageClass.Danger;
                    }

                    result = _IPaymentManager.MakePayment(objPaymentModel, ObjData);
                    if (result != null)
                    {
                        return(Json(result, JsonRequestBehavior.AllowGet));
                    }
                    else
                    {
                        ViewBag.Message           = CommonMessage.FailureMessage();
                        ViewBag.AlertMessageClass = ObjAlertMessageClass.Danger;
                        return(Json(result, JsonRequestBehavior.AllowGet));
                    }
                }
                else
                {
                    ViewBag.Message           = CommonMessage.FailureMessage();
                    ViewBag.AlertMessageClass = ObjAlertMessageClass.Danger;
                }
            }
            catch (Exception ex)
            {
                return(Json(ex.Message, JsonRequestBehavior.AllowGet));
            }
            //return null;
            return(Json(result, JsonRequestBehavior.AllowGet));
        }
Пример #2
0
        /// <summary>
        /// Create Billable expense
        /// </summary>
        /// <param name="context"></param>
        /// <param name="customer"></param>
        /// <returns>purchase</returns>
        public static Purchase BillableExpenseCreate(ServiceContext context, Customer customer)
        {
            Account  account        = QBOHelper.QBO.QueryOrAddAccount(context, "select * from account where AccountSubType='Checking'", AccountTypeEnum.Bank, AccountClassificationEnum.Asset, AccountSubTypeEnum.Checking);
            Account  expenseAccount = QBOHelper.QBO.QueryOrAddAccount(context, "select * from account where AccountType='Expense'", AccountTypeEnum.Expense, AccountClassificationEnum.Expense, AccountSubTypeEnum.AdvertisingPromotional);
            Vendor   vendor         = QBOHelper.QBO.QueryOrAddVendor(context);
            Item     item           = QBOHelper.QBO.ItemCreate(context);
            Purchase purchase       = new Purchase
            {
                PaymentType          = PaymentTypeEnum.Cash,
                PaymentTypeSpecified = true,
                AccountRef           = new ReferenceType {
                    name = account.Name, Value = account.Id
                },
                EntityRef = new ReferenceType {
                    type = EntityTypeEnum.Vendor.ToString(), name = vendor.DisplayName, Value = vendor.Id
                }
            };

            Line itemLine = new Line
            {
                Description         = "Item based expense line detail.",
                DetailType          = LineDetailTypeEnum.ItemBasedExpenseLineDetail,
                DetailTypeSpecified = true
            };

            MarkupInfo markupInfo = new MarkupInfo
            {
                PercentBased          = true,
                PercentBasedSpecified = true,
                PercentSpecified      = true,
                Percent = new Decimal(50)
            };

            ItemBasedExpenseLineDetail itemLineDetail = new ItemBasedExpenseLineDetail
            {
                CustomerRef = new ReferenceType {
                    name = customer.DisplayName, Value = customer.Id
                },
                BillableStatus          = BillableStatusEnum.Billable,
                BillableStatusSpecified = true,
                ItemRef = new ReferenceType {
                    name = item.Name, Value = item.Id
                },
                MarkupInfo = markupInfo,
            };

            itemLine.AnyIntuitObject = itemLineDetail;
            if (item.UnitPrice > 0)
            {
                itemLine.Amount = item.UnitPrice;
            }
            else
            {
                itemLine.Amount = new Decimal(100);
            }

            itemLine.AmountSpecified = true;

            Line accountLine = new Line
            {
                Description         = "Account based expense line detail.",
                DetailType          = LineDetailTypeEnum.AccountBasedExpenseLineDetail,
                DetailTypeSpecified = true
            };

            AccountBasedExpenseLineDetail accountLineDetail = new AccountBasedExpenseLineDetail
            {
                CustomerRef = new ReferenceType {
                    name = customer.DisplayName, Value = customer.Id
                },
                AccountRef = new ReferenceType {
                    name = expenseAccount.Name, Value = expenseAccount.Id
                },
                BillableStatus          = BillableStatusEnum.Billable,
                BillableStatusSpecified = true,
                MarkupInfo = markupInfo,
            };

            accountLine.AnyIntuitObject = accountLineDetail;
            accountLine.Amount          = new Decimal(100);
            accountLine.AmountSpecified = true;

            Line[] lines = { itemLine, accountLine };
            purchase.Line = lines;

            // Add created purchase in QBO
            Purchase apiResponse = QBOHelper.Helper.AddToQBO(context, purchase);

            return(apiResponse);
        }
Пример #3
0
        private Purchase AddCheckPayment(Purchase purchaseExisting)
        {
            QueryService <Customer> customerQueryService = new QueryService <Customer>(serviceContext);
            Customer customer = customerQueryService.ExecuteIdsQuery("Select * From Customer StartPosition 1 MaxResults 1").FirstOrDefault <Customer>();


            //Find Bank Account
            QueryService <Account> accountQueryService = new QueryService <Account>(serviceContext);
            Account account = accountQueryService.ExecuteIdsQuery("Select * From Account Where AccountType='Bank' StartPosition 1 MaxResults 1").FirstOrDefault <Account>();
            //Expense Account
            Account expenseaccount = accountQueryService.ExecuteIdsQuery("Select * From Account Where AccountType='Expense' StartPosition 1 MaxResults 1").FirstOrDefault <Account>();

            Purchase purchase = new Purchase();

            //Assign the doc number from previously fetched check purchase
            purchase.DocNumber = purchaseExisting.DocNumber;

            purchase.AccountRef = new ReferenceType()
            {
                name  = account.Name,
                Value = account.Id
            };

            purchase.PaymentType          = PaymentTypeEnum.Check;
            purchase.PaymentTypeSpecified = true;

            purchase.EntityRef = new ReferenceType()
            {
                name  = customer.DisplayName,
                Value = customer.Id
            };


            purchase.TotalAmt          = new Decimal(1000.00);
            purchase.TotalAmtSpecified = true;



            purchase.TxnDate          = DateTime.UtcNow.Date;
            purchase.TxnDateSpecified = true;


            List <Line> lineList = new List <Line>();
            Line        line     = new Line();

            //line.LineNum = "LineNum";
            line.Description     = "Description for Line";
            line.Amount          = new Decimal(1000.00);
            line.AmountSpecified = true;


            line.DetailType          = LineDetailTypeEnum.AccountBasedExpenseLineDetail;
            line.DetailTypeSpecified = true;
            AccountBasedExpenseLineDetail lineDetail = new AccountBasedExpenseLineDetail();

            lineDetail.AccountRef = new ReferenceType {
                name = expenseaccount.Name, Value = expenseaccount.Id
            };
            lineDetail.BillableStatus     = BillableStatusEnum.NotBillable;
            lineDetail.TaxAmount          = new Decimal(10.00);
            lineDetail.TaxAmountSpecified = true;
            line.AnyIntuitObject          = lineDetail;



            lineList.Add(line);
            purchase.Line = lineList.ToArray();

            return(purchase);
        }
Пример #4
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));
        }
Пример #5
0
        /// <summary>
        /// Created By: Ashwajit Bansod
        /// Created Date : 18-OCT-2018
        /// Created For : To Approve Miscellaneous.
        /// </summary>
        /// <param name="Obj"></param>
        /// <returns></returns>
        public JsonResult ApproveData(List <MiscellaneousListModel> Obj, long LocationId)
        {
            eTracLoginModel ObjLoginModel = null;
            bool            result;
            string          UserName        = "";
            string          data            = "";
            long            UserId          = 0;
            var             resultBill      = new Bill();
            long            VendorDetailsId = 0;

            if (Session["eTrac"] != null)
            {
                ObjLoginModel = (eTracLoginModel)(Session["eTrac"]);
            }
            try
            {
                if (Obj.Count > 0)
                {
                    //long VendorId = 0;
                    UserName = ObjLoginModel.UserName;
                    UserId   = ObjLoginModel.UserId;
                    //foreach (var item in Obj)
                    //{
                    //    VendorId = item.Vendor;
                    //}

                    //if (Session["realmId"] != null)
                    //{
                    string realmId = CallbackController.RealMId.ToString();// Session["realmId"].ToString();
                    try
                    {
                        string AccessToken = CallbackController.AccessToken.ToString();    // Session["access_token"].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> querySvcAccount = new QueryService <Account>(serviceContext);
                        List <Account>         accountData     = querySvcAccount.ExecuteIdsQuery("SELECT * FROM Account MaxResults 1000").ToList();
                        /// default elite parking service vendor Id passed hardcoded it will will change in future
                        VendorDetailsId = _IVendorManagement.GetCompanyQuickBookId(Convert.ToInt64(10019));
                        // var vendorData = vendorList.Where(x => x.Id == "64").FirstOrDefault();
                        var bill = new Bill();
                        //Vendor Reference
                        var reference  = new ReferenceType();
                        var accountRef = new AccountBasedExpenseLineDetail();
                        if (VendorDetailsId > 0)
                        {
                            var vendorData = vendorList.Where(x => x.Id == VendorDetailsId.ToString()).FirstOrDefault();

                            //Vendor Reference
                            //Set it Hardcoded because need to add vendor , it is mendatory field so as per manager
                            //operating company will pay miscellaneous expense
                            bill.VendorRef = new ReferenceType()
                            {
                                name  = vendorData.CompanyName,
                                Value = vendorData.Id
                            };
                        }

                        bill.APAccountRef = new ReferenceType()
                        {
                            name  = "Accounts Payable (A/P)",
                            Value = "33"
                        };

                        QueryService <Department> querySvcDept = new QueryService <Department>(serviceContext);
                        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>();
                        Line[]      line1 = { };
                        int         i = 1;
                        var         costArray = new List <long>();
                        var         costCodeArray = new List <CostCodeListData>();
                        var         costDataModel = new CostCodeListData();
                        decimal     amt = 0; decimal?Total = 0;
                        long        CostCodeIdData = 0;
                        var         date           = new DateTime();
                        long        MISNumber      = 0;
                        foreach (var item in Obj)
                        {
                            string id = item.MISId.Split('S')[1];
                            MISNumber = Convert.ToInt64(id);
                            var costCodeId   = _IMiscellaneousManager.MiscellaneoousDataById(MISNumber);
                            var CostCodeData = _IBillDataManager.GetCostCodeData(Convert.ToInt64(costCodeId.CostCode));
                            var dataget      = accountData.Where(x => x.Name == CostCodeData.Description).FirstOrDefault();
                            MISNumber             = Convert.ToInt64(item.MISNumber);
                            accountRef.AccountRef = new ReferenceType()
                            {
                                name  = dataget.Name,
                                Value = dataget.Id
                            };


                            //if (costCodeArray.Count() > 0)
                            //{
                            //    foreach (var tt in costCodeArray)
                            //    {
                            //        if (tt.CostCodeId == costCodeId.CostCode)
                            //        {
                            //            amt = Convert.ToDecimal(item.InvoiceAmount);
                            //            Total = amt + tt.Amount;
                            //            line.Amount = Convert.ToDecimal(Total);
                            //        }
                            //        else
                            //        {
                            //            line.Amount = Convert.ToDecimal(item.InvoiceAmount);
                            //        }
                            //    }
                            //    date = Convert.ToDateTime(item.MISDate);
                            //    line.LineNum = Convert.ToString(i);
                            //    line.AnyIntuitObject = accountRef;
                            //    line.DetailType = LineDetailTypeEnum.AccountBasedExpenseLineDetail;
                            //    line.DetailTypeSpecified = true;
                            //    line.AmountSpecified = true;
                            //    bill.Balance = Convert.ToDecimal(item.InvoiceAmount);
                            //    line.Amount = Convert.ToDecimal(item.InvoiceAmount);
                            //    line.Description = "Miscellaneous";
                            //    //line1(line );
                            //    lineList.Add(line);
                            //}
                            //else
                            //{

                            //    line.Amount = Convert.ToDecimal(item.InvoiceAmount);
                            //    if (Obj.Count() == 1)
                            //    {
                            //        date = Convert.ToDateTime(item.MISDate);
                            //        line.LineNum = Convert.ToString(i);

                            //        line.DetailType = LineDetailTypeEnum.AccountBasedExpenseLineDetail;
                            //        line.DetailTypeSpecified = true;
                            //        line.AnyIntuitObject = accountRef;
                            //        line.AmountSpecified = true;
                            //        bill.Balance = Convert.ToDecimal(item.InvoiceAmount);
                            //        line.Amount = Convert.ToDecimal(item.InvoiceAmount);
                            //        line.Description = "Miscellaneous";
                            //        lineList.Add(line);
                            //    //line.
                            //    }
                            //}

                            //costDataModel.CostCodeId = Convert.ToInt64(costCodeId.CostCode);
                            //costDataModel.Amount = Convert.ToDecimal(item.InvoiceAmount);
                            //costCodeArray.Add(costDataModel);
                            date                     = Convert.ToDateTime(item.MISDate);
                            line.LineNum             = Convert.ToString(i);
                            line.DetailType          = LineDetailTypeEnum.AccountBasedExpenseLineDetail;
                            line.DetailTypeSpecified = true;
                            line.AnyIntuitObject     = accountRef;
                            line.AmountSpecified     = true;
                            line.Amount              = Convert.ToDecimal(item.InvoiceAmount);
                            line.Description         = "Miscellaneous";
                            //line
                            lineList.Add(line);

                            i++;
                        }

                        var metaData = new ModificationMetaData();
                        metaData.CreateTime = Convert.ToDateTime(date);
                        bill.MetaData       = metaData;
                        bill.Line           = lineList.ToArray();
                        resultBill          = commonServiceQBO.Add(bill) as Bill;
                    }
                    catch (Exception ex)
                    {
                        ViewBag.Message           = ex.Message;
                        ViewBag.AlertMessageClass = ObjAlertMessageClass.Danger;
                    }

                    //}
                    long MiscQbkId = Convert.ToInt64(resultBill.Id);
                    result = _IMiscellaneousManager.ApproveMiscellaneous(Obj, UserName, UserId, LocationId, MiscQbkId, VendorDetailsId);
                    if (result == true)
                    {
                        data = CommonMessage.ApproveMiscellaneous();
                    }
                    else
                    {
                        data = CommonMessage.ErrorMiscellaneous();
                    }
                }
                else
                {
                    data = "No data to Approve please check miscellaneous data in grid.";
                }
            }
            catch (Exception ex)
            {
                return(Json(ex.Message, JsonRequestBehavior.AllowGet));
            }
            return(Json(data, JsonRequestBehavior.AllowGet));
        }
Пример #6
0
        /// <summary>
        /// Create Payables Bill
        /// </summary>
        /// <param name="dtBill"></param>
        /// <param name="sentDtBillItems"></param>
        public void CreatePayablesBill(DataTable dtBill, DataTable sentDtBillItems)
        {
            Bill bill = new Bill();

            bill.DocNumber = Guid.NewGuid().ToString("N").Substring(0, 10);
            bill.TxnStatus = "Payable";

            bill.APAccountRef = new ReferenceType()
            {
                type  = Enum.GetName(typeof(objectNameEnumType), objectNameEnumType.Account),
                name  = "Account Payable",
                Value = "QB:1"
            };
            bill.VendorRef = new ReferenceType()
            {
                type = Enum.GetName(typeof(objectNameEnumType), objectNameEnumType.Vendor),
                //name = "sentVendorKey",
                Value = string.Concat("QB:", ((string)dtBill.Rows[0]["VendorName"]))
            };

            //	bill.TxnDate.SetValue((DateTime)dtBill.Rows[0]["BillDate"]);
            //	bill.Memo.SetValue((string)dtBill.Rows[0]["VendorBillMemo"]);
            //	bill.RefNumber.SetValue((string)dtBill.Rows[0]["VendorInvoiceNumber"]);

            bill.TxnTaxDetail = new TxnTaxDetail();
            bill.TxnTaxDetail.DefaultTaxCodeRef = new ReferenceType()
            {
                Value = "QB:123",
                type  = Enum.GetName(typeof(objectNameEnumType), objectNameEnumType.TaxCode),
                name  = "TaxCodeName"
            };
            bill.TxnTaxDetail.TotalTax          = new Decimal(0.00);
            bill.TxnTaxDetail.TotalTaxSpecified = true;

            Line[] lines       = new Line[sentDtBillItems.Rows.Count];
            int    billLineCnt = 0;

            foreach (System.Data.DataRow poItemrow in sentDtBillItems.Rows)
            {
                Line line1 = new Line();
                line1.Amount          = (decimal)poItemrow["POLineQty"];
                line1.AmountSpecified = true;
                line1.Description     = poItemrow["VendorItemNbr"].ToString();
                line1.LineNum         = poItemrow["POLinePrintOrder"].ToString();
                line1.Id = (billLineCnt + 1).ToString();

                //PurchaseOrderItemLineDetail purchaseOrderItemLineDetail = new PurchaseOrderItemLineDetail();
                //purchaseOrderItemLineDetail.Qty = (decimal)poItemrow["POLineQty"];
                //purchaseOrderItemLineDetail.QtySpecified = true;
                //purchaseOrderItemLineDetail.AnyIntuitObject = (decimal)(poItemrow["POLinePrice"]);
                //purchaseOrderItemLineDetail.ItemElementName = ItemChoiceType.UnitPrice;
                //line1.AnyIntuitObject = purchaseOrderItemLineDetail;

                AccountBasedExpenseLineDetail accountBasedExpenseLineDetail = new AccountBasedExpenseLineDetail();
                accountBasedExpenseLineDetail.AccountRef = new ReferenceType()
                {
                    Value = poItemrow["AccountNumber"].ToString()
                };
                accountBasedExpenseLineDetail.ClassRef = new ReferenceType()
                {
                    Value = poItemrow["Class"].ToString()
                };
                accountBasedExpenseLineDetail.BillableStatus = BillableStatusEnum.Billable;
                line1.AnyIntuitObject = accountBasedExpenseLineDetail;

                lines[billLineCnt] = line1;
                billLineCnt++;
            }
            bill.Line = lines;

            Bill resultBill = services.Add(bill) as Bill;
        }
Пример #7
0
        public JsonResult SavePOTypeDetails(POTypeDataModel objPOTypeDataModel, List <GridDataPO> obj, List <QuestionAnswerModel> objQuestioAsnwerList)//, HttpPostedFileBase file)//(POTypeDataModel objPOTypeDataModel)
        {
            eTracLoginModel        ObjLoginModel = null;
            HttpFileCollectionBase files         = Request.Files;
            bool savedStatus = false;
            var  resultSave  = new PurchaseOrder();

            if (Session["eTrac"] != null)
            {
                ObjLoginModel = (eTracLoginModel)(Session["eTrac"]);
            }
            try
            {
                objPOTypeDataModel.UserId = ObjLoginModel.UserId;
                if (objPOTypeDataModel != null && objPOTypeDataModel.POId == 0)
                {
                    if (objPOTypeDataModel.POD_EmergencyPODocumentFile != null)
                    {
                        string AttachmentName = ObjLoginModel.UserId + "_" + DateTime.Now.Ticks.ToString() + "_" + Convert.ToString(objPOTypeDataModel.POD_EmergencyPODocumentFile.FileName);
                        CommonHelper.StaticUploadImage(objPOTypeDataModel.POD_EmergencyPODocumentFile, Server.MapPath(ConfigurationManager.AppSettings["EmergencyDocuments"]), AttachmentName);
                        objPOTypeDataModel.POD_EmergencyPODocument = AttachmentName;
                    }
                    bool IsManager = true;


                    string realmId = CallbackController.RealMId.ToString();//Session["realmId"].ToString();
                    if (realmId != null)
                    {
                        try
                        {
                            string AccessToken  = CallbackController.AccessToken.ToString();   // Session["access_token"].ToString();
                            string refreshToken = CallbackController.RefreshToken;
                            var    principal    = User as ClaimsPrincipal;
                            OAuth2RequestValidator oauthValidator = new OAuth2RequestValidator(AccessToken);
                            ServiceContext         serviceContext = new ServiceContext(realmId, IntuitServicesType.QBO, oauthValidator);
                            serviceContext.IppConfiguration.MinorVersion.Qbo = "23";
                            DataService commonServiceQBO = new DataService(serviceContext);
                            // Create a QuickBooks QueryService using ServiceContext
                            Account account = new Account();

                            QueryService <Account> querySvcCompany = new QueryService <Account>(serviceContext);
                            List <Account>         listAccount     = querySvcCompany.ExecuteIdsQuery("SELECT * FROM Account MaxResults 1000")
                                                                     .ToList();

                            QueryService <Vendor> querySvc   = new QueryService <Vendor>(serviceContext);
                            List <Vendor>         vendorList = querySvc.ExecuteIdsQuery("SELECT * FROM Vendor MaxResults 1000").ToList();

                            //var Vendor = _IVendorManagement.GetVendorId(objListData.CompanyName);
                            var           VendorDetails   = _IVendorManagement.GetCompanyQuickBookId(Convert.ToInt64(objPOTypeDataModel.Vendor));
                            ReferenceType parentReference = new ReferenceType();
                            var           purchaseOrder   = new PurchaseOrder();
                            //var lineDetailType = new LineDetailTypeEnum();
                            if (VendorDetails > 0)
                            {
                                var vendorData = vendorList.Where(x => x.Id == VendorDetails.ToString()).FirstOrDefault();
                                //Vendor Reference
                                purchaseOrder.VendorRef = new ReferenceType()
                                {
                                    name  = vendorData.DisplayName,
                                    Value = vendorData.Id
                                };
                            }
                            var LocationName = _IBillDataManager.GetLocationDataByLocId(Convert.ToInt64(objPOTypeDataModel.Location));
                            purchaseOrder.DepartmentRef = new ReferenceType()
                            {
                                name  = LocationName.LocationName,
                                Value = LocationName.QBK_Id.ToString()
                            };
                            purchaseOrder.POStatus = PurchaseOrderStatusEnum.Open;
                            //Line line = new Line();
                            List <Line> lineList   = new List <Line>();
                            var         accountRef = new AccountBasedExpenseLineDetail();
                            purchaseOrder.APAccountRef = new ReferenceType()
                            {
                                name  = "Accounts Payable (A/P)",
                                Value = "33"
                            };

                            foreach (var item in obj)
                            {
                                var line = new Line();
                                line.DetailType = LineDetailTypeEnum.AccountBasedExpenseLineDetail;
                                long CostCodeId   = Convert.ToInt64(item.CostCode);
                                var  costCodeName = _IBillDataManager.GetCostCodeData(CostCodeId);
                                var  dataget      = listAccount.Where(x => x.Name == costCodeName.Description).FirstOrDefault();
                                if (dataget != null)
                                {
                                    accountRef.AccountRef = new ReferenceType()
                                    {
                                        name  = dataget.Name,
                                        Value = dataget.Id
                                    };
                                }
                                line.AnyIntuitObject     = accountRef;
                                line.DetailTypeSpecified = true;
                                line.Amount          = Convert.ToDecimal(item.Quantity) * Convert.ToDecimal(item.UnitPrice);
                                line.AmountSpecified = true;
                                line.Description     = item.COM_Facility_Desc;
                                lineList.Add(line);
                            }
                            purchaseOrder.Line = lineList.ToArray();
                            resultSave         = commonServiceQBO.Add(purchaseOrder) as PurchaseOrder;
                        }
                        catch (Exception ex)
                        {
                            ViewBag.Message           = ex.Message;
                            ViewBag.AlertMessageClass = ObjAlertMessageClass.Danger;
                        }
                    }
                    if (resultSave.Id != null)
                    {
                        objPOTypeDataModel.QBK_Id = Convert.ToInt64(resultSave.Id);
                    }
                    else
                    {
                        objPOTypeDataModel.QBK_Id = 0;
                    }
                    savedStatus = _IPOTypeDetails.SavePODetails(objPOTypeDataModel, obj, objQuestioAsnwerList, IsManager);
                    if (savedStatus == true)
                    {
                        ViewBag.Message           = CommonMessage.SaveSuccessMessage();
                        ViewBag.AlertMessageClass = ObjAlertMessageClass.Success;
                        return(Json(savedStatus, JsonRequestBehavior.AllowGet));
                    }
                    else
                    {
                        ViewBag.Message           = CommonMessage.FailureMessage();
                        ViewBag.AlertMessageClass = ObjAlertMessageClass.Danger;// store the failure message in tempdata to display in view.
                        return(Json(savedStatus, JsonRequestBehavior.AllowGet));
                    }
                }
                else
                {
                    bool IsManager = true;
                    savedStatus = _IPOTypeDetails.SavePODetails(objPOTypeDataModel, obj, objQuestioAsnwerList, IsManager);
                    if (savedStatus == true)
                    {
                        ViewBag.Message           = CommonMessage.UpdateSuccessMessage();
                        ViewBag.AlertMessageClass = ObjAlertMessageClass.Success;
                        return(Json(savedStatus, JsonRequestBehavior.AllowGet));
                        //return RedirectToAction("AllPOList", "POTypeData");

                        //return View("AllPOList");
                    }
                    else
                    {
                        ViewBag.Message           = CommonMessage.FailureMessage();
                        ViewBag.AlertMessageClass = ObjAlertMessageClass.Danger;// store the failure message in tempdata to display in view.
                        //return RedirectToAction("AllPOList", "POTypeData");
                        return(Json(savedStatus, JsonRequestBehavior.AllowGet));
                        //return View("AllPOList");
                    }
                }
                //var objModel = new POTypeDataModel();
                //return View("AllPOList");
                //return Json(savedStatus, JsonRequestBehavior.AllowGet);
            }
            catch (Exception ex)
            {
                ViewBag.Message           = ex;
                ViewBag.AlertMessageClass = ObjAlertMessageClass.Danger;
                throw ex;
            }
            finally
            {
                ViewBag.PONumber = _IPOTypeDetails.PONumberData();
                ViewBag.POType   = _IPOTypeDetails.POTypeList();
            }
            //return View("AllPOList");
        }
        /*
         * Create's a Bill
         * A Bill object is an AP transaction representing a request-for-payment from a third party for goods/services rendered, received, or both.
         */
        private Bill CreateBill(ServiceContext serviceContext, Vendor vendors)
        {
            DataService dataService = new DataService(serviceContext);

            #region create customer
            Random   random   = new Random();
            Customer customer = new Customer();

            customer.GivenName   = "Bob" + random.Next();
            customer.FamilyName  = "Serling";
            customer.DisplayName = customer.CompanyName;
            Customer customeradded = dataService.Add <Customer>(customer);

            #endregion

            #region create liability account

            //Get a liability account. If not present create one
            QueryService <Account> accountQuerySvc = new QueryService <Account>(serviceContext);
            Account liabilityAccount = accountQuerySvc.ExecuteIdsQuery("SELECT * FROM Account WHERE AccountType='Accounts Payable' AND Classification='Liability'").FirstOrDefault();
            if (liabilityAccount == null)
            {
                Account accountp = new Account();
                String  guid     = Guid.NewGuid().ToString("N");
                accountp.Name = "Name_" + guid;

                // accountp.FullyQualifiedName = liabilityAccount.Name;

                accountp.Classification          = AccountClassificationEnum.Liability;
                accountp.ClassificationSpecified = true;
                accountp.AccountType             = AccountTypeEnum.AccountsPayable;
                accountp.AccountTypeSpecified    = true;

                accountp.CurrencyRef = new ReferenceType()
                {
                    name  = "United States Dollar",
                    Value = "USD"
                };
                liabilityAccount = dataService.Add <Account>(accountp);
            }
            #endregion

            #region create expense account
            //Get a Expense account. If not present create one
            Account expenseAccount = accountQuerySvc.ExecuteIdsQuery("SELECT * FROM Account WHERE AccountType='Expense' AND Classification='Expense'").FirstOrDefault();
            if (expenseAccount == null)
            {
                Account accounte = new Account();
                String  guid     = Guid.NewGuid().ToString("N");
                accounte.Name = "Name_" + guid;

                // accounte.FullyQualifiedName = expenseAccount.Name;

                accounte.Classification          = AccountClassificationEnum.Liability;
                accounte.ClassificationSpecified = true;
                accounte.AccountType             = AccountTypeEnum.AccountsPayable;
                accounte.AccountTypeSpecified    = true;

                accounte.CurrencyRef = new ReferenceType()
                {
                    name  = "United States Dollar",
                    Value = "USD"
                };
                expenseAccount = dataService.Add <Account>(accounte);
            }
            #endregion

            #region create bill for the added vendor
            //Create a bill and add a vendor reference
            Bill bill = new Bill();

            bill.DueDate          = DateTime.UtcNow.Date;
            bill.DueDateSpecified = true;
            bill.VendorRef        = new ReferenceType()
            {
                name  = vendors.DisplayName,
                Value = vendors.Id
            };
            bill.APAccountRef = new ReferenceType()
            {
                name  = liabilityAccount.Name,
                Value = liabilityAccount.Id
            };
            bill.TotalAmt          = new Decimal(100.00);
            bill.TotalAmtSpecified = true;
            bill.Balance           = new Decimal(100.00);
            bill.BalanceSpecified  = true;
            bill.TxnDate           = DateTime.UtcNow.Date;
            bill.TxnDateSpecified  = true;

            //Create a line for the bill
            List <Line> lineList = new List <Line>();
            Line        line     = new Line();
            line.Description         = "Description";
            line.Amount              = new Decimal(100.00);
            line.AmountSpecified     = true;
            line.DetailType          = LineDetailTypeEnum.AccountBasedExpenseLineDetail;
            line.DetailTypeSpecified = true;
            lineList.Add(line);
            bill.Line = lineList.ToArray();

            //Create an AccountBasedExpenseLineDetail
            AccountBasedExpenseLineDetail detail = new AccountBasedExpenseLineDetail();
            detail.CustomerRef = new ReferenceType {
                name = customeradded.DisplayName, Value = customeradded.Id
            };
            detail.AccountRef = new ReferenceType {
                name = expenseAccount.Name, Value = expenseAccount.Id
            };
            detail.BillableStatus = BillableStatusEnum.NotBillable;
            line.AnyIntuitObject  = detail;
            Bill billadded = dataService.Add <Bill>(bill);
            return(billadded);

            #endregion
        }