BudgetSummaryReportQuery(3.0)

Generates budget reports similar to the budget report functionality that is available within the QuickBooks UI. (From the main QB menubar select Reports->Budgets & Forecasts.) Note: the graphing functionality, forecasts, and memorized reports that available through the UI are not supported by the SDK. Notice that if you simply use the default instead of specifying the Fiscal Year, the ReportPeriod defaults to “year to date.” You cannot change the default to “This Fiscal Year.”
There can only be one balance sheet budget for each fiscal year, one profit and loss (P&L) by account budget per fiscal year, and one profit and loss (P&L) by account and customer budget per fiscal year. Hence the FiscalYear element is key in specifying which budget you want. Notice that there are two “views” into each of the two budget categories: the Overview, which shows the budget itself, and the Actual, which shows how expenditures are currently running against the budget.
All of the budget reports supported in the UI are supported in the SDK, although the UI and SDK nomenclature differs slightly. The UI shows Budget Overview and Budget Vs Actual as choices in the selection list, with Balance Sheet and P&L as subchoices in a subsequent selection list, already filtered by Accounts, or Accounts and Classes, or Accounts and Customers, if these are available.
In comparison, you choose the budget view you want via the SDK BudgetSummaryType element, which has these possible values:

Then you specify any additional filtering by the Budget Criterion value you specify (Accounts, AccountsAndCustomers, or AccountsAndClasses). Notice that before you can obtain a Budget report, the “target” budget must be defined in QuickBooks, via the UI, because you cannot create a budget via the SDK.

Request

Response

XMLOps

VB.NET

C#

Tag Type Max length Implementation Required

IBudgetSummaryReportQuery

Generates budget reports similar to the budget report functionality that is available within the QuickBooks UI. (From the main QB menubar select Reports->Budgets & Forecasts.) Note: the graphing functionality, forecasts, and memorized reports that available through the UI are not supported by the SDK. Notice that if you simply use the default instead of specifying the Fiscal Year, the ReportPeriod defaults to “year to date.” You cannot change the default to “This Fiscal Year.” There can only be one balance sheet budget for each fiscal year, one profit and loss (P&L) by account budget per fiscal year, and one profit and loss (P&L) by account and customer budget per fiscal year. Hence the FiscalYear element is key in specifying which budget you want. Notice that there are two “views” into each of the two budget categories: the Overview, which shows the budget itself, and the Actual, which shows how expenditures are currently running against the budget. All of the budget reports supported in the UI are supported in the SDK, although the UI and SDK nomenclature differs slightly. The UI shows Budget Overview and Budget Vs Actual as choices in the selection list, with Balance Sheet and P&L as subchoices in a subsequent selection list, already filtered by Accounts, or Accounts and Classes, or Accounts and Customers, if these are available. In comparison, you choose the budget view you want via the SDK BudgetSummaryType element, which has these possible values:BalanceSheetBudgetOverviewBalanceSheetBudgetVsActualProfitAndLossBudgetOverviewProfitAndLossBudgetVsActual Then you specify any additional filtering by the Budget Criterion value you specify (Accounts, AccountsAndCustomers, or AccountsAndClasses). Notice that before you can obtain a Budget report, the “target” budget must be defined in QuickBooks, via the UI, because you cannot create a budget via the SDK.
    3.0  

BudgetSummaryReportType

The type of budget report being queried.
IQBENBudgetSummaryReportTypeType     Y

DisplayReport

Set DisplayReport to true to display this report within the QuickBooks UI. (Default is false.) If you want the request to display the report without returning any data to your application, set the responseData attribute to includeNone.
IQBBoolType      

FiscalYear

Specify the fiscal year of the budget to be queried. There can only be one balance sheet budget for each fiscal year, one profit and loss (P&L) by account budget per fiscal year, and one profit and loss (P&L) by account and customer budget per fiscal year. When Fiscal year is not the current year, the report returns the data for the full fiscal year. When Fiscal year is the current year, the report only returns year to date data.
IQBIntType     Y

BudgetCriterion

What this budget covers.
IQBENBudgetCriterionType      

ORReportPeriod

IORReportPeriod   9.0  

ReportPeriod

If you omit both ToReportDate and FromReportDate, the report will cover the current fiscal year to date.
IReportPeriod      

FromReportDate

Selects information from this date and later. The range of acceptable FromReportDate and ToReportDate values depends on how the report dates are determined. If the report dates are based on the dates of transactions, the range is 01/01/1901 to 12/31/9999. If the report dates are based on modification dates, the range will be 1970-01-01 to 2038-01-19T03:14:07 (2038-01-18T19:14:07-08:00 PST). If you omit FromReportDate, it will be set to 1970-01-01T00:00:00 (1969-12-31T16:00:00-08:00 PST).
IQBDateType      

ToReportDate

Selects information created on this date or earlier. The range of acceptable ToReportDate and FromReportDate values depends on how the report dates are determined. If the report dates are based on the dates of transactions, the range is 01/01/1901 to 12/31/9999. If the report dates are based on modification dates, the range will be 1970-01-01 to 2038-01-19T03:14:07 (2038-01-18T19:14:07-08:00 PST). If you omit ToReportDate, it will be set to 2038-01-19T03:14:07 (2038-01-18T19:14:07-08:00 PST).
IQBDateType      

ReportDateMacro

The time period covered by this report.
IQBENReportDateMacroType      

ReportClassFilter

Allows you to query for a specified class. Classes can be used to separate transactions into meaningful categories. (For example, transactions could be classified according to department, business location, or type of work.) In QuickBooks, class tracking is off by default.
IReportClassFilter   9.0  

