2017-01-19 3 views
0

Ich arbeite an Erstellen von Rechnungen in Quickbooks über QBFC. Ich habe Probleme beim Hinzufügen von Informationen zum benutzerdefinierten Feld zu meiner InvoiceAdd-Anfrage. Ich verwende den folgenden Code:Hinzufügen von benutzerdefinierten Felddaten zu Quickbooks-Rechnungen über QBFC in VB.net

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) 

Das Add Anfrage funktioniert perfekt für benutzerdefinierte Felder, die Standardwerte nicht durch den Kunden festgelegt, sondern verursacht einen Index aus Bereichsfehler beim Wert zu überschreiben, der erwiesenermaßen ist vom Kunden festgelegt.

Wenn beispielsweise das benutzerdefinierte Feld "Land" des Quickbooks-Kunden auf "Portugal" festgelegt wurde, würde der Code zu einem Fehler außerhalb der Reichweite der Rechnung führen. Wenn der Kunde jedoch kein Standardland hat, würde der Code das Feld "Land" auf der Rechnung setzen.

Muss ich nach der Erstellung der Rechnung benutzerdefinierte Daten über ein zweites dataxtmodrq hinzufügen, oder fehlt mir eine UnSet-Option?

Antwort

0

Sie haben nicht genügend Code gepostet, um wirklich zu verstehen, was Sie tun, aber ich gehe davon aus, dass Sie eine vorhandene Rechnung AKTUALISIEREN.

Wenn Sie versuchen, eine vorhandene Rechnung UPDATE (und die benutzerdefinierten Felder auf sie), dann müssen Sie:

  1. eine Rechnung zu aktualisieren, ein
  2. ein InvoiceModRq ohne benutzerdefinierte Felddaten senden getrennte DataExtModRq Anfrage beliebige benutzerdefinierte Feld zu aktualisieren Werte

Sie nicht die benutzerdefinierten Felder aus direkt im InvoiceModRq aktualisieren können.

Sie können auf die OSR verweisen, die die unterstützten Felder zum Aktualisieren von Rechnungen veranschaulicht.

+0

Hallo Keith. Ich versuche, das benutzerdefinierte Feld über eine InvoiceAddRq festzulegen, anstatt eine vorhandene Rechnung zu ändern. – Ampersand

0

es herausgefunden. Sie müssen ein DataExtModRq verwenden, nachdem die Rechnung erstellt wurde, und eine zweite Kommunikationsrunde mit Quickbooks ausführen. Es sieht so aus, als ob Quickbooks es nicht erlaubt, benutzerdefinierte Felder innerhalb von invoiceaddrq zu setzen. Der folgende Code verwendet die Antwort auf die InoviceAddRequests, um das Länderfeld für alle erstellten Rechnungen nach Spanien zu aktualisieren.

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 
Verwandte Themen