【问题标题】:QBO/.NET SDK [Quickbooks Online] - How to remove empty invoice line item?QBO/.NET SDK [Quickbooks Online] - 如何删除空发票行项目?
【发布时间】:2017-07-31 17:53:24
【问题描述】:

我遇到了关于 quickbooks 发票的新问题。创建发票后,我会收到我添加的所有项目以及发票中的一个额外行项目。

如何过滤、删除、防止出现此行?

这是我尝试过的。

//Find Item
var itemQueryService = new QueryService<Item>(qboContextoAuth);
Item item = itemQueryService.ExecuteIdsQuery("Select * From Item StartPosition 1 MaxResults 1").FirstOrDefault();

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 = 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 };
        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++;
    }

删除代码

Item item2 = itemQueryService.ExecuteIdsQuery("Select * From Item StartPosition 2 MaxResults 1").FirstOrDefault();

//Line Sales Item Line Detail - ItemRef
SalesItemLineDetail lineDetail = new SalesItemLineDetail();
Line removeLine = new Line();

lineDetail.ItemRef = new ReferenceType()
{
    Value = item2.Id
};
removeLine.AnyIntuitObject = lineDetail;

lines.RemoveAt(1);

相关问题:

Quickbooks Online Accounting - How to add multiple line items in an invoice?

【问题讨论】:

  • 为什么您不能在插入之前识别出多余的行并跳过它,以免它最终出现在发票中?
  • 我的发票行项目数组中的项目数量正确。只是我的发票中多了一个空项目。
  • orderItems的数据源是什么?
  • 这是来自应用程序/内部数据库,我可能对此进行解释,但简而言之,它由价格和商品名称组成。

标签: c# .net quickbooks


【解决方案1】:

检查额外行项目的详细信息类型,它必须是 SubTotalLineDetail。它是所有行项目的小计。然后你可以跳过它的枚举类型。

【讨论】:

    猜你喜欢
    • 2014-06-19
    • 1970-01-01
    • 2013-07-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多