ORReportClassFilter

IORReportClassFilter     Y

ListIDList

One or more ListID values. Along with FullName, ListID is a way to identify a list object. When a list object is added to QuickBooks through the SDK or through the QuickBooks user interface, the server assigns it a ListID. A ListID is not unique across lists, but it is unique across each particular type of list. For example, two customers could not have the same ListID, and a customer could not have the same ListID as an employee (because Customer and Employee are both name lists). But a customer could have the same ListID as a non-inventory item.
IBSTRList      

FullNameList

A list of one or more FullName values. FullName (along with ListID) is a way to identify a list object. The FullName is the name prefixed by the names of each ancestor, for example Jones:Kitchen:Cabinets. FullName values are not case-sensitive.
IBSTRList      

ListIDWithChildren

Allows you to filter for data that relates to the specified object and its descendants.
IQBIDType      

FullNameWithChildren

Allows you to filter for data that relates to the specified object and its descendants. For names that do not have children, FullNameWithChildren is exactly the same as FullName.
IQBStringType      

SummarizeBudgetColumnsBy

SummarizeBudgetColumnsBy determines which data the report calculates and how the columns will be labeled across the top of the report.
IQBENSummarizeBudgetColumnsByType      

SummarizeBudgetRowsBy

How you want rows to be labeled in the report. For example, if you set the value to sbrbAccount, the report’s row labels might be “Checking,” “Savings,” and so on.
IQBENSummarizeBudgetRowsByType      
Tag Type Max length Implementation Required

IResponse

Generates budget reports similar to the budget report functionality that is available within the QuickBooks UI. (From the main QB menubar select Reports->Budgets & Forecasts.) Note: the graphing functionality, forecasts, and memorized reports that available through the UI are not supported by the SDK. Notice that if you simply use the default instead of specifying the Fiscal Year, the ReportPeriod defaults to “year to date.” You cannot change the default to “This Fiscal Year.” There can only be one balance sheet budget for each fiscal year, one profit and loss (P&L) by account budget per fiscal year, and one profit and loss (P&L) by account and customer budget per fiscal year. Hence the FiscalYear element is key in specifying which budget you want. Notice that there are two “views” into each of the two budget categories: the Overview, which shows the budget itself, and the Actual, which shows how expenditures are currently running against the budget. All of the budget reports supported in the UI are supported in the SDK, although the UI and SDK nomenclature differs slightly. The UI shows Budget Overview and Budget Vs Actual as choices in the selection list, with Balance Sheet and P&L as subchoices in a subsequent selection list, already filtered by Accounts, or Accounts and Classes, or Accounts and Customers, if these are available. In comparison, you choose the budget view you want via the SDK BudgetSummaryType element, which has these possible values:BalanceSheetBudgetOverviewBalanceSheetBudgetVsActualProfitAndLossBudgetOverviewProfitAndLossBudgetVsActual Then you specify any additional filtering by the Budget Criterion value you specify (Accounts, AccountsAndCustomers, or AccountsAndClasses). Notice that before you can obtain a Budget report, the “target” budget must be defined in QuickBooks, via the UI, because you cannot create a budget via the SDK.
    3.0  

StatusCode

A number that corresponds to a statusSeverity and statusMessage. Five status codes relate directly to signon messages: 2000, 2010, 2020, 2030, and 2040. For details about these and other statusCode values that can be returned, see the statusCode table on the Error Codes page.
IQBIntType     Y

StatusSeverity

One of the following values: INFO The request was completed, and the results are consistent with what your application expected. WARNING The request was completed, but the results might not be consistent with what you expected. ERROR The request was not completed. No data will appear in the server’s response after the statusMessage.
IQBStringType     Y

StatusMessage

A user-readable explanation of the success or error condition that is indicated by the statusCode. For details about the statusMessage values that can be returned, see the “Explanation” column of the statusCode table on the Error Codes page.
IQBStringType     Y

Detail

IReportRet      

ReportTitle

The main title for this report.
IQBStringType     Y

ReportSubtitle

The subtitle for this report.
IQBStringType     Y

ReportBasis

If ReportBasis is rbCash, the report bases income and expenses on the dates when money changed hands.rbAccrual, the report bases income on the dates when customers were invoiced and bases expenses on the dates when bills were entered.rbNone, the report uses the default ReportBasis, which is either the QuickBooks Preference setting or the QuickBooks default for a given type of report. In a report response, the SDK returns rbNone for reports that do not support ReportBasis. (The 1099 report, for example, has its own basis for generation.)
IQBENReportBasisType      

NumRows

The number of rows in the report.
IQBIntType     Y

NumColumns

The number of columns in the report.
IQBIntType     Y

NumColTitleRows

The number of rows to allocate for column titles. Although this number is usually 1, with some reports it is 2 or 3. (For an example of column titles that span multiple rows, look at a ProfitAndLossByJob report in QuickBooks.)
IQBIntType     Y

ColDescList

A list of IColDesc objects, each of which identifies one column in the report. Each column is identified by a colID (the position of the column in the report), a title, and a type. If the report contains any data, it is given row-by-row in an IReportData object.
IColDescList     Y

(List

of IColDesc Objects)
       

colID

An identifying number that corresponds to the position of this column in the report. The columns are numbered from left to right, starting with 1.
IQBIntType     Y

dataType

The data type: IDTYPE, STRTYPE, and so on.
IQBENdataTypeType     Y

ColTitleList

A list of IColTitle objects, each of which represents a title for this column. For example, if the first two rows of this column were titles, two IColTitle objects would be returned.
IColTitleList     Y

