- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想使用以下代码创建多个订单项以显示在新发票中。
如何在我的发票中创建多个行项目,对应于我的自定义应用程序中的多个订单项目?
使用具有 4 个订单项的 OrderItems 运行以下代码只显示发票中的一项。价格和名称正确,但产品数量不正确。只有一个出现。
我相信这一行是添加订单项的正确行。但它真的添加了订单项吗?
invoice.Line = new Line[] { invoiceLine };
代码
var orderItems = order.OrderItems;
foreach (var orderItem in orderItems)
{
//Line
Line invoiceLine = new Line();
//Line Description
invoiceLine.Description = itemRepository.Get(i=>i.ItemID == orderItem.ItemID).First().FullDescription;
//Line Amount
invoiceLine.Amount = orderItem.Price * orderItem.Quantity;
invoiceLine.AmountSpecified = true;
//Line Detail Type
invoiceLine.DetailType = LineDetailTypeEnum.SalesItemLineDetail;
invoiceLine.DetailTypeSpecified = true;
//Line Sales Item Line Detail
SalesItemLineDetail lineSalesItemLineDetail = new SalesItemLineDetail();
//Line Sales Item Line Detail - ItemRef
lineSalesItemLineDetail.ItemRef = new ReferenceType()
{
name = itemRepository.Get(
i=>i.ItemID == orderItem.ItemID).First().FullDescription,
Value = item.Id
};
//Line Sales Item Line Detail - UnitPrice
lineSalesItemLineDetail.AnyIntuitObject = orderItem.Price;//33m;
lineSalesItemLineDetail.ItemElementName = ItemChoiceType.UnitPrice;
//Line Sales Item Line Detail - Qty
lineSalesItemLineDetail.Qty = orderItem.Quantity;//10;
lineSalesItemLineDetail.QtySpecified = true;
//Line Sales Item Line Detail - TaxCodeRef
//For US companies, this can be 'TAX' or 'NON
lineSalesItemLineDetail.TaxCodeRef = new ReferenceType()
{
Value = "TAX"
};
//Line Sales Item Line Detail - ServiceDate
lineSalesItemLineDetail.ServiceDate = DateTime.Now.Date;
lineSalesItemLineDetail.ServiceDateSpecified = true;
//Assign Sales Item Line Detail to Line Item
invoiceLine.AnyIntuitObject = lineSalesItemLineDetail;
//Assign Line Item to Invoice
invoice.Line = new Line[] { invoiceLine };
编辑:
OAuthRequestValidator reqValidator = new OAuthRequestValidator(accessToken, accessTokenSecret, consumerKey, consumerKeySecret);
ServiceContext qboContextoAuth = new ServiceContext(realmId, IntuitServicesType.QBO, reqValidator);
var service = new DataService(qboContextoAuth);
//Find Customer
var customerQueryService = new QueryService<Customer>(qboContextoAuth);
Customer customer = customerQueryService.ExecuteIdsQuery("Select * From Customer Where DisplayName = 'John Doe' StartPosition 1 MaxResults 1").FirstOrDefault();
//Find Tax Code for Invoice - Searching for a tax code named 'StateSalesTax' in this example
var stateTaxCodeQueryService = new QueryService<TaxCode>(qboContextoAuth);
TaxCode stateTaxCode = stateTaxCodeQueryService.ExecuteIdsQuery("Select * From TaxCode Where Name='Los Angeles' StartPosition 1 MaxResults 1").FirstOrDefault();
//Find Item
var itemQueryService = new QueryService<Item>(qboContextoAuth);
Item item = itemQueryService.ExecuteIdsQuery("Select * From Item StartPosition 1").FirstOrDefault();
//Find Account - Accounts Receivable account required
var accountQueryService = new QueryService<Account>(qboContextoAuth);
Account account = accountQueryService.ExecuteIdsQuery("Select * From Account Where AccountType='Accounts Receivable' StartPosition 1 MaxResults 1").FirstOrDefault();
//Find Term
var termQueryService = new QueryService<Term>(qboContextoAuth);
Term term = termQueryService.ExecuteIdsQuery("Select * From Term StartPosition 1 MaxResults 1").FirstOrDefault();
Invoice invoice = new Invoice();
//DocNumber - QBO Only, otherwise use DocNumber
invoice.AutoDocNumber = true;
invoice.AutoDocNumberSpecified = true;
//TxnDate
invoice.TxnDate = DateTime.Now.Date;
invoice.TxnDateSpecified = true;
//PrivateNote
invoice.PrivateNote = "This is a private note";
var orderItems = order.OrderItems;
int idx = 0;
var lines = new List<Line>();
foreach (var orderItem in orderItems)
{
//Line
Line invoiceLine = new Line();
//Line Description
invoiceLine.Description = itemRepository.Get(i => i.ItemID == orderItem.ItemID).First().FullDescription;
//Line Amount
invoiceLine.Amount = orderItem.Price * orderItem.Quantity;
invoiceLine.AmountSpecified = true;
//Line Detail Type
invoiceLine.DetailType = LineDetailTypeEnum.SalesItemLineDetail;
invoiceLine.DetailTypeSpecified = true;
//Line Sales Item Line Detail
SalesItemLineDetail lineSalesItemLineDetail = new SalesItemLineDetail();
//Line Sales Item Line Detail - ItemRef
lineSalesItemLineDetail.ItemRef = new ReferenceType()
{
name = itemRepository.Get(i => i.ItemID == orderItem.ItemID).First().FullDescription,
Value = (idx + 1).ToString()
};
//Line Sales Item Line Detail - UnitPrice
lineSalesItemLineDetail.AnyIntuitObject = orderItem.Price;//33m;
lineSalesItemLineDetail.ItemElementName = ItemChoiceType.UnitPrice;
//Line Sales Item Line Detail - Qty
lineSalesItemLineDetail.Qty = orderItem.Quantity;//10;
lineSalesItemLineDetail.QtySpecified = true;
//Line Sales Item Line Detail - TaxCodeRef
//For US companies, this can be 'TAX' or 'NON
lineSalesItemLineDetail.TaxCodeRef = new ReferenceType()
{
Value = "TAX"
};
//Line Sales Item Line Detail - ServiceDate
lineSalesItemLineDetail.ServiceDate = DateTime.Now.Date;
lineSalesItemLineDetail.ServiceDateSpecified = true;
//Assign Sales Item Line Detail to Line Item
invoiceLine.AnyIntuitObject = lineSalesItemLineDetail;
//Assign Line Item to Invoice
//invoice.Line = new Line[] { invoiceLine };
lines.Add(invoiceLine);
//TxnTaxDetail
TxnTaxDetail txnTaxDetail = new TxnTaxDetail();
txnTaxDetail.TxnTaxCodeRef = new ReferenceType()
{
name = stateTaxCode.Name,
Value = stateTaxCode.Id
};
Line taxLine = new Line();
taxLine.DetailType = LineDetailTypeEnum.TaxLineDetail;
TaxLineDetail taxLineDetail = new TaxLineDetail();
//Assigning the fist Tax Rate in this Tax Code
taxLineDetail.TaxRateRef = stateTaxCode.SalesTaxRateList.TaxRateDetail[0].TaxRateRef;
taxLine.AnyIntuitObject = taxLineDetail;
txnTaxDetail.TaxLine = new Line[] { taxLine };
invoice.TxnTaxDetail = txnTaxDetail;
idx++;
}
//Customer (Client)
invoice.CustomerRef = new ReferenceType()
{
name = customer.DisplayName,
Value = customer.Id
};
var _user = userRepository.Get(u => u.UserID == order.CreatedUserID, includeProperties: "ContactMethod, ContactMethod.Addresses, Location, Location.Organization").FirstOrDefault();
if (_user != null)
{
var addresses = _user.ContactMethod.Addresses.Where(a => a.StatusCode == Convert.ToByte(StatusCodes.Active) && a.IsPrimary).ToList();
var _billingAddress = addresses.Where(a => a.AddressTypeId == Convert.ToByte(AddressTypes.Billing)).FirstOrDefault();
var _shippingAddress = addresses.Where(a => a.AddressTypeId == Convert.ToByte(AddressTypes.Shipping)).FirstOrDefault();
//Billing Address
PhysicalAddress billAddr = new PhysicalAddress();
billAddr.Line1 = _billingAddress.Address1;
billAddr.Line2 = _billingAddress.Address2;
billAddr.City = _billingAddress.City;
billAddr.CountrySubDivisionCode = _billingAddress.State;
billAddr.Country = _billingAddress.Country;
billAddr.PostalCode = _billingAddress.ZipCode;
billAddr.Note = "Billing Address Note";
invoice.BillAddr = billAddr;
//Shipping Address
PhysicalAddress shipAddr = new PhysicalAddress();
shipAddr.Line1 = _shippingAddress.Address1;
shipAddr.City = _shippingAddress.City;
shipAddr.CountrySubDivisionCode = _shippingAddress.City;
shipAddr.Country = _shippingAddress.Country;
shipAddr.PostalCode = _shippingAddress.ZipCode;
shipAddr.Note = "Shipping Address Note";
invoice.ShipAddr = shipAddr;
}
invoice.Line = lines.ToArray();
//SalesTermRef
invoice.SalesTermRef = new ReferenceType()
{
name = term.Name,
Value = term.Id
};
//DueDate
invoice.DueDate = DateTime.Now.AddDays(30).Date;
invoice.DueDateSpecified = true;
//ARAccountRef
invoice.ARAccountRef = new ReferenceType()
{
name = account.Name,
Value = account.Id
};
Invoice invoiceAdded = service.Add(invoice);
return invoiceAdded;
最佳答案
目前每次循环都执行这一行
invoice.Line = new Line[] { invoiceLine };
它通过分配一个新数组来覆盖以前的值。一旦有基于您当前代码的订单项目,数组中总会有一个项目。
要么将行存储在列表中,然后在处理完所有订单项后转换为数组。
var orderItems = order.OrderItems;
var lines = new List<Line>();
foreach (var orderItem in orderItems) {
//Line
Line invoiceLine = new Line();
//...code removed for brevity
lines.Add(invoiceLine);
}
//Assign Line Items to Invoice
invoice.Line = lines.ToArray();
或者另一种选择是在创建订单项之前创建数组并填充它。
var orderItems = order.OrderItems;
var lineCount = orderItems.Count();
//Creating Line array before
invoice.Line = new Line[lineCount];
for (int index = 0; index < lineCount; index++) {
//Order item
var orderItem = orderItems[index];
//Line
Line invoiceLine = new Line();
//...code removed for brevity
//Assign Line Item to Invoice
invoice.Line[index] = invoiceLine;
}
更新:
获取项目引用并设置必要的值
var itemRef = itemRepository.Get(i => i.ItemID == orderItem.ItemID).FirstOrDefault();
if (itemRef != null) {
//Line Sales Item Line Detail - ItemRef
lineSalesItemLineDetail.ItemRef = new ReferenceType() {
Name = itemRef.FullDescription,
Value = itemRef.ItemID
};
}
关于c# - Quickbooks Online Accounting - 如何在发票中添加多个行项目?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45174403/
好的。这个问题已经被问过很多次并得到了回答。然而,Intuit 似乎改变了他们的部分: 他们自己的最新文档不再正确 到目前为止我在互联网上找到的所有答案都不再有效 因此,唯一的选择就是再次提出同样的问
是否可以使用 QBSDK 向 Quickbooks 添加菜单项? 我找到了几个我无法使用的旧示例。 我为我的公司创建了一个自定义应用程序,并试图通过在 Quickbooks 中创建一个菜单项来简化它。
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 这个问题似乎不是关于 a specific programming problem, a softwar
我需要将公司数据从生产环境复制到沙盒环境以测试 API 集成。我需要访问实时数据,但我还不想更改实时环境。 我试过导出公司数据(需要 Internet explorer),但下载的文件没有出现在我的电
大家好,我是 quickbooks 的新手。我正在尝试检索 quickbooks 中的一些数据,但 quickbooks 没有返回任何内容。我可以弄清楚我做错了什么。我正在尝试像这样检索数据 快速手册
我想创建 native QuickBooks 连接器。在连接 QuickBooks 公司文件时,出现以下错误。 "This application is not allowed to log into
我编写了一个代码,使用 quickbooks Web 连接器将购物车与 quickbooks 集成在一起。问题是当我试图找出按姓名和电子邮件过滤的快速手册中是否有客户时。我试过这个:
我在使用 QuickBooks PHP Dev Kit 导入我的项目时遇到问题。 QuickBooks Web 连接器日志显示 Error message: Response is not well-
我正在使用 QB 桌面版。我想为我的 QuickBooks 桌面版续订/重新生成“访问 token ”/“访问 token secret ”,因为它们将在 180 天内到期,并且必须在 token 到
我有一个客户要求将在 QuickBooks 中写入的支票导出为特定格式,因为他们的银行允许通过上传文件来防止欺诈,并且他们在清算之前根据您提供的内容验证支票上的名称。 我查看了 QuickBooks
我正在尝试将应用程序添加到 QuickBooks Web Connector。我安装了 QuickBooks Point of Sale 2013 试用版。将 .qwc 文件添加到 Web 连接器时,
我需要能够通过 .NET 应用程序将 IIF 文件导入 QuickBooks 2008 应用程序。我不知道 Quickbook 自动化的第一件事。 我应该在哪里看? 最佳答案 不推荐使用 IIF 文件
我想要定制 S.O.使用 QuickBooks QBFC 的发票模板字段。 最佳答案 以下是从销售订单中读取自定义字段的方法: 将“0”添加到 SalesOrderQuery 的 OwnerIDLis
我试试这段代码,它可以工作。(现在,我可以添加名称:TestCustomer3)我想将其他数据添加到 Quickbook。你能帮我了解一下 qbXML 语言吗? 示例:我要添加“公司名称”、“全名”、
我正在构建一个简单的网站,我公司的客户可以在其中查看过去 12 个月的报表以及他们当前的余额。为了实现这一目标,我将使用 QuickBooks Web Connector 将必要的数据从 QuickB
quickbooks 库可以集成到 genexus 中吗?我一无所知 最佳答案 用 GeneXus 生成的应用程序可以与 QuickBooks 集成。根据 QuickBooks 的版本(桌面版或在线版
我需要为 QuickBooks Online 获取一些测试帐户(公司),以便我们可以完成开发和测试我们的应用程序。我们已经联系 Intuit 以尝试获得这些,并被告知只使用 30 天的试用期。这些时间
我想将 QuickBooks Online 应用程序与我的 PHP 应用程序集成。我已经下载了最新的 PHP SDK。但是我需要领域 ID 才能开始。请在这里帮助我。 如果我需要任何其他要求,请指导我
有什么方法可以将数据从 Google Checkout 导入 Quickbooks 中吗? (或另一个会计包)? 最佳答案 是的 - 您可以从 Google 导出 CSV 并将其导入 Quickboo
我想将 quickbooks 与我的 Windows 服务集成。目前我正在使用 quickbooks SDK。它与 Windows 应用程序一起工作。在 Windows 服务中,它显示“无法启动 Qu
我是一名优秀的程序员,十分优秀!