2017-01-19 11 views
0

QBFC経由でQuickbooksに請求書を作成する作業を進めています。 InvoiceAddリクエストにカスタムフィールドの情報を追加できません。ある値を上書きしようとしたときQuickBookへのカスタムフィールドデータの追加VB.netのQBFCによる請求書

Dim CountryExt As IDataExtAdd = msgReq.AppendDataExtAddRq 
CountryExt.DataExtName.SetValue("Country") 
CountryExt.DataExtValue.SetValue("Spain") 
CountryExt.OwnerID.SetValue(0) 
CountryExt.ORListTxnWithMacro.TxnDataExtWithMacro.TxnDataExtType.SetValue(ENTxnDataExtType.tdetInvoice)     
CountryExt.ORListTxnWithMacro.TxnDataExtWithMacro.TxnID.SetValueUseMacro("TxnID:" & i) 

追加要求は、顧客によって設定されたデフォルト値を持っていないカスタムフィールドのために完璧に動作しますが、範囲エラーのうち、インデックスが発生します。私は、次のコードを使用しています顧客によって設定されます。

たとえば、Quickbooks Customerにカスタムフィールド 'Country'が 'Portugal'に設定されている場合、コードは範囲外の請求書を生成します。ただし、顧客がデフォルトの '国'を持たない場合、コードは請求書の '国'フィールドを設定します。

請求書作成後に2番目のdataextmodrqを使用してカスタムデータを追加する必要がありますか、またはUnSetオプションが不足していますか?

答えて

0

実際にあなたがやっていることを理解するのに十分なコードを投稿していませんでしたが、あなたがやっていることは、既存の請求書を更新することです。

  • 送る

    1. が無いカスタムフィールドデータでInvoiceModRqを送って、請求書を更新するには:

      既存の請求書(及びその上にカスタムフィールド)を更新しようとしている場合は、あなたがする必要があります個別のDataExtModRqカスタムフィールド値の更新要求

    InvoiceModRq内のカスタムフィールドを直接更新することはできません。

    請求書の更新でサポートされるフィールドを示すOSRを参照できます。

  • +0

    こんにちはキース。既存の請求書を変更するのではなく、InvoiceAddRqを使用してカスタムフィールドを設定しようとしています。 – Ampersand

    0

    それを考え出しました。請求書が作成された後でDataExtModRqを使用し、Quickbooksで2回目の通信ラウンドを実行する必要があります。 QuickBookのように見えても、invoiceaddrq内にカスタムフィールドを設定することはできません。次のコードでは、InoviceAddRequestsへの応答を使用して、作成されたすべての請求書のCountryフィールドをスペインに更新します。

    For i = 0 To invoiceAddResp.ResponseList.Count - 1 
        If invoiceAddResp.ResponseList.GetAt(i).StatusCode <> 0 Then 
        Check for failed entry here. 
        Else 
           Dim ExtInvoice As IInvoiceRet = invoiceAddResp.ResponseList.GetAt(i).Detail 
           sessMgr.BeginSession("", ENOpenMode.omDontCare) 
           Dim ExtReq = sessMgr.CreateMsgSetRequest("US", 12, 0) 
           ExtReq.Attributes.OnError = ENRqOnError.roeContinue 
    
           Dim DataExt As IDataExtMod = ExtReq.AppendDataExtModRq() 
           DataExt.DataExtName.SetValue("Country") 
           DataExt.DataExtValue.SetValue("Spain") 
           DataExt.OwnerID.SetValue(0) 
           DataExt.ORListTxn.TxnDataExt.TxnDataExtType.SetValue(ENTxnDataExtType.tdetInvoice) 
           DataExt.ORListTxn.TxnDataExt.TxnID.SetValue(ExtInvoice.TxnID.GetValue) 
    
           sessMgr.DoRequests(ExtReq) 
           sessMgr.EndSession() 
          End If 
         Next 
    
    関連する問題