(List

of IColTitle Objects)
       

titleRow

The number of this title row. For example, if the first three rows of a report were titles, titleRow of the third of these rows would be 3.
IQBIntType     Y

value

The data in this cell of the report.
IQBStringType     Y

ColType

The type of data that this column contains. ColType values are formatted types. (Returned ctPercent values, for example, will have digits after the decimal points, and ctAddr1 values will be strings.)
IQBENColTypeType     Y

ReportData

If the report contains any data, it is given row-by-row in a ReportData aggregate.
IReportData      

ORReportDataList

IORReportDataList     Y

(List

of IORReportData Objects)
       

DataRow

A data row contains the actual data for each column.
IDataRow      

RowData

RowData describes one row in the report.
IRowData      

rowType

An enumerated value that shows the type of data that this row contains. Values: account class customer customerMessage customerType employee item jobType label memorizedTxn memorizedReport name otherName paymentMethod payrollItem salesRep salesTaxCode shipMethod state style terms toDo vendor vendorType
IQBENrowTypeType      

value

The data in this cell of the report.
IQBStringType      

ColDataList

A list of IColData objects, each of which describes the data in one cell of the report.
IColDataList      

(List

of IColData Objects)
       

colID

An identifying number that corresponds to the position of this column in the report. The columns are numbered from left to right, starting with 1.
IQBIntType     Y

value

The data in this cell of the report.
IQBStringType     Y

dataType

The data type: IDTYPE, STRTYPE, and so on.
IQBENdataTypeType     Y

TextRow

A text row contains only text and is used mainly for headings.
ITextRow      

rowNumber

The row number. Rows are numbered from top to bottom, starting with 1.
IQBIntType     Y

value

The data in this cell of the report.
IQBStringType     Y

SubtotalRow

A row that contains a calculated subtotal of the data in all the rows since the last SubTotalRow and, usually, a single underline. There can be multiple SubTotalRow aggregates in a report.
ISubtotalRow      

RowData

RowData describes one row in the report.
IRowData      

rowType

An enumerated value that shows the type of data that this row contains. Values: account class customer customerMessage customerType employee item jobType label memorizedTxn memorizedReport name otherName paymentMethod payrollItem salesRep salesTaxCode shipMethod state style terms toDo vendor vendorType
IQBENrowTypeType      

value

The data in this cell of the report.
IQBStringType      

ColDataList

A list of IColData objects, each of which describes the data in one cell of the report.
IColDataList      

(List

of IColData Objects)
       

colID

An identifying number that corresponds to the position of this column in the report. The columns are numbered from left to right, starting with 1.
IQBIntType     Y

value

The data in this cell of the report.
IQBStringType     Y

dataType

The data type: IDTYPE, STRTYPE, and so on.
IQBENdataTypeType     Y

TotalRow

A row that contains a calculated total of all the data that has come before and a double underline. There will only be one TotalRow per report. If TotalRow does not include any numerical values, the columns required to show the total values are not part of the report. These columns were not included when the report was customized.
ITotalRow      

RowData

RowData describes one row in the report.
IRowData      

rowType

An enumerated value that shows the type of data that this row contains. Values: account class customer customerMessage customerType employee item jobType label memorizedTxn memorizedReport name otherName paymentMethod payrollItem salesRep salesTaxCode shipMethod state style terms toDo vendor vendorType
IQBENrowTypeType      

value

The data in this cell of the report.
IQBStringType      

ColDataList

A list of IColData objects, each of which describes the data in one cell of the report.
IColDataList      

(List

of IColData Objects)
       

colID

An identifying number that corresponds to the position of this column in the report. The columns are numbered from left to right, starting with 1.
IQBIntType     Y

value

The data in this cell of the report.
IQBStringType     Y

dataType

