PayrollSummaryReportQuery(3.0)

This report returns information from any of three QuickBooks payroll reports:

Payroll Summary Reports can be generated if your application is accessing a company file that is currently signed up for a subscription to a payroll service. (If your application is not signed up, it will receive an error when it attempts to generate a report in this category.)

The restrictions noted above about payroll reports requiring the use of the Intuit Payroll service do not apply to the QuickBooks sample companies. You can still test out these reports on the sample companies without subscribing to the payroll service. For all other companies, however, the company must be subscribed.


Request

Response

XMLOps

VB.NET

C#

Tag Type Max length Implementation Required

IPayrollSummaryReportQuery

This report returns information from any of three QuickBooks payroll reports:Payroll summary report This report shows the total wages, taxes withheld, deductions from net pay, additions to net pay, and employer-paid taxes and contributions for each employee on the payroll. Employee earnings summary report This report shows information similar to the payroll summary report, but in a different layout. The report has a row for each employee and a column for each payroll item. Payroll liability balances report This report lists the payroll liabilities the QuickBooks company owes to various agencies, such as the federal government, your state government, insurance plan administrators, labor unions, etc. The report covers unpaid liabilities incurred during the period of time shown in the From and To fields. If the company paid a liability incurred within the date range of the report, the report omits that liability, even if the payment occurred after the ending date of the report. Payroll Summary Reports can be generated if your application is accessing a company file that is currently signed up for a subscription to a payroll service. (If your application is not signed up, it will receive an error when it attempts to generate a report in this category.) The restrictions noted above about payroll reports requiring the use of the Intuit Payroll service do not apply to the QuickBooks sample companies. You can still test out these reports on the sample companies without subscribing to the payroll service. For all other companies, however, the company must be subscribed.
    3.0  

PayrollSummaryReportType

The type of payroll report: psrtEmployeeEarningsSummary This report shows information similar to the payroll summary report, but in a different layout. The report has a row for each employee and a column for each payroll item. psrtPayrollLiabilityBalances This report lists the payroll liabilities the QuickBooks company owes to various agencies, such as the federal government, your state government, insurance plan administrators, labor unions, etc. The report covers unpaid liabilities incurred during the period of time shown in the From and To fields. If the company paid a liability incurred within the date range of the report, the report omits that liability, even if the payment occurred after the ending date of the report. psrtPayrollSummary This report shows the total wages, taxes withheld, deductions from net pay, additions to net pay, and employer-paid taxes and contributions for each employee on the payroll.
IQBENPayrollSummaryReportTypeType     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   3.0  

ORReportPeriod

IORReportPeriod      

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      

ReportAccountFilter

Allows you to query for a specified account type or for specific list elements.
IReportAccountFilter      

ORReportAccountFilter

IORReportAccountFilter     Y

AccountTypeFilter

Allows you to report on a specific account type.
IQBENAccountTypeFilterType      

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      

ReportEntityFilter

Allows you to query for a specified name type (customer, employee, vendor, or other) or query for specific list elements.
IReportEntityFilter      

ORReportEntityFilter

IORReportEntityFilter     Y

EntityTypeFilter

Allows you to report on a specific name type.
IQBENEntityTypeFilterType      

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      

ReportItemFilter

Allows you to query for a specified item type (for example, discount, inventory, or non-inventory) or query for specific list elements.
IReportItemFilter      

ORReportItemFilter

IORReportItemFilter     Y

ItemTypeFilter

Allows you to report on a specific item type.
IQBENItemTypeFilterType      

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      

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   2.1  

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      

ORReportModifiedDate

IORReportModifiedDate   3.0  

ReportModifiedDateRangeFilter

Returns reports that were modified between these two dates (inclusive). The range of acceptable dates for both FromReportModifiedDate and ToReportModifiedDate is 1970-01-01 to 2038-01-19T03:14:07 (2038-01-18T19:14:07-08:00 PST).
IReportModifiedDateRangeFilter      

FromReportModifiedDate

Selects information from this date and later. The range of acceptable dates is 1970-01-01 to 2038-01-19T03:14:07 (2038-01-18T19:14:07-08:00 PST).
IQBDateType      

ToReportModifiedDate

Selects information created on this date or earlier. The range of acceptable dates is 1970-01-01 to 2038-01-19T03:14:07 (2038-01-18T19:14:07-08:00 PST).
IQBDateType      

ReportModifiedDateRangeMacro

The time period covered by this report.
IQBENReportModifiedDateRangeMacroType      

ReportDetailLevelFilter

The level of detail to include in the report.
IQBENReportDetailLevelFilterType   3.0  

ReportPostingStatusFilter

Allows you to query for posting reports, non-posting reports, or reports that are either one.
IQBENReportPostingStatusFilterType   3.0  

SummarizeColumnsBy

SummarizeColumnsBy determines which data the report calculates and how the columns will be labeled across the top of the report. For example, if you set the value to scbTwoWeek, the report’s column labels might be “Feb 10-23, 02,” “Feb 24-Mar9, 02,” and so on.
IQBENSummarizeColumnsByType      

IncludeSubcolumns

