C# 如何在quickbooks中将库存添加到同一销售收据

C# 如何在quickbooks中将库存添加到同一销售收据,c#,quickbooks,intuit-partner-platform,C#,Quickbooks,Intuit Partner Platform,我正在尝试向quickbooks中的销售收据添加多个存货 到目前为止,如果我有4个项目,它会创建4个不同的销售收据 但是,我想制作一张包含4个不同项目的销售收据 这是我到目前为止,但我似乎无法找到正确的代码 public void SalesInfoAdd(IMsgSetRequest requestMsgSet) { ISalesReceiptAdd salesReceiptAddRq = requestMsgSet.AppendSalesReceipt

我正在尝试向quickbooks中的销售收据添加多个存货

到目前为止,如果我有4个项目,它会创建4个不同的销售收据

但是,我想制作一张包含4个不同项目的销售收据

这是我到目前为止,但我似乎无法找到正确的代码

        public void SalesInfoAdd(IMsgSetRequest requestMsgSet)
    {
        ISalesReceiptAdd salesReceiptAddRq = requestMsgSet.AppendSalesReceiptAddRq();
        ISalesReceiptLineAdd salesReceiptAddNew = salesReceiptAddRq.ORSalesReceiptLineAddList.Append().SalesReceiptLineAdd;

        salesReceiptAddRq.CustomerRef.FullName.SetValue(Form.name.Text);
        salesReceiptAddRq.IsPending.SetValue(true);
        salesReceiptAddRq.IsTaxIncluded.SetValue(false);

        for (int i = 0; i < Form.productID.Count; i++)
        {
            salesReceiptAddNew.ItemRef.FullName.SetValue(Form.productID[i].ToString());
            salesReceiptAddNew.ORRatePriceLevel.Rate.SetValue(Convert.ToDouble(Form.pricesList.Items[i]));
            salesReceiptAddNew.Quantity.SetValue(Form.QBqt[i]);
            salesReceiptAddNew.Desc.SetValue(Form.productsList.Items[i].ToString());

            //groupSalesReceipt.ItemGroupRef.FullName
            IMsgSetResponse responseMsgSet = sessionManager.DoRequests(requestMsgSet);
        }
    }