The data type: IDTYPE, STRTYPE, and so on.
IQBENdataTypeType     Y

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
<?xml version="1.0" encoding="utf-8"?>
<?qbxml version="16.0"?>
<QBXML>
        <QBXMLMsgsRq onError="stopOnError">
                <BudgetSummaryReportQueryRq>
                        <!-- BudgetSummaryReportType may have one of the following values: BalanceSheetBudgetOverview, BalanceSheetBudgetVsActual, ProfitAndLossBudgetOverview, ProfitAndLossBudgetPerformance, ProfitAndLossBudgetVsActual -->
                        <BudgetSummaryReportType >ENUMTYPE</BudgetSummaryReportType> <!-- required -->
                        <DisplayReport >BOOLTYPE</DisplayReport> <!-- optional -->
                        <FiscalYear >INTTYPE</FiscalYear> <!-- required -->
                        <!-- BudgetCriterion may have one of the following values: Accounts, AccountsAndClasses, AccountsAndCustomers -->
                        <BudgetCriterion >ENUMTYPE</BudgetCriterion> <!-- optional -->
                        <!-- BEGIN OR -->
                                <ReportPeriod> <!-- optional -->
                                        <FromReportDate >DATETYPE</FromReportDate> <!-- optional -->
                                        <ToReportDate >DATETYPE</ToReportDate> <!-- optional -->
                                </ReportPeriod>
                        <!-- OR -->
                                <!-- ReportDateMacro may have one of the following values: All, Today, ThisWeek, ThisWeekToDate, ThisMonth, ThisMonthToDate, ThisQuarter, ThisQuarterToDate, ThisYear, ThisYearToDate, Yesterday, LastWeek, LastWeekToDate, LastMonth, LastMonthToDate, LastQuarter, LastQuarterToDate, LastYear, LastYearToDate, NextWeek, NextFourWeeks, NextMonth, NextQuarter, NextYear -->
                                <ReportDateMacro >ENUMTYPE</ReportDateMacro> <!-- optional -->
                        <!-- END OR -->
                        <ReportClassFilter> <!-- optional -->
                                <!-- BEGIN OR -->
                                        <ListID >IDTYPE</ListID> <!-- optional, may repeat -->
                                <!-- OR -->
                                        <FullName >STRTYPE</FullName> <!-- optional, may repeat -->
                                <!-- OR -->
                                        <ListIDWithChildren >IDTYPE</ListIDWithChildren> <!-- optional -->
                                <!-- OR -->
                                        <FullNameWithChildren >STRTYPE</FullNameWithChildren> <!-- optional -->
                                <!-- END OR -->
                        </ReportClassFilter>
                        <!-- SummarizeBudgetColumnsBy may have one of the following values: Class, Customer, Date -->
                        <SummarizeBudgetColumnsBy >ENUMTYPE</SummarizeBudgetColumnsBy> <!-- optional -->
                        <!-- SummarizeBudgetRowsBy may have one of the following values: Account, Class, Customer -->
                        <SummarizeBudgetRowsBy >ENUMTYPE</SummarizeBudgetRowsBy> <!-- optional -->
                </BudgetSummaryReportQueryRq>

                <BudgetSummaryReportQueryRs statusCode="INTTYPE" statusSeverity="STRTYPE" statusMessage="STRTYPE">
                        <ReportRet> <!-- optional -->
                                <ReportTitle >STRTYPE</ReportTitle> <!-- required -->
                                <ReportSubtitle >STRTYPE</ReportSubtitle> <!-- required -->
                                <!-- ReportBasis may have one of the following values: Accrual, Cash, None [DEFAULT] -->
                                <ReportBasis >ENUMTYPE</ReportBasis> <!-- optional -->
                                <NumRows >INTTYPE</NumRows> <!-- required -->
                                <NumColumns >INTTYPE</NumColumns> <!-- required -->
                                <NumColTitleRows >INTTYPE</NumColTitleRows> <!-- required -->
                                <ColDesc colID="INTTYPE" dataType="ENUMTYPE"> <!-- required, may repeat -->
                                        <ColTitle titleRow="INTTYPE" value="STRTYPE"> <!-- required, may repeat -->
                                        </ColTitle>
                                        <!-- ColType may have one of the following values: Account, Addr1, Addr2, Addr3, Addr4, Addr5, Aging, Amount, AmountDifference, AverageCost, BilledDate, BillingStatus, Blank, CalculatedAmount, Class, ClearedStatus, CostPrice, CreateDate, Credit, CustomField, Date, Debit, DeliveryDate, DueDate, Duration, EarliestReceiptDate, EstimateActive, FOB, IncomeSubjectToTax, Invoiced, IsAdjustment, Item, ItemDesc, ItemVendor, Label, LastModifiedBy, LatestOrPriorState, Memo, ModifiedTime, Name, NameAccountNumber, NameAddress, NameCity, NameContact, NameEmail, NameFax, NamePhone, NameState, NameZip, OpenBalance, OriginalAmount, PaidAmount, PaidStatus, PaidThroughDate, PaymentMethod, PayrollItem, Percent, PercentChange, PercentOfTotalRetail, PercentOfTotalValue, PhysicalCount, PONumber, PrintStatus, ProgressAmount, ProgressPercent, Quantity, QuantityAvailable, QuantityOnHand, QuantityOnOrder, QuantityOnPendingBuild, QuantityOnSalesOrder, ReceivedQuantity, RefNumber, ReorderPoint, RetailValueOnHand, RunningBalance, SalesPerWeek, SalesRep, SalesTaxCode, ShipDate, ShipMethod, ShipToAddr1, ShipToAddr2, ShipToAddr3, ShipToAddr4, ShipToAddr5, SONumber, SourceName, SplitAccount, SSNOrTaxID, SuggestedReorder, TaxLine, TaxTableVersion, Terms, Total, TxnID, TxnNumber, TxnType, UnitPrice, UserEdit, ValueOnHand, WageBase, WageBaseTips -->
                                        <ColType >ENUMTYPE</ColType> <!-- required -->
                                </ColDesc>
                                <ReportData> <!-- optional -->
                                        <!-- BEGIN OR -->
                                                <DataRow> <!-- optional -->
                                                        <RowData rowType="ENUMTYPE" value="STRTYPE"> <!-- optional -->
                                                        </RowData>
                                                        <ColData colID="INTTYPE" value="STRTYPE" dataType="ENUMTYPE"> <!-- optional, may repeat -->
                                                        </ColData>
                                                </DataRow>
                                        <!-- OR -->
                                                <TextRow rowNumber="INTTYPE" value="STRTYPE"> <!-- optional -->
                                                </TextRow>
                                        <!-- OR -->
                                                <SubtotalRow> <!-- optional -->
                                                        <RowData rowType="ENUMTYPE" value="STRTYPE"> <!-- optional -->
                                                        </RowData>
                                                        <ColData colID="INTTYPE" value="STRTYPE" dataType="ENUMTYPE"> <!-- optional, may repeat -->
                                                        </ColData>
                                                </SubtotalRow>
                                        <!-- OR -->
                                                <TotalRow> <!-- optional -->
                                                        <RowData rowType="ENUMTYPE" value="STRTYPE"> <!-- optional -->
                                                        </RowData>
                                                        <ColData colID="INTTYPE" value="STRTYPE" dataType="ENUMTYPE"> <!-- optional, may repeat -->
                                                        </ColData>
                                                </TotalRow>
                                        <!-- END OR -->
                                </ReportData>
                        </ReportRet>
                </BudgetSummaryReportQueryRs>
        </QBXMLMsgsRq>
