public static Line ToIppPurchaseOrderLineItem(this QBInternalPurchaseOrdeLineItem qbInternalPurchaseOrdeLineItem)
        {
            var ippPurchaseOrderLineItem = new Line
            {
                Amount          = qbInternalPurchaseOrdeLineItem.Amount,
                AmountSpecified = true,
                Id      = qbInternalPurchaseOrdeLineItem.Id,
                LineNum = qbInternalPurchaseOrdeLineItem.LineNum,
            };

            var basedExpenseLineDetail = new ItemBasedExpenseLineDetail
            {
                Qty          = qbInternalPurchaseOrdeLineItem.Qty,
                QtySpecified = true,
            };

            basedExpenseLineDetail.ItemRef = new ReferenceType
            {
                name  = qbInternalPurchaseOrdeLineItem.ItemName,
                Value = qbInternalPurchaseOrdeLineItem.ItemValue,
            };

            ippPurchaseOrderLineItem.AnyIntuitObject = basedExpenseLineDetail;
            //ippPurchaseOrderLineItem.DetailType = LineDetailTypeEnum.PurchaseOrderItemLineDetail;
            ippPurchaseOrderLineItem.DetailType          = LineDetailTypeEnum.ItemBasedExpenseLineDetail;
            ippPurchaseOrderLineItem.DetailTypeSpecified = true;

            return(ippPurchaseOrderLineItem);
        }
        public static Line ToIppPurchaseOrderLineItem(this PurchaseOrdeLineItem qbInternalPurchaseOrdeLineItem)
        {
            var basedExpenseLineDetail = new ItemBasedExpenseLineDetail
            {
                Qty          = qbInternalPurchaseOrdeLineItem.Qty,
                QtySpecified = true,
                ItemRef      = new ReferenceType
                {
                    name  = qbInternalPurchaseOrdeLineItem.ItemName,
                    Value = qbInternalPurchaseOrdeLineItem.ItemValue,
                },
                ItemElementName = ItemChoiceType.UnitPrice,
                AnyIntuitObject = qbInternalPurchaseOrdeLineItem.UnitPrice,
            };

            var ippPurchaseOrderLineItem = new Line
            {
                //Amount = qbInternalPurchaseOrdeLineItem.Amount,
                Amount          = qbInternalPurchaseOrdeLineItem.Qty * qbInternalPurchaseOrdeLineItem.UnitPrice,
                AmountSpecified = true,
                //Id = qbInternalPurchaseOrdeLineItem.Id,
                //LineNum = qbInternalPurchaseOrdeLineItem.LineNum,
            };

            ippPurchaseOrderLineItem.AnyIntuitObject     = basedExpenseLineDetail;
            ippPurchaseOrderLineItem.DetailType          = LineDetailTypeEnum.ItemBasedExpenseLineDetail;
            ippPurchaseOrderLineItem.DetailTypeSpecified = true;

            return(ippPurchaseOrderLineItem);
        }
Exemple #3
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);
        }