Question

hey guys i'm new to this sdk i'm trying to add TODO every thing is fine till i'm trying to specify time or Priority or type it is giving me error "QuickBooks found an error when parsing the provided XML text stream" i'm using SDK 13 can any one help me please thank you

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows;
using QBFC13Lib;
using System.Globalization;
using System.Windows.Forms;

namespace testing
{
public partial class Form2 : Form
{
    public Form2()
    {
        InitializeComponent();
    }

    private void Form2_Load(object sender, EventArgs e)
    {
        bool sessionBegun = false;
        bool connectionOpen = false;
        QBSessionManager sessionManager = null;

        try
        {
            sessionManager = new QBSessionManager();

            //Create the message set request object to hold our request
            IMsgSetRequest requestMsgSet = sessionManager.CreateMsgSetRequest("US", 8, 0);
            requestMsgSet.Attributes.OnError = ENRqOnError.roeContinue;

            //Connect to QuickBooks and begin a session
            sessionManager.OpenConnection("", "QuickBook Account Import");
            connectionOpen = true;
            sessionManager.BeginSession("C:\\Users\\Public\\Documents\\Intuit\\QuickBooks\\Company Files\\***.qbw", ENOpenMode.omDontCare);
            sessionBegun = true;



                IToDoAdd ToDoAddRq = requestMsgSet.AppendToDoAddRq();
                ToDoAddRq.ReminderDate.SetValue(DateTime.ParseExact("29/4/2014", "d/M/yyyy", CultureInfo.InvariantCulture));
                //Set field value for Time
                ToDoAddRq.ReminderTime.SetValue(10, 10, 10, false);
                //Set field value for Notes
                ToDoAddRq.Notes.SetValue("abc");
                //Set field value for IsActive
                ToDoAddRq.IsActive.SetValue(true);
                //Set field value for Type
                ToDoAddRq.Type_2.SetValue(ENType.tCall);
                //Set field value for Priority
                ToDoAddRq.Priority.SetValue(ENPriority.pLow);


                //Send the request and get the response from QuickBooks
                sessionManager.DoRequests(requestMsgSet);


        }
        catch (Exception ex)
        {
            MessageBox.Show(ex.Message, "Error");
        }
        finally
        {
            //End the session and close the connection to QuickBooks
            if (sessionBegun)
            {
                sessionManager.EndSession();
            }
            if (connectionOpen)
            {
                sessionManager.CloseConnection();
            }
        }
    }
}
}
Was it helpful?

Solution

The QuickBooks qbXML API is a versioned API. Different versions of QuickBooks will support different functionality via different versions of the qbXML spec.

When developing, you need to make sure you're using a version of the qbXML API that both supports the functionality you need, and that your version of QuickBooks supports.

You are currently using qbXML version 8.0:

 IMsgSetRequest requestMsgSet = sessionManager.CreateMsgSetRequest("US", 8, 0);

Typically, QuickBooks versions are 1 off from the qbXML version supports. e.g. QuickBooks 14 supports qbXML version 13. QuickBooks 13 supports qbXML version 12. etc. That means that right now you're targeting QuickBooks 2009.

You're getting an error message because, if you refer to Intuit's docs, ToDoAdds Type and Priority tags are only supported in version 13.0 and higher. You need to either not include those values in your request, or use a higher qbXML API version.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top