</QBXML>

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
'The following sample code is generated as an illustration of
'Creating requests and parsing responses ONLY
'This code is NOT intended to show best practices or ideal code
'Use at your most careful discretion

imports System
imports System.Net
imports System.Drawing
imports System.Collections
imports System.ComponentModel
imports System.Windows.Forms
imports System.Data
imports System.IO
imports Interop.QBFC16

Module com.intuit.idn.samples
        Public Class Sample
                Public Sub  DoBudgetSummaryReportQuery()
                        Dim sessionBegun as Boolean
                        sessionBegun = False
                        Dim connectionOpen as Boolean
                        connectionOpen = False
                        Dim sessionManager as QBSessionManager
                        sessionManager = nothing

                        Try
                                'Create the session Manager object
                                sessionManager = new QBSessionManager

                                'Create the message set request object to hold our request
                                Dim requestMsgSet as IMsgSetRequest
                                requestMsgSet = sessionManager.CreateMsgSetRequest("US",16,0)
                                requestMsgSet.Attributes.OnError = ENRqOnError.roeContinue

                                BuildBudgetSummaryReportQueryRq(requestMsgSet)

                                'Connect to QuickBooks and begin a session
                                sessionManager.OpenConnection("","Sample Code from OSR")
                                connectionOpen = True
                                sessionManager.BeginSession("", ENOpenMode.omDontCare)
                                sessionBegun = True

                                'Send the request and get the response from QuickBooks
                                Dim responseMsgSet as IMsgSetResponse
                                responseMsgSet = sessionManager.DoRequests(requestMsgSet)

                                'End the session and close the connection to QuickBooks
                                sessionManager.EndSession()
                                sessionBegun = False
                                sessionManager.CloseConnection()
                                connectionOpen = False

                                WalkBudgetSummaryReportQueryRs(responseMsgSet)
                        Catch e as Exception
                                MessageBox.Show(e.Message, "Error")
                                if (sessionBegun) then
                                        sessionManager.EndSession()
                                End If
                                if (connectionOpen) then
                                        sessionManager.CloseConnection()
                                End If
                        End Try
                End Sub
                Public Sub BuildBudgetSummaryReportQueryRq(requestMsgSet as IMsgSetRequest)
                        Dim BudgetSummaryReportQueryRq as IBudgetSummaryReportQuery
                        BudgetSummaryReportQueryRq= requestMsgSet.AppendBudgetSummaryReportQueryRq()
                        'Set field value for BudgetSummaryReportType
                        BudgetSummaryReportQueryRq.BudgetSummaryReportType.SetValue(ENBudgetSummaryReportType.bsrtBalanceSheetBudgetOverview)
                        'Set field value for DisplayReport
                        BudgetSummaryReportQueryRq.DisplayReport.SetValue(True)
                        'Set field value for FiscalYear
                        BudgetSummaryReportQueryRq.FiscalYear.SetValue(6)
                        'Set field value for BudgetCriterion
                        BudgetSummaryReportQueryRq.BudgetCriterion.SetValue(ENBudgetCriterion.bcAccounts)
                        Dim ORReportPeriodElementType2179 as String
                        ORReportPeriodElementType2179 = "ReportPeriod"
                        if (ORReportPeriodElementType2179 == "ReportPeriod") then
                                'Set field value for FromReportDate
                                BudgetSummaryReportQueryRq.ORReportPeriod.ReportPeriod.FromReportDate.SetValue(DateTime.Parse("12/15/2007"))
                                'Set field value for ToReportDate
                                BudgetSummaryReportQueryRq.ORReportPeriod.ReportPeriod.ToReportDate.SetValue(DateTime.Parse("12/15/2007"))
                        End If
                        if (ORReportPeriodElementType2179 == "ReportDateMacro") then
                                'Set field value for ReportDateMacro
                                BudgetSummaryReportQueryRq.ORReportPeriod.ReportDateMacro.SetValue(ENReportDateMacro.rdmAll)
                        End If
                        Dim ORReportClassFilterElementType2180 as String
                        ORReportClassFilterElementType2180 = "ListIDList"
                        if (ORReportClassFilterElementType2180 == "ListIDList") then
                                'Set field value for ListIDList
                                'May create more than one of these if needed
                                BudgetSummaryReportQueryRq.ReportClassFilter.ORReportClassFilter.ListIDList.Add("200000-1011023419")
                        End If
                        if (ORReportClassFilterElementType2180 == "FullNameList") then
                                'Set field value for FullNameList
                                'May create more than one of these if needed
                                BudgetSummaryReportQueryRq.ReportClassFilter.ORReportClassFilter.FullNameList.Add("ab")
                        End If
                        if (ORReportClassFilterElementType2180 == "ListIDWithChildren") then
                                'Set field value for ListIDWithChildren
                                BudgetSummaryReportQueryRq.ReportClassFilter.ORReportClassFilter.ListIDWithChildren.SetValue("200000-1011023419")
                        End If
                        if (ORReportClassFilterElementType2180 == "FullNameWithChildren") then
                                'Set field value for FullNameWithChildren
                                BudgetSummaryReportQueryRq.ReportClassFilter.ORReportClassFilter.FullNameWithChildren.SetValue("ab")
                        End If
                        'Set field value for SummarizeBudgetColumnsBy
                        BudgetSummaryReportQueryRq.SummarizeBudgetColumnsBy.SetValue(ENSummarizeBudgetColumnsBy.sbcbClass)
                        'Set field value for SummarizeBudgetRowsBy
                        BudgetSummaryReportQueryRq.SummarizeBudgetRowsBy.SetValue(ENSummarizeBudgetRowsBy.sbrbAccount)
                End Sub




                Public Sub WalkBudgetSummaryReportQueryRs( responseMsgSet as IMsgSetResponse)
                        if (responseMsgSet is nothing) then
                                Exit Sub
                        End If

                        Dim responseList as IResponseList
                        responseList = responseMsgSet.ResponseList
                        if (responseList is nothing) then
                                Exit Sub
                        End If

                        'if we sent only one request, there is only one response, we'll walk the list for this sample
                        for j=0 to responseList.Count-1
                                Dim response as IResponse
                                response = responseList.GetAt(j)
                                'check the status code of the response, 0=ok, >0 is warning
                                if (response.StatusCode >= 0) then
                                        'the request-specific response is in the details, make sure we have some
                                        if (not response.Detail is nothing) then
                                                'make sure the response is the type we're expecting
                                                Dim responseType as ENResponseType
                                                responseType = CType(response.Type.GetValue(),ENResponseType)
                                                if (responseType == ENResponseType.rtBudgetSummaryReportQueryRs) then
                                                        'upcast to more specific type here, this is safe because we checked with response.Type check above
                                                        Dim ReportRet as IReportRet
                                                        ReportRet = CType(response.Detail,IReportRet)
                                                        WalkReportRet(ReportRet)
                                                End If
                                        End If
                                End If
                        Next j
                End Sub




                Public Sub WalkReportRet(ReportRet as IReportRet)
                        if (ReportRet is nothing) then
                                Exit Sub
                        End If

                        'Go through all the elements of IReportRet
                        'Get value of ReportTitle
                        Dim ReportTitle2181 as String
                        ReportTitle2181 = ReportRet.ReportTitle.GetValue()
                        'Get value of ReportSubtitle
                        Dim ReportSubtitle2182 as String
                        ReportSubtitle2182 = ReportRet.ReportSubtitle.GetValue()
                        'Get value of ReportBasis
                        if ( not ReportRet.ReportBasis is nothing) then
                                Dim ReportBasis2183 as ENReportBasis
                                ReportBasis2183 = ReportRet.ReportBasis.GetValue()
                        End If
                        'Get value of NumRows
                        Dim NumRows2184 as Integer
                        NumRows2184 = ReportRet.NumRows.GetValue()
                        'Get value of NumColumns
                        Dim NumColumns2185 as Integer
                        NumColumns2185 = ReportRet.NumColumns.GetValue()
                        'Get value of NumColTitleRows
                        Dim NumColTitleRows2186 as Integer
                        NumColTitleRows2186 = ReportRet.NumColTitleRows.GetValue()
                        if (not ReportRet.ColDescList is nothing)
                                Dim i2187 as Integer
                                for i2187 = 0  to ReportRet.ColDescList.Count - 1
                                        Dim ColDesc as IColDesc
                                        ColDesc = ReportRet.ColDescList.GetAt(i2187)
                                        if (not ColDescColTitleList is nothing)
                                                Dim i2188 as Integer
                                                for i2188 = 0  to ColDescColTitleList.Count - 1
                                                        Dim ColTitle as IColTitle
                                                        ColTitle = ColDescColTitleList.GetAt(i2188)
                                                Next i2188
                                        End If
                                        'Get value of ColType
                                        Dim ColType2189 as ENColType
                                        ColType2189 = ColDescColType.GetValue()
                                Next i2187
                        End If
                        if (not ReportRet.ReportData. is nothing) then
                                if (not ReportRet.ReportData.ORReportDataList is nothing) then
                                        Dim i2190 as Integer
                                        for i2190 = 0 to ReportRet.ReportData.ORReportDataList.Count - 1
                                                Dim ORReportData2191 as IORReportData
                                                ORReportData2191 = ReportRet.ReportData.ORReportDataList.GetAt(i2190)
                                                if (not ORReportData2191.DataRow is nothing) then
                                                        if (not ORReportData2191.DataRow. is nothing) then
                                                                if (not ORReportData2191.DataRow.RowData. is nothing) then
                                                                End If
                                                                if (not ORReportData2191.DataRow.ColDataList is nothing)
                                                                        Dim i2192 as Integer
                                                                        for i2192 = 0  to ORReportData2191.DataRow.ColDataList.Count - 1
                                                                                Dim ColData as IColData
                                                                                ColData = ORReportData2191.DataRow.ColDataList.GetAt(i2192)
                                                                        Next i2192
                                                                End If
                                                        End If
                                                End If
                                                if (not ORReportData2191.TextRow is nothing) then
                                                        if (not ORReportData2191.TextRow. is nothing) then
                                                        End If
                                                End If
                                                if (not ORReportData2191.SubtotalRow is nothing) then
                                                        if (not ORReportData2191.SubtotalRow. is nothing) then
                                                                if (not ORReportData2191.SubtotalRow.RowData. is nothing) then
                                                                End If
                                                                if (not ORReportData2191.SubtotalRow.ColDataList is nothing)
                                                                        Dim i2193 as Integer
                                                                        for i2193 = 0  to ORReportData2191.SubtotalRow.ColDataList.Count - 1
                                                                                Dim ColData as IColData
                                                                                ColData = ORReportData2191.SubtotalRow.ColDataList.GetAt(i2193)
                                                                        Next i2193
                                                                End If
                                                        End If
                                                End If
                                                if (not ORReportData2191.TotalRow is nothing) then
                                                        if (not ORReportData2191.TotalRow. is nothing) then
                                                                if (not ORReportData2191.TotalRow.RowData. is nothing) then
                                                                End If
                                                                if (not ORReportData2191.TotalRow.ColDataList is nothing)
                                                                        Dim i2194 as Integer
                                                                        for i2194 = 0  to ORReportData2191.TotalRow.ColDataList.Count - 1
                                                                                Dim ColData as IColData
                                                                                ColData = ORReportData2191.TotalRow.ColDataList.GetAt(i2194)
                                                                        Next i2194
                                                                End If
                                                        End If
                                                End If
                                        Next i2190
                                End If
                        End If
                End Sub




        End Class