The default value is false, which means that the report will not include any subcolumn information. To include all available types of subcolumns for this report, set IncludeSubcolumns to true. The SDK will not return subcolumn information for data that can be easily computed. (For example, the SDK does not return the “percent of row” column.)
IQBBoolType      

ReportCalendar

Specifies the type of year that will be used for this report.
IQBENReportCalendarType      

ReturnRows

Specifies whether you want the report to include only rows with active information, only rows with nonzero values, or all rows regardless of their content or active status.
IQBENReturnRowsType      

ReturnColumns

Specifies whether you want the report to include only columns with active information, only columns with nonzero values, or all columns regardless of their content or active status.
IQBENReturnColumnsType      
Tag Type Max length Implementation Required

IResponse

This report returns information from any of three QuickBooks payroll reports:Payroll summary report This report shows the total wages, taxes withheld, deductions from net pay, additions to net pay, and employer-paid taxes and contributions for each employee on the payroll. Employee earnings summary report This report shows information similar to the payroll summary report, but in a different layout. The report has a row for each employee and a column for each payroll item. Payroll liability balances report This report lists the payroll liabilities the QuickBooks company owes to various agencies, such as the federal government, your state government, insurance plan administrators, labor unions, etc. The report covers unpaid liabilities incurred during the period of time shown in the From and To fields. If the company paid a liability incurred within the date range of the report, the report omits that liability, even if the payment occurred after the ending date of the report. Payroll Summary Reports can be generated if your application is accessing a company file that is currently signed up for a subscription to a payroll service. (If your application is not signed up, it will receive an error when it attempts to generate a report in this category.) The restrictions noted above about payroll reports requiring the use of the Intuit Payroll service do not apply to the QuickBooks sample companies. You can still test out these reports on the sample companies without subscribing to the payroll service. For all other companies, however, the company must be subscribed.
    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
 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