public void SalesInfoAdd(IMsgSetRequest requestMsgSet)
{
isalReceiptAdd-salesReceiptAddRq=requestMsgSet.AppendSalesReceiptAddRq();
IsalReceiptLineAddSalesReceiptAddNew=salesReceiptAddRq.ORSalesReceiptLineAddList.Append().SalesReceiptLineAddNew;
salesReceiptAddRq.CustomerRef.FullName.SetValue(Form.name.Text);
salesReceiptAddRq.IsPending.SetValue(true);
salesReceiptAddRq.IsTaxIncluded.SetValue(false);
for(int i=0;i
对于有同样问题的人来说,这是我的解决方案(见下文),效果非常好

谢谢

        public List<ISalesReceiptLineAdd> salesReceiptAddNew;

    public void SalesInfoAdd(IMsgSetRequest requestMsgSet)
    {

        ISalesReceiptAdd salesReceiptAddRq = requestMsgSet.AppendSalesReceiptAddRq();
        salesReceiptAddNew = new List<ISalesReceiptLineAdd>();

        salesReceiptAddRq.CustomerRef.FullName.SetValue(Form.name.Text);
        salesReceiptAddRq.IsPending.SetValue(true);
        salesReceiptAddRq.IsTaxIncluded.SetValue(false);

        for (int i = 0; i < Form.productID.Count; i++)
        {
            salesReceiptAddNew.Add(salesReceiptAddRq.ORSalesReceiptLineAddList.Append().SalesReceiptLineAdd);

            salesReceiptAddNew[i].ItemRef.FullName.SetValue(Form.productID[i].ToString());
            salesReceiptAddNew[i].ORRatePriceLevel.Rate.SetValue(Convert.ToDouble(Form.pricesList.Items[i]));
            salesReceiptAddNew[i].Quantity.SetValue(Form.QBqt[i]);
            salesReceiptAddNew[i].Desc.SetValue(Form.productsList.Items[i].ToString() +
                                            Form.QBsku[i].ToString());
        }
        IMsgSetResponse responseMsgSet = sessionManager.DoRequests(requestMsgSet);

    }
公共列表salesReceiptAddNew;
public void SalesInfoAdd(IMsgSetRequest requestMsgSet)
{
isalReceiptAdd-salesReceiptAddRq=requestMsgSet.AppendSalesReceiptAddRq();
salesReceiptAddNew=新列表();
salesReceiptAddRq.CustomerRef.FullName.SetValue(Form.name.Text);
salesReceiptAddRq.IsPending.SetValue(true);
salesReceiptAddRq.IsTaxIncluded.SetValue(false);
for(int i=0;i
可以在一张销售收据下创建多行。 您可以使用apiexplorer工具来测试这个用例。 链接- 文档链接-

我创建了以下SalesReceive,其中包含两行项目。pfbxml

<?xml version="1.0" encoding="utf-8"?>
<Add xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" RequestId="b9bf137554a843cf8bd34865812daff6" xmlns="http://www.intuit.com/sb/cdm/v2">
   <ExternalRealmId>179017358</ExternalRealmId>
   <Object xsi:type="SalesReceipt">
    <Header>
     <DocNumber>9900</DocNumber>
     <TxnDate>2010-09-02</TxnDate>
     <Currency>USD</Currency>
     <CustomerId>537923</CustomerId>
     <ShipDate>2011-03-02</ShipDate>
     <TotalAmt>2500</TotalAmt>
     <DiscountAmt>0</DiscountAmt>
    </Header>
    <Line>
     <Desc>7th Item</Desc>
     <ItemId>434443</ItemId>
     <UnitPrice>67890</UnitPrice>
     <Qty>1</Qty>
    </Line>
    <Line>
     <Desc>8th Item</Desc>
     <ItemId>434443</ItemId>
     <UnitPrice>12345</UnitPrice>
     <Qty>2</Qty>
    </Line>
   </Object>
</Add>

179017358
9900
2010-09-02
美元
537923
2011-03-02
2500
0
第7项
434443
67890
1.
第8项
434443
12345
2.
QBD中的视图

请让我知道它是否适合你


谢谢

可以这样做吗?天哪。。。XD我想出来了。。。但是你的评论帮我弄明白了,所以我给你加分。如果有人读到这篇文章,我会更新我的答案,以防有人陷入困境。
        public List<ISalesReceiptLineAdd> salesReceiptAddNew;

    public void SalesInfoAdd(IMsgSetRequest requestMsgSet)
    {

        ISalesReceiptAdd salesReceiptAddRq = requestMsgSet.AppendSalesReceiptAddRq();
        salesReceiptAddNew = new List<ISalesReceiptLineAdd>();

        salesReceiptAddRq.CustomerRef.FullName.SetValue(Form.name.Text);
        salesReceiptAddRq.IsPending.SetValue(true);
        salesReceiptAddRq.IsTaxIncluded.SetValue(false);

        for (int i = 0; i < Form.productID.Count; i++)
        {
            salesReceiptAddNew.Add(salesReceiptAddRq.ORSalesReceiptLineAddList.Append().SalesReceiptLineAdd);

            salesReceiptAddNew[i].ItemRef.FullName.SetValue(Form.productID[i].ToString());
            salesReceiptAddNew[i].ORRatePriceLevel.Rate.SetValue(Convert.ToDouble(Form.pricesList.Items[i]));
            salesReceiptAddNew[i].Quantity.SetValue(Form.QBqt[i]);
            salesReceiptAddNew[i].Desc.SetValue(Form.productsList.Items[i].ToString() +
                                            Form.QBsku[i].ToString());
        }
        IMsgSetResponse responseMsgSet = sessionManager.DoRequests(requestMsgSet);

    }