End Module

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
//The following sample code is generated as an illustration of
//Creating requests and parsing responses ONLY
//This code is NOT intended to show best practices or ideal code
//Use at your most careful discretion

using System;
using System.Net;
using System.Drawing;
using System.Collections;
using System.ComponentModel;
using System.Windows.Forms;
using System.Data;
using System.IO;
using Interop.QBFC16;

namespace com.intuit.idn.samples
{
        public class Sample
        {
                public void  DoBudgetSummaryReportQuery()
                {
                        bool sessionBegun = false;
                        bool connectionOpen = false;
                        QBSessionManager sessionManager = null;

                        try
                        {
                                //Create the session Manager object
                                sessionManager = new QBSessionManager();

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

                                BuildBudgetSummaryReportQueryRq(requestMsgSet);

                                //Connect to QuickBooks and begin a session
                                sessionManager.OpenConnection("","Sample Code from OSR");
                                connectionOpen = true;
                                sessionManager.BeginSession("", ENOpenMode.omDontCare);
                                sessionBegun = true;

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

                                //End the session and close the connection to QuickBooks
                                sessionManager.EndSession();
                                sessionBegun = false;
                                sessionManager.CloseConnection();
                                connectionOpen = false;

                                WalkBudgetSummaryReportQueryRs(responseMsgSet);
                        }
                        catch (Exception e)
                        {
                                MessageBox.Show(e.Message, "Error");
                                if (sessionBegun)
                                {
                                        sessionManager.EndSession();
                                }
                                if (connectionOpen)
                                {
                                        sessionManager.CloseConnection();
                                }
                        }
                }
                void BuildBudgetSummaryReportQueryRq(IMsgSetRequest requestMsgSet)
                {
                        IBudgetSummaryReportQuery BudgetSummaryReportQueryRq= requestMsgSet.AppendBudgetSummaryReportQueryRq();
                        //Set field value for BudgetSummaryReportType
                        BudgetSummaryReportQueryRq.BudgetSummaryReportType.SetValue(ENBudgetSummaryReportType.bsrtBalanceSheetBudgetOverview);
                        //Set field value for DisplayReport
                        BudgetSummaryReportQueryRq.DisplayReport.SetValue(true);
                        //Set field value for FiscalYear
                        BudgetSummaryReportQueryRq.FiscalYear.SetValue(6);
                        //Set field value for BudgetCriterion
                        BudgetSummaryReportQueryRq.BudgetCriterion.SetValue(ENBudgetCriterion.bcAccounts);
                        string ORReportPeriodElementType2163 = "ReportPeriod";
                        if (ORReportPeriodElementType2163 == "ReportPeriod")
                        {
                                //Set field value for FromReportDate
                                BudgetSummaryReportQueryRq.ORReportPeriod.ReportPeriod.FromReportDate.SetValue(DateTime.Parse("12/15/2007"));
                                //Set field value for ToReportDate
                                BudgetSummaryReportQueryRq.ORReportPeriod.ReportPeriod.ToReportDate.SetValue(DateTime.Parse("12/15/2007"));
                        }
                        if (ORReportPeriodElementType2163 == "ReportDateMacro")
                        {
                                //Set field value for ReportDateMacro
                                BudgetSummaryReportQueryRq.ORReportPeriod.ReportDateMacro.SetValue(ENReportDateMacro.rdmAll);
                        }
                        string ORReportClassFilterElementType2164 = "ListIDList";
                        if (ORReportClassFilterElementType2164 == "ListIDList")
                        {
                                //Set field value for ListIDList
                                //May create more than one of these if needed
                                BudgetSummaryReportQueryRq.ReportClassFilter.ORReportClassFilter.ListIDList.Add("200000-1011023419");
                        }
                        if (ORReportClassFilterElementType2164 == "FullNameList")
                        {
                                //Set field value for FullNameList
                                //May create more than one of these if needed
                                BudgetSummaryReportQueryRq.ReportClassFilter.ORReportClassFilter.FullNameList.Add("ab");
                        }
                        if (ORReportClassFilterElementType2164 == "ListIDWithChildren")
                        {
                                //Set field value for ListIDWithChildren
                                BudgetSummaryReportQueryRq.ReportClassFilter.ORReportClassFilter.ListIDWithChildren.SetValue("200000-1011023419");
                        }
                        if (ORReportClassFilterElementType2164 == "FullNameWithChildren")
                        {
                                //Set field value for FullNameWithChildren
                                BudgetSummaryReportQueryRq.ReportClassFilter.ORReportClassFilter.FullNameWithChildren.SetValue("ab");
                        }
                        //Set field value for SummarizeBudgetColumnsBy
                        BudgetSummaryReportQueryRq.SummarizeBudgetColumnsBy.SetValue(ENSummarizeBudgetColumnsBy.sbcbClass);
                        //Set field value for SummarizeBudgetRowsBy
                        BudgetSummaryReportQueryRq.SummarizeBudgetRowsBy.SetValue(ENSummarizeBudgetRowsBy.sbrbAccount);
                }