<?xml version="1.0" encoding="utf-8"?>
<?qbxml version="16.0"?>
<QBXML>
        <QBXMLMsgsRq onError="stopOnError">
                <PayrollSummaryReportQueryRq>
                        <!-- PayrollSummaryReportType may have one of the following values: EmployeeEarningsSummary, PayrollLiabilityBalances, PayrollSummary -->
                        <PayrollSummaryReportType >ENUMTYPE</PayrollSummaryReportType> <!-- required -->
                        <DisplayReport >BOOLTYPE</DisplayReport> <!-- 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 -->
                        <ReportAccountFilter> <!-- optional -->
                                <!-- BEGIN OR -->
                                        <!-- AccountTypeFilter may have one of the following values: AccountsPayable, AccountsReceivable, AllowedFor1099, APAndSalesTax, APOrCreditCard, ARAndAP, Asset, BalanceSheet, Bank, BankAndARAndAPAndUF, BankAndUF, CostOfSales, CreditCard, CurrentAsset, CurrentAssetAndExpense, CurrentLiability, Equity, EquityAndIncomeAndExpense, ExpenseAndOtherExpense, FixedAsset, IncomeAndExpense, IncomeAndOtherIncome, Liability, LiabilityAndEquity, LongTermLiability, NonPosting, OrdinaryExpense, OrdinaryIncome, OrdinaryIncomeAndCOGS, OrdinaryIncomeAndExpense, OtherAsset, OtherCurrentAsset, OtherCurrentLiability, OtherExpense, OtherIncome, OtherIncomeOrExpense -->
                                        <AccountTypeFilter >ENUMTYPE</AccountTypeFilter> <!-- optional -->
                                <!-- 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 -->
                        </ReportAccountFilter>
                        <ReportEntityFilter> <!-- optional -->
                                <!-- BEGIN OR -->
                                        <!-- EntityTypeFilter may have one of the following values: Customer, Employee, OtherName, Vendor -->
                                        <EntityTypeFilter >ENUMTYPE</EntityTypeFilter> <!-- optional -->
                                <!-- 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 -->
                        </ReportEntityFilter>
                        <ReportItemFilter> <!-- optional -->
                                <!-- BEGIN OR -->
                                        <!-- ItemTypeFilter may have one of the following values: AllExceptFixedAsset, Assembly, Discount, FixedAsset, Inventory, InventoryAndAssembly, NonInventory, OtherCharge, Payment, Sales, SalesTax, Service -->
                                        <ItemTypeFilter >ENUMTYPE</ItemTypeFilter> <!-- optional -->
                                <!-- 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 -->
                        </ReportItemFilter>
                        <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>
                        <!-- BEGIN OR -->
                                <ReportModifiedDateRangeFilter> <!-- optional -->
                                        <FromReportModifiedDate >DATETYPE</FromReportModifiedDate> <!-- optional -->
                                        <ToReportModifiedDate >DATETYPE</ToReportModifiedDate> <!-- optional -->
                                </ReportModifiedDateRangeFilter>
                        <!-- OR -->
                                <!-- ReportModifiedDateRangeMacro 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 -->
                                <ReportModifiedDateRangeMacro >ENUMTYPE</ReportModifiedDateRangeMacro> <!-- optional -->
                        <!-- END OR -->
                        <!-- ReportDetailLevelFilter may have one of the following values: All [DEFAULT], AllExceptSummary, SummaryOnly -->
                        <ReportDetailLevelFilter >ENUMTYPE</ReportDetailLevelFilter> <!-- optional -->
                        <!-- ReportPostingStatusFilter may have one of the following values: Either, NonPosting, Posting -->
                        <ReportPostingStatusFilter >ENUMTYPE</ReportPostingStatusFilter> <!-- optional -->
                        <!-- SummarizeColumnsBy may have one of the following values: Account, BalanceSheet, Class, Customer, CustomerType, Day, Employee, FourWeek, HalfMonth, IncomeStatement, ItemDetail, ItemType, Month, Payee, PaymentMethod, PayrollItemDetail, PayrollYtdDetail, Quarter, SalesRep, SalesTaxCode, ShipMethod, Terms, TotalOnly, TwoWeek, Vendor, VendorType, Week, Year -->
                        <SummarizeColumnsBy >ENUMTYPE</SummarizeColumnsBy> <!-- optional -->
                        <IncludeSubcolumns >BOOLTYPE</IncludeSubcolumns> <!-- optional -->
                        <!-- ReportCalendar may have one of the following values: CalendarYear, FiscalYear, TaxYear -->
                        <ReportCalendar >ENUMTYPE</ReportCalendar> <!-- optional -->
                        <!-- ReturnRows may have one of the following values: ActiveOnly, NonZero, All -->
                        <ReturnRows >ENUMTYPE</ReturnRows> <!-- optional -->
                        <!-- ReturnColumns may have one of the following values: ActiveOnly, NonZero, All -->
                        <ReturnColumns >ENUMTYPE</ReturnColumns> <!-- optional -->
                </PayrollSummaryReportQueryRq>

                <PayrollSummaryReportQueryRs 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>
                </PayrollSummaryReportQueryRs>
        </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
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
'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  DoPayrollSummaryReportQuery()
                        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

                                BuildPayrollSummaryReportQueryRq(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

                                WalkPayrollSummaryReportQueryRs(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 BuildPayrollSummaryReportQueryRq(requestMsgSet as IMsgSetRequest)
                        Dim PayrollSummaryReportQueryRq as IPayrollSummaryReportQuery
                        PayrollSummaryReportQueryRq= requestMsgSet.AppendPayrollSummaryReportQueryRq()
                        'Set field value for PayrollSummaryReportType
                        PayrollSummaryReportQueryRq.PayrollSummaryReportType.SetValue(ENPayrollSummaryReportType.psrtEmployeeEarningsSummary)
                        'Set field value for DisplayReport
                        PayrollSummaryReportQueryRq.DisplayReport.SetValue(True)
                        Dim ORReportPeriodElementType17307 as String
                        ORReportPeriodElementType17307 = "ReportPeriod"
                        if (ORReportPeriodElementType17307 == "ReportPeriod") then
                                'Set field value for FromReportDate
                                PayrollSummaryReportQueryRq.ORReportPeriod.ReportPeriod.FromReportDate.SetValue(DateTime.Parse("12/15/2007"))
                                'Set field value for ToReportDate
                                PayrollSummaryReportQueryRq.ORReportPeriod.ReportPeriod.ToReportDate.SetValue(DateTime.Parse("12/15/2007"))
                        End If
                        if (ORReportPeriodElementType17307 == "ReportDateMacro") then
                                'Set field value for ReportDateMacro
                                PayrollSummaryReportQueryRq.ORReportPeriod.ReportDateMacro.SetValue(ENReportDateMacro.rdmAll)
                        End If
                        Dim ORReportAccountFilterElementType17308 as String
                        ORReportAccountFilterElementType17308 = "AccountTypeFilter"
                        if (ORReportAccountFilterElementType17308 == "AccountTypeFilter") then
                                'Set field value for AccountTypeFilter
                                PayrollSummaryReportQueryRq.ReportAccountFilter.ORReportAccountFilter.AccountTypeFilter.SetValue(ENAccountTypeFilter.atfAccountsPayable)
                        End If
                        if (ORReportAccountFilterElementType17308 == "ListIDList") then
                                'Set field value for ListIDList
                                'May create more than one of these if needed
                                PayrollSummaryReportQueryRq.ReportAccountFilter.ORReportAccountFilter.ListIDList.Add("200000-1011023419")
                        End If
                        if (ORReportAccountFilterElementType17308 == "FullNameList") then
                                'Set field value for FullNameList
                                'May create more than one of these if needed
                                PayrollSummaryReportQueryRq.ReportAccountFilter.ORReportAccountFilter.FullNameList.Add("ab")
                        End If
                        if (ORReportAccountFilterElementType17308 == "ListIDWithChildren") then
                                'Set field value for ListIDWithChildren
                                PayrollSummaryReportQueryRq.ReportAccountFilter.ORReportAccountFilter.ListIDWithChildren.SetValue("200000-1011023419")
                        End If
                        if (ORReportAccountFilterElementType17308 == "FullNameWithChildren") then
                                'Set field value for FullNameWithChildren
                                PayrollSummaryReportQueryRq.ReportAccountFilter.ORReportAccountFilter.FullNameWithChildren.SetValue("ab")
                        End If
                        Dim ORReportEntityFilterElementType17309 as String
                        ORReportEntityFilterElementType17309 = "EntityTypeFilter"
                        if (ORReportEntityFilterElementType17309 == "EntityTypeFilter") then
                                'Set field value for EntityTypeFilter
                                PayrollSummaryReportQueryRq.ReportEntityFilter.ORReportEntityFilter.EntityTypeFilter.SetValue(ENEntityTypeFilter.etfCustomer)
                        End If
                        if (ORReportEntityFilterElementType17309 == "ListIDList") then
                                'Set field value for ListIDList
                                'May create more than one of these if needed
                                PayrollSummaryReportQueryRq.ReportEntityFilter.ORReportEntityFilter.ListIDList.Add("200000-1011023419")
                        End If
                        if (ORReportEntityFilterElementType17309 == "FullNameList") then
                                'Set field value for FullNameList
                                'May create more than one of these if needed
                                PayrollSummaryReportQueryRq.ReportEntityFilter.ORReportEntityFilter.FullNameList.Add("ab")
                        End If
                        if (ORReportEntityFilterElementType17309 == "ListIDWithChildren") then
                                'Set field value for ListIDWithChildren
                                PayrollSummaryReportQueryRq.ReportEntityFilter.ORReportEntityFilter.ListIDWithChildren.SetValue("200000-1011023419")
                        End If
                        if (ORReportEntityFilterElementType17309 == "FullNameWithChildren") then
                                'Set field value for FullNameWithChildren
                                PayrollSummaryReportQueryRq.ReportEntityFilter.ORReportEntityFilter.FullNameWithChildren.SetValue("ab")
                        End If
                        Dim ORReportItemFilterElementType17310 as String
                        ORReportItemFilterElementType17310 = "ItemTypeFilter"
                        if (ORReportItemFilterElementType17310 == "ItemTypeFilter") then
                                'Set field value for ItemTypeFilter
                                PayrollSummaryReportQueryRq.ReportItemFilter.ORReportItemFilter.ItemTypeFilter.SetValue(ENItemTypeFilter.itfAllExceptFixedAsset)
                        End If
                        if (ORReportItemFilterElementType17310 == "ListIDList") then
                                'Set field value for ListIDList
                                'May create more than one of these if needed
                                PayrollSummaryReportQueryRq.ReportItemFilter.ORReportItemFilter.ListIDList.Add("200000-1011023419")
                        End If
                        if (ORReportItemFilterElementType17310 == "FullNameList") then
                                'Set field value for FullNameList
                                'May create more than one of these if needed
                                PayrollSummaryReportQueryRq.ReportItemFilter.ORReportItemFilter.FullNameList.Add("ab")
                        End If
                        if (ORReportItemFilterElementType17310 == "ListIDWithChildren") then
                                'Set field value for ListIDWithChildren
                                PayrollSummaryReportQueryRq.ReportItemFilter.ORReportItemFilter.ListIDWithChildren.SetValue("200000-1011023419")
                        End If
                        if (ORReportItemFilterElementType17310 == "FullNameWithChildren") then
                                'Set field value for FullNameWithChildren
                                PayrollSummaryReportQueryRq.ReportItemFilter.ORReportItemFilter.FullNameWithChildren.SetValue("ab")
                        End If
                        Dim ORReportClassFilterElementType17311 as String
                        ORReportClassFilterElementType17311 = "ListIDList"
                        if (ORReportClassFilterElementType17311 == "ListIDList") then
                                'Set field value for ListIDList
                                'May create more than one of these if needed
                                PayrollSummaryReportQueryRq.ReportClassFilter.ORReportClassFilter.ListIDList.Add("200000-1011023419")
                        End If
                        if (ORReportClassFilterElementType17311 == "FullNameList") then
                                'Set field value for FullNameList
                                'May create more than one of these if needed
                                PayrollSummaryReportQueryRq.ReportClassFilter.ORReportClassFilter.FullNameList.Add("ab")
                        End If
                        if (ORReportClassFilterElementType17311 == "ListIDWithChildren") then
                                'Set field value for ListIDWithChildren
                                PayrollSummaryReportQueryRq.ReportClassFilter.ORReportClassFilter.ListIDWithChildren.SetValue("200000-1011023419")
                        End If
                        if (ORReportClassFilterElementType17311 == "FullNameWithChildren") then
                                'Set field value for FullNameWithChildren
                                PayrollSummaryReportQueryRq.ReportClassFilter.ORReportClassFilter.FullNameWithChildren.SetValue("ab")
                        End If
                        Dim ORReportModifiedDateElementType17312 as String
                        ORReportModifiedDateElementType17312 = "ReportModifiedDateRangeFilter"
                        if (ORReportModifiedDateElementType17312 == "ReportModifiedDateRangeFilter") then
                                'Set field value for FromReportModifiedDate
                                PayrollSummaryReportQueryRq.ORReportModifiedDate.ReportModifiedDateRangeFilter.FromReportModifiedDate.SetValue(DateTime.Parse("12/15/2007"))
                                'Set field value for ToReportModifiedDate
                                PayrollSummaryReportQueryRq.ORReportModifiedDate.ReportModifiedDateRangeFilter.ToReportModifiedDate.SetValue(DateTime.Parse("12/15/2007"))
                        End If
                        if (ORReportModifiedDateElementType17312 == "ReportModifiedDateRangeMacro") then
                                'Set field value for ReportModifiedDateRangeMacro
                                PayrollSummaryReportQueryRq.ORReportModifiedDate.ReportModifiedDateRangeMacro.SetValue(ENReportModifiedDateRangeMacro.rmdrmAll)
                        End If
                        'Set field value for ReportDetailLevelFilter
                        PayrollSummaryReportQueryRq.ReportDetailLevelFilter.SetValue(ENReportDetailLevelFilter.rdlfAll [DEFAULT])
                        'Set field value for ReportPostingStatusFilter
                        PayrollSummaryReportQueryRq.ReportPostingStatusFilter.SetValue(ENReportPostingStatusFilter.rpsfEither)
                        'Set field value for SummarizeColumnsBy
                        PayrollSummaryReportQueryRq.SummarizeColumnsBy.SetValue(ENSummarizeColumnsBy.scbAccount)
                        'Set field value for IncludeSubcolumns
                        PayrollSummaryReportQueryRq.IncludeSubcolumns.SetValue(True)
                        'Set field value for ReportCalendar
                        PayrollSummaryReportQueryRq.ReportCalendar.SetValue(ENReportCalendar.rcCalendarYear)
                        'Set field value for ReturnRows
                        PayrollSummaryReportQueryRq.ReturnRows.SetValue(ENReturnRows.rrActiveOnly)
                        'Set field value for ReturnColumns
                        PayrollSummaryReportQueryRq.ReturnColumns.SetValue(ENReturnColumns.rcActiveOnly)
                End Sub




                Public Sub WalkPayrollSummaryReportQueryRs( 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.rtPayrollSummaryReportQueryRs) 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 ReportTitle17313 as String
                        ReportTitle17313 = ReportRet.ReportTitle.GetValue()
                        'Get value of ReportSubtitle
                        Dim ReportSubtitle17314 as String
                        ReportSubtitle17314 = ReportRet.ReportSubtitle.GetValue()
                        'Get value of ReportBasis
                        if ( not ReportRet.ReportBasis is nothing) then
                                Dim ReportBasis17315 as ENReportBasis
                                ReportBasis17315 = ReportRet.ReportBasis.GetValue()
                        End If
                        'Get value of NumRows
                        Dim NumRows17316 as Integer
                        NumRows17316 = ReportRet.NumRows.GetValue()
                        'Get value of NumColumns
                        Dim NumColumns17317 as Integer
                        NumColumns17317 = ReportRet.NumColumns.GetValue()
                        'Get value of NumColTitleRows
                        Dim NumColTitleRows17318 as Integer
                        NumColTitleRows17318 = ReportRet.NumColTitleRows.GetValue()
                        if (not ReportRet.ColDescList is nothing)
                                Dim i17319 as Integer
                                for i17319 = 0  to ReportRet.ColDescList.Count - 1
                                        Dim ColDesc as IColDesc
                                        ColDesc = ReportRet.ColDescList.GetAt(i17319)
                                        if (not ColDescColTitleList is nothing)
                                                Dim i17320 as Integer
                                                for i17320 = 0  to ColDescColTitleList.Count - 1
                                                        Dim ColTitle as IColTitle
                                                        ColTitle = ColDescColTitleList.GetAt(i17320)
                                                Next i17320
                                        End If
                                        'Get value of ColType
                                        Dim ColType17321 as ENColType
                                        ColType17321 = ColDescColType.GetValue()
                                Next i17319
                        End If
                        if (not ReportRet.ReportData. is nothing) then
                                if (not ReportRet.ReportData.ORReportDataList is nothing) then
                                        Dim i17322 as Integer
                                        for i17322 = 0 to ReportRet.ReportData.ORReportDataList.Count - 1
                                                Dim ORReportData17323 as IORReportData
                                                ORReportData17323 = ReportRet.ReportData.ORReportDataList.GetAt(i17322)
                                                if (not ORReportData17323.DataRow is nothing) then
                                                        if (not ORReportData17323.DataRow. is nothing) then
                                                                if (not ORReportData17323.DataRow.RowData. is nothing) then
                                                                End If
                                                                if (not ORReportData17323.DataRow.ColDataList is nothing)
                                                                        Dim i17324 as Integer
                                                                        for i17324 = 0  to ORReportData17323.DataRow.ColDataList.Count - 1
                                                                                Dim ColData as IColData
                                                                                ColData = ORReportData17323.DataRow.ColDataList.GetAt(i17324)
                                                                        Next i17324
                                                                End If
                                                        End If
                                                End If
                                                if (not ORReportData17323.TextRow is nothing) then
                                                        if (not ORReportData17323.TextRow. is nothing) then
                                                        End If
                                                End If
                                                if (not ORReportData17323.SubtotalRow is nothing) then
                                                        if (not ORReportData17323.SubtotalRow. is nothing) then
                                                                if (not ORReportData17323.SubtotalRow.RowData. is nothing) then
                                                                End If
                                                                if (not ORReportData17323.SubtotalRow.ColDataList is nothing)
                                                                        Dim i17325 as Integer
                                                                        for i17325 = 0  to ORReportData17323.SubtotalRow.ColDataList.Count - 1
                                                                                Dim ColData as IColData
                                                                                ColData = ORReportData17323.SubtotalRow.ColDataList.GetAt(i17325)
                                                                        Next i17325
                                                                End If
                                                        End If
                                                End If
                                                if (not ORReportData17323.TotalRow is nothing) then
                                                        if (not ORReportData17323.TotalRow. is nothing) then
                                                                if (not ORReportData17323.TotalRow.RowData. is nothing) then
                                                                End If
                                                                if (not ORReportData17323.TotalRow.ColDataList is nothing)
                                                                        Dim i17326 as Integer
                                                                        for i17326 = 0  to ORReportData17323.TotalRow.ColDataList.Count - 1
                                                                                Dim ColData as IColData
                                                                                ColData = ORReportData17323.TotalRow.ColDataList.GetAt(i17326)
                                                                        Next i17326
                                                                End If
                                                        End If
                                                End If
                                        Next i17322
                                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
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
//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  DoPayrollSummaryReportQuery()
                {
                        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;

                                BuildPayrollSummaryReportQueryRq(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;

                                WalkPayrollSummaryReportQueryRs(responseMsgSet);
                        }
                        catch (Exception e)
                        {
                                MessageBox.Show(e.Message, "Error");
                                if (sessionBegun)
                                {
                                        sessionManager.EndSession();
                                }
                                if (connectionOpen)
                                {
                                        sessionManager.CloseConnection();
                                }
                        }
                }
                void BuildPayrollSummaryReportQueryRq(IMsgSetRequest requestMsgSet)
                {
                        IPayrollSummaryReportQuery PayrollSummaryReportQueryRq= requestMsgSet.AppendPayrollSummaryReportQueryRq();
                        //Set field value for PayrollSummaryReportType
                        PayrollSummaryReportQueryRq.PayrollSummaryReportType.SetValue(ENPayrollSummaryReportType.psrtEmployeeEarningsSummary);
                        //Set field value for DisplayReport
                        PayrollSummaryReportQueryRq.DisplayReport.SetValue(true);
                        string ORReportPeriodElementType17287 = "ReportPeriod";
                        if (ORReportPeriodElementType17287 == "ReportPeriod")
                        {
                                //Set field value for FromReportDate
                                PayrollSummaryReportQueryRq.ORReportPeriod.ReportPeriod.FromReportDate.SetValue(DateTime.Parse("12/15/2007"));
                                //Set field value for ToReportDate
                                PayrollSummaryReportQueryRq.ORReportPeriod.ReportPeriod.ToReportDate.SetValue(DateTime.Parse("12/15/2007"));
                        }
                        if (ORReportPeriodElementType17287 == "ReportDateMacro")
                        {
                                //Set field value for ReportDateMacro
                                PayrollSummaryReportQueryRq.ORReportPeriod.ReportDateMacro.SetValue(ENReportDateMacro.rdmAll);
                        }
                        string ORReportAccountFilterElementType17288 = "AccountTypeFilter";
                        if (ORReportAccountFilterElementType17288 == "AccountTypeFilter")
                        {
                                //Set field value for AccountTypeFilter
                                PayrollSummaryReportQueryRq.ReportAccountFilter.ORReportAccountFilter.AccountTypeFilter.SetValue(ENAccountTypeFilter.atfAccountsPayable);
                        }
                        if (ORReportAccountFilterElementType17288 == "ListIDList")
                        {
                                //Set field value for ListIDList
                                //May create more than one of these if needed
                                PayrollSummaryReportQueryRq.ReportAccountFilter.ORReportAccountFilter.ListIDList.Add("200000-1011023419");
                        }
                        if (ORReportAccountFilterElementType17288 == "FullNameList")
                        {
                                //Set field value for FullNameList
                                //May create more than one of these if needed
                                PayrollSummaryReportQueryRq.ReportAccountFilter.ORReportAccountFilter.FullNameList.Add("ab");
                        }
                        if (ORReportAccountFilterElementType17288 == "ListIDWithChildren")
                        {
                                //Set field value for ListIDWithChildren
                                PayrollSummaryReportQueryRq.ReportAccountFilter.ORReportAccountFilter.ListIDWithChildren.SetValue("200000-1011023419");
                        }
                        if (ORReportAccountFilterElementType17288 == "FullNameWithChildren")
                        {
                                //Set field value for FullNameWithChildren
                                PayrollSummaryReportQueryRq.ReportAccountFilter.ORReportAccountFilter.FullNameWithChildren.SetValue("ab");
                        }
                        string ORReportEntityFilterElementType17289 = "EntityTypeFilter";
                        if (ORReportEntityFilterElementType17289 == "EntityTypeFilter")
                        {
                                //Set field value for EntityTypeFilter
                                PayrollSummaryReportQueryRq.ReportEntityFilter.ORReportEntityFilter.EntityTypeFilter.SetValue(ENEntityTypeFilter.etfCustomer);
                        }
                        if (ORReportEntityFilterElementType17289 == "ListIDList")
                        {
                                //Set field value for ListIDList
                                //May create more than one of these if needed
                                PayrollSummaryReportQueryRq.ReportEntityFilter.ORReportEntityFilter.ListIDList.Add("200000-1011023419");
                        }
                        if (ORReportEntityFilterElementType17289 == "FullNameList")
                        {
                                //Set field value for FullNameList
                                //May create more than one of these if needed
                                PayrollSummaryReportQueryRq.ReportEntityFilter.ORReportEntityFilter.FullNameList.Add("ab");
                        }
                        if (ORReportEntityFilterElementType17289 == "ListIDWithChildren")
                        {
                                //Set field value for ListIDWithChildren
                                PayrollSummaryReportQueryRq.ReportEntityFilter.ORReportEntityFilter.ListIDWithChildren.SetValue("200000-1011023419");
                        }
                        if (ORReportEntityFilterElementType17289 == "FullNameWithChildren")
                        {
                                //Set field value for FullNameWithChildren
                                PayrollSummaryReportQueryRq.ReportEntityFilter.ORReportEntityFilter.FullNameWithChildren.SetValue("ab");
                        }
                        string ORReportItemFilterElementType17290 = "ItemTypeFilter";
                        if (ORReportItemFilterElementType17290 == "ItemTypeFilter")
                        {
                                //Set field value for ItemTypeFilter
                                PayrollSummaryReportQueryRq.ReportItemFilter.ORReportItemFilter.ItemTypeFilter.SetValue(ENItemTypeFilter.itfAllExceptFixedAsset);
                        }
                        if (ORReportItemFilterElementType17290 == "ListIDList")
                        {
                                //Set field value for ListIDList
                                //May create more than one of these if needed
                                PayrollSummaryReportQueryRq.ReportItemFilter.ORReportItemFilter.ListIDList.Add("200000-1011023419");
                        }
                        if (ORReportItemFilterElementType17290 == "FullNameList")
                        {
                                //Set field value for FullNameList
                                //May create more than one of these if needed
                                PayrollSummaryReportQueryRq.ReportItemFilter.ORReportItemFilter.FullNameList.Add("ab");
                        }
                        if (ORReportItemFilterElementType17290 == "ListIDWithChildren")
                        {
                                //Set field value for ListIDWithChildren
                                PayrollSummaryReportQueryRq.ReportItemFilter.ORReportItemFilter.ListIDWithChildren.SetValue("200000-1011023419");
                        }
                        if (ORReportItemFilterElementType17290 == "FullNameWithChildren")
                        {
                                //Set field value for FullNameWithChildren
                                PayrollSummaryReportQueryRq.ReportItemFilter.ORReportItemFilter.FullNameWithChildren.SetValue("ab");
                        }
                        string ORReportClassFilterElementType17291 = "ListIDList";
                        if (ORReportClassFilterElementType17291 == "ListIDList")
                        {
                                //Set field value for ListIDList
                                //May create more than one of these if needed
                                PayrollSummaryReportQueryRq.ReportClassFilter.ORReportClassFilter.ListIDList.Add("200000-1011023419");
                        }
                        if (ORReportClassFilterElementType17291 == "FullNameList")
                        {
                                //Set field value for FullNameList
                                //May create more than one of these if needed
                                PayrollSummaryReportQueryRq.ReportClassFilter.ORReportClassFilter.FullNameList.Add("ab");
                        }
                        if (ORReportClassFilterElementType17291 == "ListIDWithChildren")
                        {
                                //Set field value for ListIDWithChildren
                                PayrollSummaryReportQueryRq.ReportClassFilter.ORReportClassFilter.ListIDWithChildren.SetValue("200000-1011023419");
                        }
                        if (ORReportClassFilterElementType17291 == "FullNameWithChildren")
                        {
                                //Set field value for FullNameWithChildren
                                PayrollSummaryReportQueryRq.ReportClassFilter.ORReportClassFilter.FullNameWithChildren.SetValue("ab");
                        }
                        string ORReportModifiedDateElementType17292 = "ReportModifiedDateRangeFilter";
                        if (ORReportModifiedDateElementType17292 == "ReportModifiedDateRangeFilter")
                        {
                                //Set field value for FromReportModifiedDate
                                PayrollSummaryReportQueryRq.ORReportModifiedDate.ReportModifiedDateRangeFilter.FromReportModifiedDate.SetValue(DateTime.Parse("12/15/2007"));
                                //Set field value for ToReportModifiedDate
                                PayrollSummaryReportQueryRq.ORReportModifiedDate.ReportModifiedDateRangeFilter.ToReportModifiedDate.SetValue(DateTime.Parse("12/15/2007"));
                        }
                        if (ORReportModifiedDateElementType17292 == "ReportModifiedDateRangeMacro")
                        {
                                //Set field value for ReportModifiedDateRangeMacro
                                PayrollSummaryReportQueryRq.ORReportModifiedDate.ReportModifiedDateRangeMacro.SetValue(ENReportModifiedDateRangeMacro.rmdrmAll);
                        }
                        //Set field value for ReportDetailLevelFilter
                        PayrollSummaryReportQueryRq.ReportDetailLevelFilter.SetValue(ENReportDetailLevelFilter.rdlfAll [DEFAULT]);
                        //Set field value for ReportPostingStatusFilter
                        PayrollSummaryReportQueryRq.ReportPostingStatusFilter.SetValue(ENReportPostingStatusFilter.rpsfEither);
                        //Set field value for SummarizeColumnsBy
                        PayrollSummaryReportQueryRq.SummarizeColumnsBy.SetValue(ENSummarizeColumnsBy.scbAccount);
                        //Set field value for IncludeSubcolumns
                        PayrollSummaryReportQueryRq.IncludeSubcolumns.SetValue(true);
                        //Set field value for ReportCalendar
                        PayrollSummaryReportQueryRq.ReportCalendar.SetValue(ENReportCalendar.rcCalendarYear);
                        //Set field value for ReturnRows
                        PayrollSummaryReportQueryRq.ReturnRows.SetValue(ENReturnRows.rrActiveOnly);
                        //Set field value for ReturnColumns
                        PayrollSummaryReportQueryRq.ReturnColumns.SetValue(ENReturnColumns.rcActiveOnly);
                }




                void WalkPayrollSummaryReportQueryRs(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.rtPayrollSummaryReportQueryRs)
                                                {
                                                        //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 ReportTitle17293 = (string)ReportRet.ReportTitle.GetValue();
                        //Get value of ReportSubtitle
                        string ReportSubtitle17294 = (string)ReportRet.ReportSubtitle.GetValue();
                        //Get value of ReportBasis
                        if (ReportRet.ReportBasis != null)
                        {
                                ENReportBasis ReportBasis17295 = (ENReportBasis)ReportRet.ReportBasis.GetValue();
                        }
                        //Get value of NumRows
                        int NumRows17296 = (int)ReportRet.NumRows.GetValue();
                        //Get value of NumColumns
                        int NumColumns17297 = (int)ReportRet.NumColumns.GetValue();
                        //Get value of NumColTitleRows
                        int NumColTitleRows17298 = (int)ReportRet.NumColTitleRows.GetValue();
                        if (ReportRet.ColDescList != null)
                        {
                                for (int i17299 = 0; i17299 < ReportRet.ColDescList.Count; i17299++)
                                {
                                        IColDesc ColDesc = ReportRet.ColDescList.GetAt(i17299);
                                        if (ColDesc.ColTitleList != null)
                                        {
                                                for (int i17300 = 0; i17300 < ColDesc.ColTitleList.Count; i17300++)
                                                {
                                                        IColTitle ColTitle = ColDesc.ColTitleList.GetAt(i17300);
                                                }
                                        }
                                        //Get value of ColType
                                        ENColType ColType17301 = (ENColType)ColDesc.ColType.GetValue();
                                }
                        }
                        if (ReportRet.ReportData != null)
                        {
                                if (ReportRet.ReportData.ORReportDataList != null)
                                {
                                        for (int i17302 = 0; i17302 < ReportRet.ReportData.ORReportDataList.Count; i17302++)
                                        {
                                                IORReportData ORReportData17303 = ReportRet.ReportData.ORReportDataList.GetAt(i17302);
                                                if (ORReportData17303.DataRow != null)
                                                {
                                                        if (ORReportData17303.DataRow != null)
                                                        {
                                                                if (ORReportData17303.DataRow.RowData != null)
                                                                {
                                                                }
                                                                if (ORReportData17303.DataRow.ColDataList != null)
                                                                {
                                                                        for (int i17304 = 0; i17304 < ORReportData17303.DataRow.ColDataList.Count; i17304++)
                                                                        {
                                                                                IColData ColData = ORReportData17303.DataRow.ColDataList.GetAt(i17304);
                                                                        }
                                                                }
                                                        }
                                                }
                                                if (ORReportData17303.TextRow != null)
                                                {
                                                        if (ORReportData17303.TextRow != null)
                                                        {
                                                        }
                                                }
                                                if (ORReportData17303.SubtotalRow != null)
                                                {
                                                        if (ORReportData17303.SubtotalRow != null)
                                                        {
                                                                if (ORReportData17303.SubtotalRow.RowData != null)
                                                                {
                                                                }
                                                                if (ORReportData17303.SubtotalRow.ColDataList != null)
                                                                {
                                                                        for (int i17305 = 0; i17305 < ORReportData17303.SubtotalRow.ColDataList.Count; i17305++)
                                                                        {
                                                                                IColData ColData = ORReportData17303.SubtotalRow.ColDataList.GetAt(i17305);
                                                                        }
                                                                }
                                                        }
                                                }
                                                if (ORReportData17303.TotalRow != null)
                                                {
                                                        if (ORReportData17303.TotalRow != null)
                                                        {
                                                                if (ORReportData17303.TotalRow.RowData != null)
                                                                {
                                                                }
                                                                if (ORReportData17303.TotalRow.ColDataList != null)
                                                                {
                                                                        for (int i17306 = 0; i17306 < ORReportData17303.TotalRow.ColDataList.Count; i17306++)
                                                                        {
                                                                                IColData ColData = ORReportData17303.TotalRow.ColDataList.GetAt(i17306);
                                                                        }
                                                                }
                                                        }
                                                }
                                        }
                                }
                        }
                }




        }
}