                void WalkBudgetSummaryReportQueryRs(IMsgSetResponse responseMsgSet)
                {
                        if (responseMsgSet == null) return;
                        IResponseList responseList = responseMsgSet.ResponseList;
                        if (responseList == null) return;
                        //if we sent only one request, there is only one response, we'll walk the list for this sample
                        for(int i=0; i < responseList.Count; i++)
                        {
                                IResponse response = responseList.GetAt(i);
                                //check the status code of the response, 0=ok, >0 is warning
                                if (response.StatusCode >= 0)
                                {
                                        //the request-specific response is in the details, make sure we have some
                                        if (response.Detail != null)
                                        {
                                                //make sure the response is the type we're expecting
                                                ENResponseType responseType = (ENResponseType)response.Type.GetValue();
                                                if (responseType == ENResponseType.rtBudgetSummaryReportQueryRs)
                                                {
                                                        //upcast to more specific type here, this is safe because we checked with response.Type check above
                                                        IReportRet ReportRet = (IReportRet)response.Detail;
                                                        WalkReportRet(ReportRet);
                                                }
                                        }
                                }
                        }
                }




                void WalkReportRet(IReportRet ReportRet)
                {
                        if (ReportRet == null) return;
                        //Go through all the elements of IReportRet
                        //Get value of ReportTitle
                        string ReportTitle2165 = (string)ReportRet.ReportTitle.GetValue();
                        //Get value of ReportSubtitle
                        string ReportSubtitle2166 = (string)ReportRet.ReportSubtitle.GetValue();
                        //Get value of ReportBasis
                        if (ReportRet.ReportBasis != null)
                        {
                                ENReportBasis ReportBasis2167 = (ENReportBasis)ReportRet.ReportBasis.GetValue();
                        }
                        //Get value of NumRows
                        int NumRows2168 = (int)ReportRet.NumRows.GetValue();
                        //Get value of NumColumns
                        int NumColumns2169 = (int)ReportRet.NumColumns.GetValue();
                        //Get value of NumColTitleRows
                        int NumColTitleRows2170 = (int)ReportRet.NumColTitleRows.GetValue();
                        if (ReportRet.ColDescList != null)
                        {
                                for (int i2171 = 0; i2171 < ReportRet.ColDescList.Count; i2171++)
                                {
                                        IColDesc ColDesc = ReportRet.ColDescList.GetAt(i2171);
                                        if (ColDesc.ColTitleList != null)
                                        {
                                                for (int i2172 = 0; i2172 < ColDesc.ColTitleList.Count; i2172++)
                                                {
                                                        IColTitle ColTitle = ColDesc.ColTitleList.GetAt(i2172);
                                                }
                                        }
                                        //Get value of ColType
                                        ENColType ColType2173 = (ENColType)ColDesc.ColType.GetValue();
                                }
                        }
                        if (ReportRet.ReportData != null)
                        {
                                if (ReportRet.ReportData.ORReportDataList != null)
                                {
                                        for (int i2174 = 0; i2174 < ReportRet.ReportData.ORReportDataList.Count; i2174++)
                                        {
                                                IORReportData ORReportData2175 = ReportRet.ReportData.ORReportDataList.GetAt(i2174);
                                                if (ORReportData2175.DataRow != null)
                                                {
                                                        if (ORReportData2175.DataRow != null)
                                                        {
                                                                if (ORReportData2175.DataRow.RowData != null)
                                                                {
                                                                }
                                                                if (ORReportData2175.DataRow.ColDataList != null)
                                                                {
                                                                        for (int i2176 = 0; i2176 < ORReportData2175.DataRow.ColDataList.Count; i2176++)
                                                                        {
                                                                                IColData ColData = ORReportData2175.DataRow.ColDataList.GetAt(i2176);
                                                                        }
                                                                }
                                                        }
                                                }
                                                if (ORReportData2175.TextRow != null)
                                                {
                                                        if (ORReportData2175.TextRow != null)
                                                        {
                                                        }
                                                }
                                                if (ORReportData2175.SubtotalRow != null)
                                                {
                                                        if (ORReportData2175.SubtotalRow != null)
                                                        {
                                                                if (ORReportData2175.SubtotalRow.RowData != null)
                                                                {
                                                                }
                                                                if (ORReportData2175.SubtotalRow.ColDataList != null)
                                                                {
                                                                        for (int i2177 = 0; i2177 < ORReportData2175.SubtotalRow.ColDataList.Count; i2177++)
                                                                        {
                                                                                IColData ColData = ORReportData2175.SubtotalRow.ColDataList.GetAt(i2177);
                                                                        }
                                                                }
                                                        }
                                                }
                                                if (ORReportData2175.TotalRow != null)
                                                {
                                                        if (ORReportData2175.TotalRow != null)
                                                        {
                                                                if (ORReportData2175.TotalRow.RowData != null)
                                                                {
                                                                }
                                                                if (ORReportData2175.TotalRow.ColDataList != null)
                                                                {
                                                                        for (int i2178 = 0; i2178 < ORReportData2175.TotalRow.ColDataList.Count; i2178++)
                                                                        {
                                                                                IColData ColData = ORReportData2175.TotalRow.ColDataList.GetAt(i2178);
                                                                        }
                                                                }
                                                        }
                                                }
                                        }
                                }
                        }
                }




        }
}