SalesOrderAdd

Adds a customer order to the QBPOS company. A customer order can be one of three types: SalesOrder, layaway and work order. SalesOrder is used to order out-of-stock merchandise. Work orders are quotes for services. Layaways are “purchases” of in-stock items, paid for via a series of deposits over time. To specify which type of customer order you want to create, use the SalesOrderType field. Notice that items listed on SalesOrders are not deducted from inventory. This occurs only at fulfillment at which time the items are recorded on a sales receipt, which reduces inventory in QBPOS accordingly. All the items on a SalesOrder may be fulfilled at one time, or partially fulfilled.


Request

Response

XMLOPS

VB.NET

C#

Tag Type Max length Implementation Required

ISalesOrderAdd

Adds a customer order to the QBPOS company. A customer order can be one of three types: SalesOrder, layaway and work order. SalesOrder is used to order out-of-stock merchandise. Work orders are quotes for services. Layaways are “purchases” of in-stock items, paid for via a series of deposits over time. To specify which type of customer order you want to create, use the SalesOrderType field. Notice that items listed on SalesOrders are not deducted from inventory. This occurs only at fulfillment at which time the items are recorded on a sales receipt, which reduces inventory in QBPOS accordingly. All the items on a SalesOrder may be fulfilled at one time, or partially fulfilled.
       

defMacro

You use a macro in a request message set if you need to create some object in one request, then refer to it in a subsequent request within that same message set. For example, you could create an inventory item and then include that item as a line item in a sales order all in one request message set, rather than create the item, query for it, then include it in a separate SalesOrderAdd request. In this latter case, you are accessing QBPOS three times, versus only once, using macros. The item to be referenced is specified via the defmacro. The actual reference to that item in the succeeding request is done via the use macro, as follows: ItemInventoryAdd defMacro=”ListID:Inv1” In the above line, you simply replace Inv1 with the name you want to give the macro. When you reference this macro in another request (one that requires that object’s listID) in the same message set, you use this syntax: ListID useMacro=”ListID:Inv1” This is covered in more detail in the Programming Guide.
IQBStringType   2.0  

Associate

The employee making the adjustment transaction.
IQBStringType 40 chars    

Cashier

Name of the employee taking the sales order. Notice that this value is auto-filled with the logged-in employee name if logins are required.
IQBStringType 16 chars    

CustomerListID

Unique QBPOS ID value identifying the customer being referenced.
IQBIDType     Y

useMacro

You use a macro in a request message set if you need to create some object in one request, then refer to it in a subsequent request within that same message set. For example, you could create an inventory item and then include that item as a line item in a sales order all in one request message set, rather than create the item, query for it, then include it in a separate SalesOrderAdd request. In this latter case, you are accessing QBPOS three times, versus only once, using macros. The item to be referenced is specified via the defmacro. The actual reference to that item in the succeeding request is done via the use macro, as follows: ItemInventoryAdd defMacro=”ListID:Inv1” In the above line, you simply replace Inv1 with the name you want to give the macro. When you reference this macro in another request (one that requires that object’s listID) in the same message set, you use this syntax: ListID useMacro=”ListID:Inv1” This is covered in more detail in the Programming Guide.
IQBStringType   2.0  

Discount

Discount amount: Enter the amount of any discount applicable to the PO. Discounts are applied to the PO subtotal. Entering an amount causes the Disc % field to be automatically calculated.
IQBAmountType      

DiscountPercent

Enter a percentage discount applicable to the PO. Discounts are applied to the PO subtotal. Entering a discount percentage causes the Disc $ field to be automatically calculated.
IQBFloatType      

Instructions

You can use this optional field to provide instructions to the vendor regarding the order. You can add up to two lines of text. This text prints on PurchaseOrders, but are not displayed on-screen.
IQBStringType 2000 chars    

PriceLevelNumber

If you are giving a price level discount to this customer, rather than discount percent, you need to specify which of the four supported levels you want to apply.
IQBENPriceLevelNumberType      

PromoCode

This field is used to record a miscellaneous note on a SalesOrder, normally identifying a special sale. An entry in this field may be required depending on settings in the company preferences.
IQBStringType 10 chars    

SalesOrderNumber

This is a unique number automatically assigned to the SalesOrder at creation time by QBPOS. If a SalesOrder was used to generate a PurchaseOrder, the SalesOrderNumber is returned in the PurchaseOrder Ret object.
IQBStringType 32 chars 3.0  

SalesOrderStatusDesc

Current status of the order: OPEN, CLOSED, or a custom status you have defined in the company preferences. Used to track and filter the progression of orders for viewing and reporting.
IQBStringType      

SalesOrderType

Available for Pro and greater versions of QBPOS. The type of the customer order document: Sales orders, which are customer orders of out-of-stock merchandise Work orders, which are quotes for services Layaways, which are sales of in-stock items, but paid for via a series of deposits prior to customer receiving the items.
IQBENSalesOrderTypeType      

TaxCategory

In the QBPOS UI, you specify sales tax behavior by creating sales tax locations and tax codes. (What the QBPOS UI calls a “tax location” is what the SDK calls a “tax category”.) The tax code and its name is shared between all tax categories (locations): that is, all tax categories will have the same set of tax codes. However, the actual tax rate(s) that are used in a given tax code can vary from one tax category to the next. The tax code rates that are actually applied at transaction time are those that are in the tax category that is currently specified as the default tax category (location) in sales tax preferences. You create and modify tax categories and tax codes using the TaxCategoryAdd/Mod and TaxCodeAdd/Mod requests respectively. You assign tax code rates to a tax code within a tax category using the TaxRecordMod request. You query for the tax preference information (tax rate information for each tax code under each tax category) using the CompanyQuery. However, currently the default tax category (location) can be specified only within the QBPOS UI. When you create or modify an inventory item in QBPOS, you apply a tax code to it, but not a tax category. At sales transaction time, the actual sales tax is calculated for each item, based on the tax code assigned to that item and the tax code rate(s) for that tax code under the tax category currently specified as the default tax category (location).
IQBStringType 20 chars    

TxnDate

The date of the transaction. In some cases, if you leave TxnDate out of an -Add message, QuickBooks will prefill TxnDate with the date of the last-saved transaction of the same type.
IQBDateType      

ShippingInformation

Indicates destination address and shipping method to be used to deliver the ordered merchandise.
IShippingInformation      

AddressName

Name of the ship adddress.
IQBStringType 32 chars 2.5  

City

The city name in the address.
IQBStringType 31 chars    

CompanyName

The name of the business.
IQBStringType 41 chars    

Country

The country of residence of this employee.
IQBStringType 32 chars 1.1  

FullName

Full name of the entity, for example customer or vendor fullname.
IQBStringType      

Phone

Primary Telephone number of this person or entity.
IQBStringType 40 chars    

Phone2

Alternate phone number or fax number for this person or entity. This maps to Phone 2 in the QBPOS UI.
IQBStringType 40 chars    

Phone3

Alternate phone number or fax number for this person or entity. This maps to Alt. Phone in the QBPOS UI.
IQBStringType 40 chars 1.1  

Phone4

Alternate phone number, fax number, or other contact information for this person or entity. This maps to Alt. Contact in the QBPOS UI.
IQBStringType 40 chars 1.1  

PostalCode

The postal code used in the address.
IQBStringType 10 chars    

ShipBy

The shipping method used to send merchandise to a customer.
IQBStringType 50 chars    

Shipping

Indicates the amount to be paid for shipping.
IQBAmountType      

State

The state name in the address.
IQBStringType 21 chars    

Street

Street Address of the vendor, customer, or other addressee.
IQBStringType 41 chars    

Street2

Street Address of the vendor, customer, or other addressee.
IQBStringType 41 chars 3.0  

SalesOrderItemAddList

The list of line items in the sales order.
ISalesOrderItemAddList      

(List of ISalesOrderItemAdd Objects)

       

ListID

The unique ID returned by QBPOS for this object. If supplied in a request, the ListID is a reference to an object required in the request. For example, in a SalesOrder or PurchaseOrder line item, the ListID that is required is an Item list ID.
IQBIDType     Y

useMacro

You use a macro in a request message set if you need to create some object in one request, then refer to it in a subsequent request within that same message set. For example, you could create an inventory item and then include that item as a line item in a sales order all in one request message set, rather than create the item, query for it, then include it in a separate SalesOrderAdd request. In this latter case, you are accessing QBPOS three times, versus only once, using macros. The item to be referenced is specified via the defmacro. The actual reference to that item in the succeeding request is done via the use macro, as follows: ItemInventoryAdd defMacro=”ListID:Inv1” In the above line, you simply replace Inv1 with the name you want to give the macro. When you reference this macro in another request (one that requires that object’s listID) in the same message set, you use this syntax: ListID useMacro=”ListID:Inv1” This is covered in more detail in the Programming Guide.
IQBStringType   2.0  

ALU

Alternate Lookup. A user-defined identifier to be used to look up an item. Typically, this field contains such as the manufacturer’s part number, but it can contain any text descriptions, catalog numbers, etc. Duplicate Alternate Lookups are not allowed. Do not duplicate the Item # or UPC in this field. This will adversely affect performance for item lookups.
IQBStringType 20 chars    

Associate

The employee making the adjustment transaction.
IQBStringType 40 chars    

Attribute

A field used to describe an item characteristic, typically color, pattern, material, or a second size. One to eight characters.
IQBStringType 12 chars    

Commission

The commission amount for the item, based on the item price and the Associates commission percent, if item eligible for commissions.
IQBAmountType      

Desc1

The principal item description field. This description is printed on receipts. For some versions of QBPOS, (Pro), this must be the same for all members of a style. Changes to this field can be applied to an item or to an entire style.
IQBStringType 30 chars    

Desc2

Secondary description field usually used for any additional information to describe this particular item, such as a vendor’s catalog number. Also can be used for additional information at the point of sale.
IQBStringType      

Discount

Discount amount: Enter the amount of any discount applicable to the PO. Discounts are applied to the PO subtotal. Entering an amount causes the Disc % field to be automatically calculated.
IQBAmountType      

DiscountPercent

Enter a percentage discount applicable to the PO. Discounts are applied to the PO subtotal. Entering a discount percentage causes the Disc $ field to be automatically calculated.
IQBFloatType      

DiscountType

Allows you to specify the reason for an item discount. Discount types can be customized in company preferences and used to filter reports.
IQBStringType 32 chars    

ExtendedPrice

The extended price of a line item, which is item Quantity X item Price.
IQBAmountType      

Price

The purchase price or sales price of this item.
IQBAmountType      

Qty

The quantity of the line item being ordered or transferred.
IQBQuanType      

SerialNumber

Item serial numbers can be recorded in QBPOS for purposes of warranty tracking or meeting legal requirements. Once recorded, former documents can be quickly located by searching by serial number. To use serial number tracking: 1. In inventory, specify those items for which you want to record serial numbers by selecting PROMPT in the Serial # Tracking field. 2. When listing these items on documents (except purchase orders and cost memos), the QBPOS user is prompted to enter a unique serial number for each unit being processed. If listing several items on a document for which you have set the serial number requirement, the user is prompted to enter serial numbers for each unit of each of those items in sequence.
IQBStringType 25 chars    

Size

The size of an item; 1 to 8 characters. This field can also be used to describe a second item attribute other than size if desired.
IQBStringType 12 chars    

TaxCode

In the QBPOS UI, you specify sales tax behavior by creating sales tax locations and tax codes. (What the QBPOS UI calls a “tax location” is what the SDK calls a “tax category”.) The tax code and its name is shared between all tax categories (locations): that is, all tax categories will have the same set of tax codes. However, the actual tax rate(s) that are used in a given tax code can vary from one tax category to the next. The tax code rates that are actually applied at transaction time are those that are in the tax category that is currently specified as the default tax category (location) in sales tax preferences. You create and modify tax categories and tax codes using the TaxCategoryAdd/Mod and TaxCodeAdd/Mod requests respectively. You assign tax code rates to a tax code within a tax category using the TaxRecordMod request. You query for the tax preference information (tax rate information for each tax code under each tax category) using the CompanyQuery. However, currently the default tax category (location) can be specified only within the QBPOS UI. When you create or modify an inventory item in QBPOS, you apply a tax code to it, but not a tax category. At sales transaction time, the actual sales tax is calculated for each item, based on the tax code assigned to that item and the tax code rate(s) for that tax code under the tax category currently specified as the default tax category (location).
IQBStringType      

UnitOfMeasure

If the company is using only a single unit of measure, this specifies the unit of measure for the item. If the company is using multiple units of measure, this specifies the base unit of measure for the item. Inventory quantities are tracked and reported in terms of this base unit.
IQBStringType 20 chars 2.0  

UPC

Universal Product Code. The item’s unique UPC/EAN/ISBN identifier. This field must be 13 characters. If a shorter number is entered, QBPOS uses an appropriate algorithm to lengthen the entry to fill the 13-character field.
IQBStringType 18 chars    

IncludeRetElementList

You can use the IncludeRetElement feature to restrict the data returned in the response to the specified qbposXML field here. If you do this, only those elements specified will be returned. To use this feature, you simply add the qbposXML element name to the IncludeRetElementList. The following example shows how to do this, specifying that only the CreatedBy and ClockOutTime elements are to be returned in the TimeEntryAdd response: Dim MyTimeEntry As ITimeEntryAdd Set MyTimeEntry = requestMsgSet.AppendTimeEntryAddRq MyTimeEntry.IncludeRetElementList.Add “CreatedBy” MyTimeEntry.IncludeRetElementList.Add “ClockOutTime” ‘ set the other properties as desired…
IBSTRList 50 chars 2.0  
Tag Type Max length Implementation Required

IResponse

Adds a customer order to the QBPOS company. A customer order can be one of three types: SalesOrder, layaway and work order. SalesOrder is used to order out-of-stock merchandise. Work orders are quotes for services. Layaways are “purchases” of in-stock items, paid for via a series of deposits over time. To specify which type of customer order you want to create, use the SalesOrderType field. Notice that items listed on SalesOrders are not deducted from inventory. This occurs only at fulfillment at which time the items are recorded on a sales receipt, which reduces inventory in QBPOS accordingly. All the items on a SalesOrder may be fulfilled at one time, or partially fulfilled.
       

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

ISalesOrderRet      

TxnID

QuickBooks generates a unique TxnID for each transaction that is added to QuickBooks. A TxnID returned from a request can be used to refer to the transaction in subsequent requests. Notice that you cannot supply the TxnID of a TimeTracking transaction to TransactionQueryRq requests. If you do, you get an error stating that no such record could be found, even though the transaction is in QuickBooks. This behavior reflects the behavior in the QuicKBooks UI in the Find window.
IQBIDType      

TimeCreated

The timestamp indicating the time when this object was created in QBPOS.
IQBDateTimeType   1.1  

TimeModified

The time when the object was modified by QBPOS.
IQBDateTimeType      

Associate

The employee making the adjustment transaction.
IQBStringType 40 chars    

BalanceDue

The balance remaining on the order. Balance Due = (Total – Deposit Balance)
IQBAmountType      

Cashier

Name of the employee taking the sales order. Notice that this value is auto-filled with the logged-in employee name if logins are required.
IQBStringType 16 chars    

CustomerListID

Unique QBPOS ID value identifying the customer being referenced.
IQBIDType      

DepositBalance

The sum of all deposits received, less any deposits already used.
IQBAmountType      

Discount

Discount amount: Enter the amount of any discount applicable to the PO. Discounts are applied to the PO subtotal. Entering an amount causes the Disc % field to be automatically calculated.
IQBAmountType      

DiscountPercent

Enter a percentage discount applicable to the PO. Discounts are applied to the PO subtotal. Entering a discount percentage causes the Disc $ field to be automatically calculated.
IQBFloatType      

Instructions

You can use this optional field to provide instructions to the vendor regarding the order. You can add up to two lines of text. This text prints on PurchaseOrders, but are not displayed on-screen.
IQBStringType 2000 chars    

ItemsCount

The number of line items in the adjustment add request that added the adjustment to QBPOS.
IQBIntType      

PriceLevelNumber

If you are giving a price level discount to this customer, rather than discount percent, you need to specify which of the four supported levels you want to apply.
IQBENPriceLevelNumberType      

PromoCode

This field is used to record a miscellaneous note on a SalesOrder, normally identifying a special sale. An entry in this field may be required depending on settings in the company preferences.
IQBStringType 10 chars    

Qty

The quantity of the line item being ordered or transferred.
IQBQuanType      

SalesOrderNumber

This is a unique number automatically assigned to the SalesOrder at creation time by QBPOS. If a SalesOrder was used to generate a PurchaseOrder, the SalesOrderNumber is returned in the PurchaseOrder Ret object.
IQBStringType 32 chars    

SalesOrderStatusDesc

Current status of the order: OPEN, CLOSED, or a custom status you have defined in the company preferences. Used to track and filter the progression of orders for viewing and reporting.
IQBStringType      

SalesOrderType

Available for Pro and greater versions of QBPOS. The type of the customer order document: Sales orders, which are customer orders of out-of-stock merchandise Work orders, which are quotes for services Layaways, which are sales of in-stock items, but paid for via a series of deposits prior to customer receiving the items.
IQBENSalesOrderTypeType      

StoreExchangeStatus

In multi store configurations, if the customer’s information has changed, this information is updated at the headquarters store. This response field indicates whether the information was successfully updated or not.
IQBENStoreExchangeStatusType      

Subtotal

The total cost (sum of extended item costs) of the PO before applying any discounts or fees. This value is updated when a voucher that references the PO is updated.
IQBAmountType      

TaxAmount

By default, a tax code is assigned to individual items, and the tax is calculated when the sale is made. The tax that is actually assessed depends on the tax location (tax category) that is in effect. Notice that the tax amount is returned in the response to a non-held SalesReceiptAdd request: you do not specify or set this tax amount. To change the tax, you have to set up tax category in company preferences that has the tax rate that you need. If you don’t want any taxes to be applied, for example, the sale is to a government agency or some other tax exempt entity, specify the value “Exempt” for the TaxCategory when you build your SalesReceiptAdd request.
IQBAmountType      

TaxCategory

In the QBPOS UI, you specify sales tax behavior by creating sales tax locations and tax codes. (What the QBPOS UI calls a “tax location” is what the SDK calls a “tax category”.) The tax code and its name is shared between all tax categories (locations): that is, all tax categories will have the same set of tax codes. However, the actual tax rate(s) that are used in a given tax code can vary from one tax category to the next. The tax code rates that are actually applied at transaction time are those that are in the tax category that is currently specified as the default tax category (location) in sales tax preferences. You create and modify tax categories and tax codes using the TaxCategoryAdd/Mod and TaxCodeAdd/Mod requests respectively. You assign tax code rates to a tax code within a tax category using the TaxRecordMod request. You query for the tax preference information (tax rate information for each tax code under each tax category) using the CompanyQuery. However, currently the default tax category (location) can be specified only within the QBPOS UI. When you create or modify an inventory item in QBPOS, you apply a tax code to it, but not a tax category. At sales transaction time, the actual sales tax is calculated for each item, based on the tax code assigned to that item and the tax code rate(s) for that tax code under the tax category currently specified as the default tax category (location).
IQBStringType 20 chars    

TaxPercentage

You can specify either a tax amount or a tax percentage, but not both. The other value and the document total tax amounts will be recomputed to reflect the value you specify. Note that the Tax % field in the receipt totals area is disabled if multiple tax rates apply to sold items.
IQBFloatType      

Total

The total PO amount after discounts and fees are applied.Total = Subtotal - Disc $ + Fee This value is updated when a voucher that references the PO is updated.
IQBAmountType      

TxnDate

The date of the transaction. In some cases, if you leave TxnDate out of an -Add message, QuickBooks will prefill TxnDate with the date of the last-saved transaction of the same type.
IQBDateType      

UnfilledPercent

The percentage of the total PO quantity that has not yet been received. This value is updated when a voucher that references the PO is updated.
IQBFloatType      

BillingInformation

As in the QBPOS UI, this information is supplied to the SalesOrder form automatically when a customer is selected from the customer list. However, if the customer has a new address or if the customer does not yet exist in QBPOS, the required information can be supplied in these data fields.
IBillingInformation      

City

The city name in the address.
IQBStringType 31 chars    

CompanyName

The name of the business.
IQBStringType 41 chars    

Country

The country of residence of this employee.
IQBStringType 32 chars 1.1  

FirstName

The first name.
IQBStringType 30 chars    

LastName

The last name.
IQBStringType 30 chars    

Phone

Primary Telephone number of this person or entity.
IQBStringType 40 chars    

Phone2

Alternate phone number or fax number for this person or entity. This maps to Phone 2 in the QBPOS UI.
IQBStringType 40 chars    

Phone3

Alternate phone number or fax number for this person or entity. This maps to Alt. Phone in the QBPOS UI.
IQBStringType 40 chars 1.1  

Phone4

Alternate phone number, fax number, or other contact information for this person or entity. This maps to Alt. Contact in the QBPOS UI.
IQBStringType 40 chars 1.1  

PostalCode

The postal code used in the address.
IQBStringType 10 chars    

Salutation

A formal reference, such as Mr. or Dr., that precedes a name.
IQBStringType 15 chars    

State

The state name in the address.
IQBStringType 21 chars    

Street

Street Address of the vendor, customer, or other addressee.
IQBStringType 41 chars    

Street2

Street Address of the vendor, customer, or other addressee.
IQBStringType 41 chars 3.0  

WebNumber

Number used on a web site.
IQBStringType 32 chars 3.0  

ShippingInformation

Indicates destination address and shipping method to be used to deliver the ordered merchandise.
IShippingInformation      

AddressName

Name of the ship adddress.
IQBStringType 32 chars 2.5  

City

The city name in the address.
IQBStringType 31 chars    

CompanyName

The name of the business.
IQBStringType 41 chars    

Country

The country of residence of this employee.
IQBStringType 32 chars 1.1  

FullName

Full name of the entity, for example customer or vendor fullname.
IQBStringType      

Phone

Primary Telephone number of this person or entity.
IQBStringType 40 chars    

Phone2

Alternate phone number or fax number for this person or entity. This maps to Phone 2 in the QBPOS UI.
IQBStringType 40 chars    

Phone3

Alternate phone number or fax number for this person or entity. This maps to Alt. Phone in the QBPOS UI.
IQBStringType 40 chars 1.1  

Phone4

Alternate phone number, fax number, or other contact information for this person or entity. This maps to Alt. Contact in the QBPOS UI.
IQBStringType 40 chars 1.1  

PostalCode

The postal code used in the address.
IQBStringType 10 chars    

ShipBy

The shipping method used to send merchandise to a customer.
IQBStringType 50 chars    

Shipping

Indicates the amount to be paid for shipping.
IQBAmountType      

State

The state name in the address.
IQBStringType 21 chars    

Street

Street Address of the vendor, customer, or other addressee.
IQBStringType 41 chars    

Street2

Street Address of the vendor, customer, or other addressee.
IQBStringType 41 chars 3.0  

SalesOrderItemRetList

The list of line items in the sales order.
ISalesOrderItemRetList      

(List of ISalesOrderItemRet Objects)

       

ListID

The unique ID returned by QBPOS for this object. If supplied in a request, the ListID is a reference to an object required in the request. For example, in a SalesOrder or PurchaseOrder line item, the ListID that is required is an Item list ID.
IQBIDType      

TxnLineID

Identification number of the transaction line. (TxnLineID is supported as of v2.0 of the SDK. With qbXML v1.0 and v1.1, TxnLineID is always returned as zero.) If you need to add a new transaction line in a transaction Mod request, you can do so by setting the TxnLineID to -1.
IQBIntType      

ALU

Alternate Lookup. A user-defined identifier to be used to look up an item. Typically, this field contains such as the manufacturer’s part number, but it can contain any text descriptions, catalog numbers, etc. Duplicate Alternate Lookups are not allowed. Do not duplicate the Item # or UPC in this field. This will adversely affect performance for item lookups.
IQBStringType 20 chars    

Associate

The employee making the adjustment transaction.
IQBStringType 40 chars    

Attribute

A field used to describe an item characteristic, typically color, pattern, material, or a second size. One to eight characters.
IQBStringType 12 chars    

Commission

The commission amount for the item, based on the item price and the Associates commission percent, if item eligible for commissions.
IQBAmountType      

Desc1

The principal item description field. This description is printed on receipts. For some versions of QBPOS, (Pro), this must be the same for all members of a style. Changes to this field can be applied to an item or to an entire style.
IQBStringType 30 chars    

Desc2

Secondary description field usually used for any additional information to describe this particular item, such as a vendor’s catalog number. Also can be used for additional information at the point of sale.
IQBStringType      

Discount

Discount amount: Enter the amount of any discount applicable to the PO. Discounts are applied to the PO subtotal. Entering an amount causes the Disc % field to be automatically calculated.
IQBAmountType      

DiscountPercent

Enter a percentage discount applicable to the PO. Discounts are applied to the PO subtotal. Entering a discount percentage causes the Disc $ field to be automatically calculated.
IQBFloatType      

DiscountType

Allows you to specify the reason for an item discount. Discount types can be customized in company preferences and used to filter reports.
IQBStringType 32 chars    

DiscountSource

DiscountSource may have one of the following values: None, Pricing, Manual, Reward
IQBENDiscountSourceType   2.5  

ExtendedPrice

The extended price of a line item, which is item Quantity X item Price.
IQBAmountType      

ExtendedTax

Total tax per line item in the order. Per item Tax X item Quantity
IQBAmountType      

ItemNumber

Unique number assigned to the item when it is added to QBPOS.
IQBIntType      

NumberOfBaseUnits

If you use multiple units of measure, rather than a single UOM, you need to select one of the UOMs as the base unit. This base unit should be the smallest unit that you sell by. Inventory quantities are always expressed in terms of this base unit.
IQBQuanType   2.0  

Price

The purchase price or sales price of this item.
IQBAmountType      

PriceLevelNumber

If you are giving a price level discount to this customer, rather than discount percent, you need to specify which of the four supported levels you want to apply.
IQBENPriceLevelNumberType      

Qty

The quantity of the line item being ordered or transferred.
IQBQuanType      

QtySold

The quantity of the ordered item that is sold to the customer.
IQBQuanType   1.2  

SerialNumber

Item serial numbers can be recorded in QBPOS for purposes of warranty tracking or meeting legal requirements. Once recorded, former documents can be quickly located by searching by serial number. To use serial number tracking: 1. In inventory, specify those items for which you want to record serial numbers by selecting PROMPT in the Serial # Tracking field. 2. When listing these items on documents (except purchase orders and cost memos), the QBPOS user is prompted to enter a unique serial number for each unit being processed. If listing several items on a document for which you have set the serial number requirement, the user is prompted to enter serial numbers for each unit of each of those items in sequence.
IQBStringType 25 chars    

Size

The size of an item; 1 to 8 characters. This field can also be used to describe a second item attribute other than size if desired.
IQBStringType 12 chars    

TaxAmount

By default, a tax code is assigned to individual items, and the tax is calculated when the sale is made. The tax that is actually assessed depends on the tax location (tax category) that is in effect. Notice that the tax amount is returned in the response to a non-held SalesReceiptAdd request: you do not specify or set this tax amount. To change the tax, you have to set up tax category in company preferences that has the tax rate that you need. If you don’t want any taxes to be applied, for example, the sale is to a government agency or some other tax exempt entity, specify the value “Exempt” for the TaxCategory when you build your SalesReceiptAdd request.
IQBAmountType      

TaxCode

In the QBPOS UI, you specify sales tax behavior by creating sales tax locations and tax codes. (What the QBPOS UI calls a “tax location” is what the SDK calls a “tax category”.) The tax code and its name is shared between all tax categories (locations): that is, all tax categories will have the same set of tax codes. However, the actual tax rate(s) that are used in a given tax code can vary from one tax category to the next. The tax code rates that are actually applied at transaction time are those that are in the tax category that is currently specified as the default tax category (location) in sales tax preferences. You create and modify tax categories and tax codes using the TaxCategoryAdd/Mod and TaxCodeAdd/Mod requests respectively. You assign tax code rates to a tax code within a tax category using the TaxRecordMod request. You query for the tax preference information (tax rate information for each tax code under each tax category) using the CompanyQuery. However, currently the default tax category (location) can be specified only within the QBPOS UI. When you create or modify an inventory item in QBPOS, you apply a tax code to it, but not a tax category. At sales transaction time, the actual sales tax is calculated for each item, based on the tax code assigned to that item and the tax code rate(s) for that tax code under the tax category currently specified as the default tax category (location).
IQBStringType      

TaxPercentage

You can specify either a tax amount or a tax percentage, but not both. The other value and the document total tax amounts will be recomputed to reflect the value you specify. Note that the Tax % field in the receipt totals area is disabled if multiple tax rates apply to sold items.
IQBFloatType      

UnitOfMeasure

If the company is using only a single unit of measure, this specifies the unit of measure for the item. If the company is using multiple units of measure, this specifies the base unit of measure for the item. Inventory quantities are tracked and reported in terms of this base unit.
IQBStringType 20 chars 2.0  

UPC

Universal Product Code. The item’s unique UPC/EAN/ISBN identifier. This field must be 13 characters. If a shorter number is entered, QBPOS uses an appropriate algorithm to lengthen the entry to fill the 13-character field.
IQBStringType 18 chars    

WebDesc

Description of item on the web.
IQBStringType   3.0  

Manufacturer

Manufacturer of item.
IQBStringType 50 chars 3.0  

Weight

Weight of item.
IQBFloatType   3.0  

WebSKU

SKU of item on the web.
IQBStringType 20 chars 3.0  

DataExtRetList

If you specify any custom fields/private data extensions to be returned in the query request (in the OwnerIDList), then this Ret List will contain all of the data extensions that belong to each specified OwnerID. For example, if you specify an OwnerID value of 0 (custom fields), then the query will return all custom data for the returned records.
IDataExtRetList   1.2  

(List of IDataExtRet Objects)

       

OwnerID

OwnerID refers to the owner of a data extension, and must be 0 or a valid GUID. (Custom fields, which are visible in the QuickBooks UI, always have an OwnerID of 0. ) Usually you would keep your application’s GUID confidential to prevent other applications from accessing your data extensions. But if you want to share data extensions with another application, the applications need to use the same GUID. In this case, each application could use two GUIDs, one for shared data extensions and one for confidential data extensions. (An application can have any number of GUIDs.) When you share a data extension with another application, the other application must know both the OwnerID and the DataExtName, as these together form a data extension’s unique name.
IQBGUIDType     Y

DataExtName

The name of the data extension. If this is a custom field, DataExtName will be visible as a label in the QuickBooks user interface. Also because OwnerID and DataExtName together make the data extension unique, and because custom fields all have the same OwnerID of zero, the DataExtName must be a unique value among existing custom fields. In contrast, the DataExtName for private data extensions must be unique only for the specified OwnerID GUID.
IQBStringType     Y

DataExtType

b>DataExtType The type of the data extension.
IQBENDataExtTypeType     Y

DataExtValue

The data in this field. The maximum length of DataExtValue will depend on the DataExtType of this data extension. For example, if DataExtType is STR255TYPE, the maximum length of DataExtValue is 255 characters. If DataExtType is STR1024TYPE, the maximum size of DataExtValue is 1KB.
IQBStringType     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
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
<?xml version="1.0" encoding="utf-8"?>
<?qbposxml version="4.0"?>
<QBPOSXML>
        <QBPOSXMLMsgsRq onError="stopOnError">
                <SalesOrderAddRq>
                        <SalesOrderAdd defMacro="MACROTYPE"> <!-- required -->
                                <Associate >STRTYPE</Associate> <!-- optional -->
                                <Cashier >STRTYPE</Cashier> <!-- optional -->
                                <CustomerListID  useMacro="MACROTYPE">IDTYPE</CustomerListID> <!-- required -->
                                <Discount >AMTTYPE</Discount> <!-- optional -->
                                <DiscountPercent >FLOATTYPE</DiscountPercent> <!-- optional -->
                                <Instructions >STRTYPE</Instructions> <!-- optional -->
                                <!-- PriceLevelNumber may have one of the following values: 1, 2, 3, 4, 5 -->
                                <PriceLevelNumber >ENUMTYPE</PriceLevelNumber> <!-- optional -->
                                <PromoCode >STRTYPE</PromoCode> <!-- optional -->
                                <SalesOrderNumber >STRTYPE</SalesOrderNumber> <!-- optional -->
                                <SalesOrderStatusDesc >STRTYPE</SalesOrderStatusDesc> <!-- optional -->
                                <!-- SalesOrderType may have one of the following values: SalesOrder, Layaway, WorkOrder, WebOrder -->
                                <SalesOrderType >ENUMTYPE</SalesOrderType> <!-- optional -->
                                <TaxCategory >STRTYPE</TaxCategory> <!-- optional -->
                                <TxnDate >DATETYPE</TxnDate> <!-- optional -->
                                <ShippingInformation> <!-- optional -->
                                        <AddressName >STRTYPE</AddressName> <!-- optional -->
                                        <City >STRTYPE</City> <!-- optional -->
                                        <CompanyName >STRTYPE</CompanyName> <!-- optional -->
                                        <Country >STRTYPE</Country> <!-- optional -->
                                        <FullName >STRTYPE</FullName> <!-- optional -->
                                        <Phone >STRTYPE</Phone> <!-- optional -->
                                        <Phone2 >STRTYPE</Phone2> <!-- optional -->
                                        <Phone3 >STRTYPE</Phone3> <!-- optional -->
                                        <Phone4 >STRTYPE</Phone4> <!-- optional -->
                                        <PostalCode >STRTYPE</PostalCode> <!-- optional -->
                                        <ShipBy >STRTYPE</ShipBy> <!-- optional -->
                                        <Shipping >AMTTYPE</Shipping> <!-- optional -->
                                        <State >STRTYPE</State> <!-- optional -->
                                        <Street >STRTYPE</Street> <!-- optional -->
                                        <Street2 >STRTYPE</Street2> <!-- optional -->
                                </ShippingInformation>
                                <SalesOrderItemAdd> <!-- optional, may repeat -->
                                        <ListID  useMacro="MACROTYPE">IDTYPE</ListID> <!-- required -->
                                        <ALU >STRTYPE</ALU> <!-- optional -->
                                        <Associate >STRTYPE</Associate> <!-- optional -->
                                        <Attribute >STRTYPE</Attribute> <!-- optional -->
                                        <Commission >AMTTYPE</Commission> <!-- optional -->
                                        <Desc1 >STRTYPE</Desc1> <!-- optional -->
                                        <Desc2 >STRTYPE</Desc2> <!-- optional -->
                                        <Discount >AMTTYPE</Discount> <!-- optional -->
                                        <DiscountPercent >FLOATTYPE</DiscountPercent> <!-- optional -->
                                        <DiscountType >STRTYPE</DiscountType> <!-- optional -->
                                        <ExtendedPrice >AMTTYPE</ExtendedPrice> <!-- optional -->
                                        <Price >AMTTYPE</Price> <!-- optional -->
                                        <Qty >QUANTYPE</Qty> <!-- optional -->
                                        <SerialNumber >STRTYPE</SerialNumber> <!-- optional -->
                                        <Size >STRTYPE</Size> <!-- optional -->
                                        <TaxCode >STRTYPE</TaxCode> <!-- optional -->
                                        <UnitOfMeasure >STRTYPE</UnitOfMeasure> <!-- optional -->
                                        <UPC >STRTYPE</UPC> <!-- optional -->
                                </SalesOrderItemAdd>
                        </SalesOrderAdd>
                        <IncludeRetElement >STRTYPE</IncludeRetElement> <!-- optional, may repeat -->
                </SalesOrderAddRq>

                <SalesOrderAddRs statusCode="INTTYPE" statusSeverity="STRTYPE" statusMessage="STRTYPE">
                        <SalesOrderRet> <!-- optional -->
                                <TxnID >IDTYPE</TxnID> <!-- optional -->
                                <TimeCreated >DATETIMETYPE</TimeCreated> <!-- optional -->
                                <TimeModified >DATETIMETYPE</TimeModified> <!-- optional -->
                                <Associate >STRTYPE</Associate> <!-- optional -->
                                <BalanceDue >AMTTYPE</BalanceDue> <!-- optional -->
                                <Cashier >STRTYPE</Cashier> <!-- optional -->
                                <CustomerListID >IDTYPE</CustomerListID> <!-- optional -->
                                <DepositBalance >AMTTYPE</DepositBalance> <!-- optional -->
                                <Discount >AMTTYPE</Discount> <!-- optional -->
                                <DiscountPercent >FLOATTYPE</DiscountPercent> <!-- optional -->
                                <Instructions >STRTYPE</Instructions> <!-- optional -->
                                <ItemsCount >INTTYPE</ItemsCount> <!-- optional -->
                                <!-- PriceLevelNumber may have one of the following values: 1, 2, 3, 4, 5 -->
                                <PriceLevelNumber >ENUMTYPE</PriceLevelNumber> <!-- optional -->
                                <PromoCode >STRTYPE</PromoCode> <!-- optional -->
                                <Qty >QUANTYPE</Qty> <!-- optional -->
                                <SalesOrderNumber >STRTYPE</SalesOrderNumber> <!-- optional -->
                                <SalesOrderStatusDesc >STRTYPE</SalesOrderStatusDesc> <!-- optional -->
                                <!-- SalesOrderType may have one of the following values: SalesOrder, Layaway, WorkOrder, WebOrder -->
                                <SalesOrderType >ENUMTYPE</SalesOrderType> <!-- optional -->
                                <!-- StoreExchangeStatus may have one of the following values: Modified, Sent, Acknowledged -->
                                <StoreExchangeStatus >ENUMTYPE</StoreExchangeStatus> <!-- optional -->
                                <Subtotal >AMTTYPE</Subtotal> <!-- optional -->
                                <TaxAmount >AMTTYPE</TaxAmount> <!-- optional -->
                                <TaxCategory >STRTYPE</TaxCategory> <!-- optional -->
                                <TaxPercentage >FLOATTYPE</TaxPercentage> <!-- optional -->
                                <Total >AMTTYPE</Total> <!-- optional -->
                                <TxnDate >DATETYPE</TxnDate> <!-- optional -->
                                <UnfilledPercent >FLOATTYPE</UnfilledPercent> <!-- optional -->
                                <BillingInformation> <!-- optional -->
                                        <City >STRTYPE</City> <!-- optional -->
                                        <CompanyName >STRTYPE</CompanyName> <!-- optional -->
                                        <Country >STRTYPE</Country> <!-- optional -->
                                        <FirstName >STRTYPE</FirstName> <!-- optional -->
                                        <LastName >STRTYPE</LastName> <!-- optional -->
                                        <Phone >STRTYPE</Phone> <!-- optional -->
                                        <Phone2 >STRTYPE</Phone2> <!-- optional -->
                                        <Phone3 >STRTYPE</Phone3> <!-- optional -->
                                        <Phone4 >STRTYPE</Phone4> <!-- optional -->
                                        <PostalCode >STRTYPE</PostalCode> <!-- optional -->
                                        <Salutation >STRTYPE</Salutation> <!-- optional -->
                                        <State >STRTYPE</State> <!-- optional -->
                                        <Street >STRTYPE</Street> <!-- optional -->
                                        <Street2 >STRTYPE</Street2> <!-- optional -->
                                        <WebNumber >STRTYPE</WebNumber> <!-- optional -->
                                </BillingInformation>
                                <ShippingInformation> <!-- optional -->
                                        <AddressName >STRTYPE</AddressName> <!-- optional -->
                                        <City >STRTYPE</City> <!-- optional -->
                                        <CompanyName >STRTYPE</CompanyName> <!-- optional -->
                                        <Country >STRTYPE</Country> <!-- optional -->
                                        <FullName >STRTYPE</FullName> <!-- optional -->
                                        <Phone >STRTYPE</Phone> <!-- optional -->
                                        <Phone2 >STRTYPE</Phone2> <!-- optional -->
                                        <Phone3 >STRTYPE</Phone3> <!-- optional -->
                                        <Phone4 >STRTYPE</Phone4> <!-- optional -->
                                        <PostalCode >STRTYPE</PostalCode> <!-- optional -->
                                        <ShipBy >STRTYPE</ShipBy> <!-- optional -->
                                        <Shipping >AMTTYPE</Shipping> <!-- optional -->
                                        <State >STRTYPE</State> <!-- optional -->
                                        <Street >STRTYPE</Street> <!-- optional -->
                                        <Street2 >STRTYPE</Street2> <!-- optional -->
                                </ShippingInformation>
                                <SalesOrderItemRet> <!-- optional, may repeat -->
                                        <ListID >IDTYPE</ListID> <!-- optional -->
                                        <TxnLineID >INTTYPE</TxnLineID> <!-- optional -->
                                        <ALU >STRTYPE</ALU> <!-- optional -->
                                        <Associate >STRTYPE</Associate> <!-- optional -->
                                        <Attribute >STRTYPE</Attribute> <!-- optional -->
                                        <Commission >AMTTYPE</Commission> <!-- optional -->
                                        <Desc1 >STRTYPE</Desc1> <!-- optional -->
                                        <Desc2 >STRTYPE</Desc2> <!-- optional -->
                                        <Discount >AMTTYPE</Discount> <!-- optional -->
                                        <DiscountPercent >FLOATTYPE</DiscountPercent> <!-- optional -->
                                        <DiscountType >STRTYPE</DiscountType> <!-- optional -->
                                        <!-- DiscountSource may have one of the following values: None, Pricing, Manual, Reward -->
                                        <DiscountSource >ENUMTYPE</DiscountSource> <!-- optional -->
                                        <ExtendedPrice >AMTTYPE</ExtendedPrice> <!-- optional -->
                                        <ExtendedTax >AMTTYPE</ExtendedTax> <!-- optional -->
                                        <ItemNumber >INTTYPE</ItemNumber> <!-- optional -->
                                        <NumberOfBaseUnits >QUANTYPE</NumberOfBaseUnits> <!-- optional -->
                                        <Price >AMTTYPE</Price> <!-- optional -->
                                        <!-- PriceLevelNumber may have one of the following values: 1, 2, 3, 4, 5 -->
                                        <PriceLevelNumber >ENUMTYPE</PriceLevelNumber> <!-- optional -->
                                        <Qty >QUANTYPE</Qty> <!-- optional -->
                                        <QtySold >QUANTYPE</QtySold> <!-- optional -->
                                        <SerialNumber >STRTYPE</SerialNumber> <!-- optional -->
                                        <Size >STRTYPE</Size> <!-- optional -->
                                        <TaxAmount >AMTTYPE</TaxAmount> <!-- optional -->
                                        <TaxCode >STRTYPE</TaxCode> <!-- optional -->
                                        <TaxPercentage >FLOATTYPE</TaxPercentage> <!-- optional -->
                                        <UnitOfMeasure >STRTYPE</UnitOfMeasure> <!-- optional -->
                                        <UPC >STRTYPE</UPC> <!-- optional -->
                                        <WebDesc >STRTYPE</WebDesc> <!-- optional -->
                                        <Manufacturer >STRTYPE</Manufacturer> <!-- optional -->
                                        <Weight >FLOATTYPE</Weight> <!-- optional -->
                                        <WebSKU >STRTYPE</WebSKU> <!-- optional -->
                                </SalesOrderItemRet>
                                <DataExtRet> <!-- optional, may repeat -->
                                        <OwnerID >GUIDTYPE</OwnerID> <!-- required -->
                                        <DataExtName >STRTYPE</DataExtName> <!-- required -->
                                        <!-- DataExtType may have one of the following values: INTTYPE, AMTTYPE, PRICETYPE, QUANTYPE, PERCENTTYPE, DATETIMETYPE, STR255TYPE, STR1024TYPE -->
                                        <DataExtType >ENUMTYPE</DataExtType> <!-- required -->
                                        <DataExtValue >STRTYPE</DataExtValue> <!-- required -->
                                </DataExtRet>
                        </SalesOrderRet>
                </SalesOrderAddRs>
        </QBPOSXMLMsgsRq>
</QBPOSXML>

  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
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
'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.qbposfc4

        Public Class SampleSalesOrderAdd
                Public Sub  DoSalesOrderAdd()
                        Dim sessionBegun as Boolean
                        sessionBegun = False
                        Dim connectionOpen as Boolean
                        connectionOpen = False
                        Dim sessionManager as QBPOSSessionManager
                        sessionManager = nothing

                        Try
                                'Create the session Manager object
                                sessionManager = new QBPOSSessionManager

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

                                BuildSalesOrderAddRq(requestMsgSet)

                                'Connect to QuickBooks and begin a session
                                sessionManager.OpenConnection("","Sample Code from OSR")
                                connectionOpen = True
                                sessionManager.BeginSession("")
                                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

                                WalkSalesOrderAddRs(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 BuildSalesOrderAddRq(requestMsgSet as IMsgSetRequest)
                        Dim SalesOrderAddRq as ISalesOrderAdd
                        SalesOrderAddRq= requestMsgSet.AppendSalesOrderAddRq()
                        'Set field value for Associate
                        SalesOrderAddRq.Associate.SetValue("ab")
                        'Set field value for Cashier
                        SalesOrderAddRq.Cashier.SetValue("ab")
                        'Set field value for CustomerListID
                        SalesOrderAddRq.CustomerListID.SetValue("200000-1011023419")
                        'Set attributes
                        'Set field value for CustomerListID to use Macro
                        SalesOrderAddRq.CustomerListID.SetValueUseMacro("200000-1011023419")
                        'Set field value for Discount
                        SalesOrderAddRq.Discount.SetValue(10.01)
                        'Set field value for DiscountPercent
                        SalesOrderAddRq.DiscountPercent.SetValue(12.34)
                        'Set field value for Instructions
                        SalesOrderAddRq.Instructions.SetValue("ab")
                        'Set field value for PriceLevelNumber
                        SalesOrderAddRq.PriceLevelNumber.SetValue(ENPriceLevelNumber.pln1)
                        'Set field value for PromoCode
                        SalesOrderAddRq.PromoCode.SetValue("ab")
                        'Set field value for SalesOrderNumber
                        SalesOrderAddRq.SalesOrderNumber.SetValue("ab")
                        'Set field value for SalesOrderStatusDesc
                        SalesOrderAddRq.SalesOrderStatusDesc.SetValue("ab")
                        'Set field value for SalesOrderType
                        SalesOrderAddRq.SalesOrderType.SetValue(ENSalesOrderType.sotSalesOrder)
                        'Set field value for TaxCategory
                        SalesOrderAddRq.TaxCategory.SetValue("ab")
                        'Set field value for TxnDate
                        SalesOrderAddRq.TxnDate.SetValue(DateTime.Parse("12/15/2007"))
                        'Set field value for AddressName
                        SalesOrderAddRq.ShippingInformation.AddressName.SetValue("ab")
                        'Set field value for City
                        SalesOrderAddRq.ShippingInformation.City.SetValue("ab")
                        'Set field value for CompanyName
                        SalesOrderAddRq.ShippingInformation.CompanyName.SetValue("ab")
                        'Set field value for Country
                        SalesOrderAddRq.ShippingInformation.Country.SetValue("ab")
                        'Set field value for FullName
                        SalesOrderAddRq.ShippingInformation.FullName.SetValue("ab")
                        'Set field value for Phone
                        SalesOrderAddRq.ShippingInformation.Phone.SetValue("ab")
                        'Set field value for Phone2
                        SalesOrderAddRq.ShippingInformation.Phone2.SetValue("ab")
                        'Set field value for Phone3
                        SalesOrderAddRq.ShippingInformation.Phone3.SetValue("ab")
                        'Set field value for Phone4
                        SalesOrderAddRq.ShippingInformation.Phone4.SetValue("ab")
                        'Set field value for PostalCode
                        SalesOrderAddRq.ShippingInformation.PostalCode.SetValue("ab")
                        'Set field value for ShipBy
                        SalesOrderAddRq.ShippingInformation.ShipBy.SetValue("ab")
                        'Set field value for Shipping
                        SalesOrderAddRq.ShippingInformation.Shipping.SetValue(10.01)
                        'Set field value for State
                        SalesOrderAddRq.ShippingInformation.State.SetValue("ab")
                        'Set field value for Street
                        SalesOrderAddRq.ShippingInformation.Street.SetValue("ab")
                        'Set field value for Street2
                        SalesOrderAddRq.ShippingInformation.Street2.SetValue("ab")
                        Dim SalesOrderItemAdd3015 as ISalesOrderItemAdd
                        SalesOrderItemAdd3015=SalesOrderAddRq.SalesOrderItemAddList.Append()
                        'Set field value for ListID
                        SalesOrderItemAdd3015.ListID.SetValue("200000-1011023419")
                        'Set attributes
                        'Set field value for ListID to use Macro
                        SalesOrderItemAdd3015.ListID.SetValueUseMacro("200000-1011023419")
                        'Set field value for ALU
                        SalesOrderItemAdd3015.ALU.SetValue("ab")
                        'Set field value for Associate
                        SalesOrderItemAdd3015.Associate.SetValue("ab")
                        'Set field value for Attribute
                        SalesOrderItemAdd3015.Attribute.SetValue("ab")
                        'Set field value for Commission
                        SalesOrderItemAdd3015.Commission.SetValue(10.01)
                        'Set field value for Desc1
                        SalesOrderItemAdd3015.Desc1.SetValue("ab")
                        'Set field value for Desc2
                        SalesOrderItemAdd3015.Desc2.SetValue("ab")
                        'Set field value for Discount
                        SalesOrderItemAdd3015.Discount.SetValue(10.01)
                        'Set field value for DiscountPercent
                        SalesOrderItemAdd3015.DiscountPercent.SetValue(12.34)
                        'Set field value for DiscountType
                        SalesOrderItemAdd3015.DiscountType.SetValue("ab")
                        'Set field value for ExtendedPrice
                        SalesOrderItemAdd3015.ExtendedPrice.SetValue(10.01)
                        'Set field value for Price
                        SalesOrderItemAdd3015.Price.SetValue(10.01)
                        'Set field value for Qty
                        SalesOrderItemAdd3015.Qty.SetValue(2)
                        'Set field value for SerialNumber
                        SalesOrderItemAdd3015.SerialNumber.SetValue("ab")
                        'Set field value for Size
                        SalesOrderItemAdd3015.Size.SetValue("ab")
                        'Set field value for TaxCode
                        SalesOrderItemAdd3015.TaxCode.SetValue("ab")
                        'Set field value for UnitOfMeasure
                        SalesOrderItemAdd3015.UnitOfMeasure.SetValue("ab")
                        'Set field value for UPC
                        SalesOrderItemAdd3015.UPC.SetValue("ab")
                        'Set field value for IncludeRetElementList
                        'May create more than one of these if needed
                        SalesOrderAddRq.IncludeRetElementList.Add("ab")
                End Sub




                Public Sub WalkSalesOrderAddRs( 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.rtSalesOrderAddRs) then
                                                        'upcast to more specific type here, this is safe because we checked with response.Type check above
                                                        Dim SalesOrderRet as ISalesOrderRet
                                                        SalesOrderRet = CType(response.Detail,ISalesOrderRet)
                                                                WalkSalesOrderRet(SalesOrderRet)
                                                End If
                                        End If
                                End If
                        Next j
                End Sub




                Public Sub WalkSalesOrderRet(SalesOrderRet as ISalesOrderRet)
                        if (SalesOrderRet is nothing) then
                                Exit Sub
                        End If

                        'Go through all the elements of ISalesOrderRet
                        'Get value of TxnID
                        if ( not SalesOrderRet.TxnID is nothing) then
                                Dim TxnID3016 as String
                                TxnID3016 = SalesOrderRet.TxnID.GetValue()
                        End If
                        'Get value of TimeCreated
                        if ( not SalesOrderRet.TimeCreated is nothing) then
                                Dim TimeCreated3017 as DateTime
                                TimeCreated3017 = SalesOrderRet.TimeCreated.GetValue()
                        End If
                        'Get value of TimeModified
                        if ( not SalesOrderRet.TimeModified is nothing) then
                                Dim TimeModified3018 as DateTime
                                TimeModified3018 = SalesOrderRet.TimeModified.GetValue()
                        End If
                        'Get value of Associate
                        if ( not SalesOrderRet.Associate is nothing) then
                                Dim Associate3019 as String
                                Associate3019 = SalesOrderRet.Associate.GetValue()
                        End If
                        'Get value of BalanceDue
                        if ( not SalesOrderRet.BalanceDue is nothing) then
                                Dim BalanceDue3020 as Double
                                BalanceDue3020 = SalesOrderRet.BalanceDue.GetValue()
                        End If
                        'Get value of Cashier
                        if ( not SalesOrderRet.Cashier is nothing) then
                                Dim Cashier3021 as String
                                Cashier3021 = SalesOrderRet.Cashier.GetValue()
                        End If
                        'Get value of CustomerListID
                        if ( not SalesOrderRet.CustomerListID is nothing) then
                                Dim CustomerListID3022 as String
                                CustomerListID3022 = SalesOrderRet.CustomerListID.GetValue()
                        End If
                        'Get value of DepositBalance
                        if ( not SalesOrderRet.DepositBalance is nothing) then
                                Dim DepositBalance3023 as Double
                                DepositBalance3023 = SalesOrderRet.DepositBalance.GetValue()
                        End If
                        'Get value of Discount
                        if ( not SalesOrderRet.Discount is nothing) then
                                Dim Discount3024 as Double
                                Discount3024 = SalesOrderRet.Discount.GetValue()
                        End If
                        'Get value of DiscountPercent
                        if ( not SalesOrderRet.DiscountPercent is nothing) then
                                Dim DiscountPercent3025 as Single
                                DiscountPercent3025 = SalesOrderRet.DiscountPercent.GetValue()
                        End If
                        'Get value of Instructions
                        if ( not SalesOrderRet.Instructions is nothing) then
                                Dim Instructions3026 as String
                                Instructions3026 = SalesOrderRet.Instructions.GetValue()
                        End If
                        'Get value of ItemsCount
                        if ( not SalesOrderRet.ItemsCount is nothing) then
                                Dim ItemsCount3027 as Integer
                                ItemsCount3027 = SalesOrderRet.ItemsCount.GetValue()
                        End If
                        'Get value of PriceLevelNumber
                        if ( not SalesOrderRet.PriceLevelNumber is nothing) then
                                Dim PriceLevelNumber3028 as ENPriceLevelNumber
                                PriceLevelNumber3028 = SalesOrderRet.PriceLevelNumber.GetValue()
                        End If
                        'Get value of PromoCode
                        if ( not SalesOrderRet.PromoCode is nothing) then
                                Dim PromoCode3029 as String
                                PromoCode3029 = SalesOrderRet.PromoCode.GetValue()
                        End If
                        'Get value of Qty
                        if ( not SalesOrderRet.Qty is nothing) then
                                Dim Qty3030 as Double
                                Qty3030 = SalesOrderRet.Qty.GetValue()
                        End If
                        'Get value of SalesOrderNumber
                        if ( not SalesOrderRet.SalesOrderNumber is nothing) then
                                Dim SalesOrderNumber3031 as String
                                SalesOrderNumber3031 = SalesOrderRet.SalesOrderNumber.GetValue()
                        End If
                        'Get value of SalesOrderStatusDesc
                        if ( not SalesOrderRet.SalesOrderStatusDesc is nothing) then
                                Dim SalesOrderStatusDesc3032 as String
                                SalesOrderStatusDesc3032 = SalesOrderRet.SalesOrderStatusDesc.GetValue()
                        End If
                        'Get value of SalesOrderType
                        if ( not SalesOrderRet.SalesOrderType is nothing) then
                                Dim SalesOrderType3033 as ENSalesOrderType
                                SalesOrderType3033 = SalesOrderRet.SalesOrderType.GetValue()
                        End If
                        'Get value of StoreExchangeStatus
                        if ( not SalesOrderRet.StoreExchangeStatus is nothing) then
                                Dim StoreExchangeStatus3034 as ENStoreExchangeStatus
                                StoreExchangeStatus3034 = SalesOrderRet.StoreExchangeStatus.GetValue()
                        End If
                        'Get value of Subtotal
                        if ( not SalesOrderRet.Subtotal is nothing) then
                                Dim Subtotal3035 as Double
                                Subtotal3035 = SalesOrderRet.Subtotal.GetValue()
                        End If
                        'Get value of TaxAmount
                        if ( not SalesOrderRet.TaxAmount is nothing) then
                                Dim TaxAmount3036 as Double
                                TaxAmount3036 = SalesOrderRet.TaxAmount.GetValue()
                        End If
                        'Get value of TaxCategory
                        if ( not SalesOrderRet.TaxCategory is nothing) then
                                Dim TaxCategory3037 as String
                                TaxCategory3037 = SalesOrderRet.TaxCategory.GetValue()
                        End If
                        'Get value of TaxPercentage
                        if ( not SalesOrderRet.TaxPercentage is nothing) then
                                Dim TaxPercentage3038 as Single
                                TaxPercentage3038 = SalesOrderRet.TaxPercentage.GetValue()
                        End If
                        'Get value of Total
                        if ( not SalesOrderRet.Total is nothing) then
                                Dim Total3039 as Double
                                Total3039 = SalesOrderRet.Total.GetValue()
                        End If
                        'Get value of TxnDate
                        if ( not SalesOrderRet.TxnDate is nothing) then
                                Dim TxnDate3040 as DateTime
                                TxnDate3040 = SalesOrderRet.TxnDate.GetValue()
                        End If
                        'Get value of UnfilledPercent
                        if ( not SalesOrderRet.UnfilledPercent is nothing) then
                                Dim UnfilledPercent3041 as Single
                                UnfilledPercent3041 = SalesOrderRet.UnfilledPercent.GetValue()
                        End If
                        if (not SalesOrderRet.BillingInformation is nothing) then
                                'Get value of City
                                if ( not SalesOrderRet.BillingInformation.City is nothing) then
                                        Dim City3042 as String
                                        City3042 = SalesOrderRet.BillingInformation.City.GetValue()
                                End If
                                'Get value of CompanyName
                                if ( not SalesOrderRet.BillingInformation.CompanyName is nothing) then
                                        Dim CompanyName3043 as String
                                        CompanyName3043 = SalesOrderRet.BillingInformation.CompanyName.GetValue()
                                End If
                                'Get value of Country
                                if ( not SalesOrderRet.BillingInformation.Country is nothing) then
                                        Dim Country3044 as String
                                        Country3044 = SalesOrderRet.BillingInformation.Country.GetValue()
                                End If
                                'Get value of FirstName
                                if ( not SalesOrderRet.BillingInformation.FirstName is nothing) then
                                        Dim FirstName3045 as String
                                        FirstName3045 = SalesOrderRet.BillingInformation.FirstName.GetValue()
                                End If
                                'Get value of LastName
                                if ( not SalesOrderRet.BillingInformation.LastName is nothing) then
                                        Dim LastName3046 as String
                                        LastName3046 = SalesOrderRet.BillingInformation.LastName.GetValue()
                                End If
                                'Get value of Phone
                                if ( not SalesOrderRet.BillingInformation.Phone is nothing) then
                                        Dim Phone3047 as String
                                        Phone3047 = SalesOrderRet.BillingInformation.Phone.GetValue()
                                End If
                                'Get value of Phone2
                                if ( not SalesOrderRet.BillingInformation.Phone2 is nothing) then
                                        Dim Phone23048 as String
                                        Phone23048 = SalesOrderRet.BillingInformation.Phone2.GetValue()
                                End If
                                'Get value of Phone3
                                if ( not SalesOrderRet.BillingInformation.Phone3 is nothing) then
                                        Dim Phone33049 as String
                                        Phone33049 = SalesOrderRet.BillingInformation.Phone3.GetValue()
                                End If
                                'Get value of Phone4
                                if ( not SalesOrderRet.BillingInformation.Phone4 is nothing) then
                                        Dim Phone43050 as String
                                        Phone43050 = SalesOrderRet.BillingInformation.Phone4.GetValue()
                                End If
                                'Get value of PostalCode
                                if ( not SalesOrderRet.BillingInformation.PostalCode is nothing) then
                                        Dim PostalCode3051 as String
                                        PostalCode3051 = SalesOrderRet.BillingInformation.PostalCode.GetValue()
                                End If
                                'Get value of Salutation
                                if ( not SalesOrderRet.BillingInformation.Salutation is nothing) then
                                        Dim Salutation3052 as String
                                        Salutation3052 = SalesOrderRet.BillingInformation.Salutation.GetValue()
                                End If
                                'Get value of State
                                if ( not SalesOrderRet.BillingInformation.State is nothing) then
                                        Dim State3053 as String
                                        State3053 = SalesOrderRet.BillingInformation.State.GetValue()
                                End If
                                'Get value of Street
                                if ( not SalesOrderRet.BillingInformation.Street is nothing) then
                                        Dim Street3054 as String
                                        Street3054 = SalesOrderRet.BillingInformation.Street.GetValue()
                                End If
                                'Get value of Street2
                                if ( not SalesOrderRet.BillingInformation.Street2 is nothing) then
                                        Dim Street23055 as String
                                        Street23055 = SalesOrderRet.BillingInformation.Street2.GetValue()
                                End If
                                'Get value of WebNumber
                                if ( not SalesOrderRet.BillingInformation.WebNumber is nothing) then
                                        Dim WebNumber3056 as String
                                        WebNumber3056 = SalesOrderRet.BillingInformation.WebNumber.GetValue()
                                End If
                        End If
                        if (not SalesOrderRet.ShippingInformation is nothing) then
                                'Get value of AddressName
                                if ( not SalesOrderRet.ShippingInformation.AddressName is nothing) then
                                        Dim AddressName3057 as String
                                        AddressName3057 = SalesOrderRet.ShippingInformation.AddressName.GetValue()
                                End If
                                'Get value of City
                                if ( not SalesOrderRet.ShippingInformation.City is nothing) then
                                        Dim City3058 as String
                                        City3058 = SalesOrderRet.ShippingInformation.City.GetValue()
                                End If
                                'Get value of CompanyName
                                if ( not SalesOrderRet.ShippingInformation.CompanyName is nothing) then
                                        Dim CompanyName3059 as String
                                        CompanyName3059 = SalesOrderRet.ShippingInformation.CompanyName.GetValue()
                                End If
                                'Get value of Country
                                if ( not SalesOrderRet.ShippingInformation.Country is nothing) then
                                        Dim Country3060 as String
                                        Country3060 = SalesOrderRet.ShippingInformation.Country.GetValue()
                                End If
                                'Get value of FullName
                                if ( not SalesOrderRet.ShippingInformation.FullName is nothing) then
                                        Dim FullName3061 as String
                                        FullName3061 = SalesOrderRet.ShippingInformation.FullName.GetValue()
                                End If
                                'Get value of Phone
                                if ( not SalesOrderRet.ShippingInformation.Phone is nothing) then
                                        Dim Phone3062 as String
                                        Phone3062 = SalesOrderRet.ShippingInformation.Phone.GetValue()
                                End If
                                'Get value of Phone2
                                if ( not SalesOrderRet.ShippingInformation.Phone2 is nothing) then
                                        Dim Phone23063 as String
                                        Phone23063 = SalesOrderRet.ShippingInformation.Phone2.GetValue()
                                End If
                                'Get value of Phone3
                                if ( not SalesOrderRet.ShippingInformation.Phone3 is nothing) then
                                        Dim Phone33064 as String
                                        Phone33064 = SalesOrderRet.ShippingInformation.Phone3.GetValue()
                                End If
                                'Get value of Phone4
                                if ( not SalesOrderRet.ShippingInformation.Phone4 is nothing) then
                                        Dim Phone43065 as String
                                        Phone43065 = SalesOrderRet.ShippingInformation.Phone4.GetValue()
                                End If
                                'Get value of PostalCode
                                if ( not SalesOrderRet.ShippingInformation.PostalCode is nothing) then
                                        Dim PostalCode3066 as String
                                        PostalCode3066 = SalesOrderRet.ShippingInformation.PostalCode.GetValue()
                                End If
                                'Get value of ShipBy
                                if ( not SalesOrderRet.ShippingInformation.ShipBy is nothing) then
                                        Dim ShipBy3067 as String
                                        ShipBy3067 = SalesOrderRet.ShippingInformation.ShipBy.GetValue()
                                End If
                                'Get value of Shipping
                                if ( not SalesOrderRet.ShippingInformation.Shipping is nothing) then
                                        Dim Shipping3068 as Double
                                        Shipping3068 = SalesOrderRet.ShippingInformation.Shipping.GetValue()
                                End If
                                'Get value of State
                                if ( not SalesOrderRet.ShippingInformation.State is nothing) then
                                        Dim State3069 as String
                                        State3069 = SalesOrderRet.ShippingInformation.State.GetValue()
                                End If
                                'Get value of Street
                                if ( not SalesOrderRet.ShippingInformation.Street is nothing) then
                                        Dim Street3070 as String
                                        Street3070 = SalesOrderRet.ShippingInformation.Street.GetValue()
                                End If
                                'Get value of Street2
                                if ( not SalesOrderRet.ShippingInformation.Street2 is nothing) then
                                        Dim Street23071 as String
                                        Street23071 = SalesOrderRet.ShippingInformation.Street2.GetValue()
                                End If
                        End If
                        if (not SalesOrderRet.SalesOrderItemRetList is nothing)
                                Dim i3072 as Integer
                                for i3072 = 0  to SalesOrderRet.SalesOrderItemRetList.Count - 1
                                        Dim SalesOrderItemRet as ISalesOrderItemRet
                                        SalesOrderItemRet = SalesOrderRet.SalesOrderItemRetList.GetAt(i3072)
                                        'Get value of ListID
                                        if ( not SalesOrderItemRet.ListID is nothing) then
                                                Dim ListID3073 as String
                                                ListID3073 = SalesOrderItemRet.ListID.GetValue()
                                        End If
                                        'Get value of TxnLineID
                                        if ( not SalesOrderItemRet.TxnLineID is nothing) then
                                                Dim TxnLineID3074 as Integer
                                                TxnLineID3074 = SalesOrderItemRet.TxnLineID.GetValue()
                                        End If
                                        'Get value of ALU
                                        if ( not SalesOrderItemRet.ALU is nothing) then
                                                Dim ALU3075 as String
                                                ALU3075 = SalesOrderItemRet.ALU.GetValue()
                                        End If
                                        'Get value of Associate
                                        if ( not SalesOrderItemRet.Associate is nothing) then
                                                Dim Associate3076 as String
                                                Associate3076 = SalesOrderItemRet.Associate.GetValue()
                                        End If
                                        'Get value of Attribute
                                        if ( not SalesOrderItemRet.Attribute is nothing) then
                                                Dim Attribute3077 as String
                                                Attribute3077 = SalesOrderItemRet.Attribute.GetValue()
                                        End If
                                        'Get value of Commission
                                        if ( not SalesOrderItemRet.Commission is nothing) then
                                                Dim Commission3078 as Double
                                                Commission3078 = SalesOrderItemRet.Commission.GetValue()
                                        End If
                                        'Get value of Desc1
                                        if ( not SalesOrderItemRet.Desc1 is nothing) then
                                                Dim Desc13079 as String
                                                Desc13079 = SalesOrderItemRet.Desc1.GetValue()
                                        End If
                                        'Get value of Desc2
                                        if ( not SalesOrderItemRet.Desc2 is nothing) then
                                                Dim Desc23080 as String
                                                Desc23080 = SalesOrderItemRet.Desc2.GetValue()
                                        End If
                                        'Get value of Discount
                                        if ( not SalesOrderItemRet.Discount is nothing) then
                                                Dim Discount3081 as Double
                                                Discount3081 = SalesOrderItemRet.Discount.GetValue()
                                        End If
                                        'Get value of DiscountPercent
                                        if ( not SalesOrderItemRet.DiscountPercent is nothing) then
                                                Dim DiscountPercent3082 as Single
                                                DiscountPercent3082 = SalesOrderItemRet.DiscountPercent.GetValue()
                                        End If
                                        'Get value of DiscountType
                                        if ( not SalesOrderItemRet.DiscountType is nothing) then
                                                Dim DiscountType3083 as String
                                                DiscountType3083 = SalesOrderItemRet.DiscountType.GetValue()
                                        End If
                                        'Get value of DiscountSource
                                        if ( not SalesOrderItemRet.DiscountSource is nothing) then
                                                Dim DiscountSource3084 as ENDiscountSource
                                                DiscountSource3084 = SalesOrderItemRet.DiscountSource.GetValue()
                                        End If
                                        'Get value of ExtendedPrice
                                        if ( not SalesOrderItemRet.ExtendedPrice is nothing) then
                                                Dim ExtendedPrice3085 as Double
                                                ExtendedPrice3085 = SalesOrderItemRet.ExtendedPrice.GetValue()
                                        End If
                                        'Get value of ExtendedTax
                                        if ( not SalesOrderItemRet.ExtendedTax is nothing) then
                                                Dim ExtendedTax3086 as Double
                                                ExtendedTax3086 = SalesOrderItemRet.ExtendedTax.GetValue()
                                        End If
                                        'Get value of ItemNumber
                                        if ( not SalesOrderItemRet.ItemNumber is nothing) then
                                                Dim ItemNumber3087 as Integer
                                                ItemNumber3087 = SalesOrderItemRet.ItemNumber.GetValue()
                                        End If
                                        'Get value of NumberOfBaseUnits
                                        if ( not SalesOrderItemRet.NumberOfBaseUnits is nothing) then
                                                Dim NumberOfBaseUnits3088 as Double
                                                NumberOfBaseUnits3088 = SalesOrderItemRet.NumberOfBaseUnits.GetValue()
                                        End If
                                        'Get value of Price
                                        if ( not SalesOrderItemRet.Price is nothing) then
                                                Dim Price3089 as Double
                                                Price3089 = SalesOrderItemRet.Price.GetValue()
                                        End If
                                        'Get value of PriceLevelNumber
                                        if ( not SalesOrderItemRet.PriceLevelNumber is nothing) then
                                                Dim PriceLevelNumber3090 as ENPriceLevelNumber
                                                PriceLevelNumber3090 = SalesOrderItemRet.PriceLevelNumber.GetValue()
                                        End If
                                        'Get value of Qty
                                        if ( not SalesOrderItemRet.Qty is nothing) then
                                                Dim Qty3091 as Double
                                                Qty3091 = SalesOrderItemRet.Qty.GetValue()
                                        End If
                                        'Get value of QtySold
                                        if ( not SalesOrderItemRet.QtySold is nothing) then
                                                Dim QtySold3092 as Double
                                                QtySold3092 = SalesOrderItemRet.QtySold.GetValue()
                                        End If
                                        'Get value of SerialNumber
                                        if ( not SalesOrderItemRet.SerialNumber is nothing) then
                                                Dim SerialNumber3093 as String
                                                SerialNumber3093 = SalesOrderItemRet.SerialNumber.GetValue()
                                        End If
                                        'Get value of Size
                                        if ( not SalesOrderItemRet.Size is nothing) then
                                                Dim Size3094 as String
                                                Size3094 = SalesOrderItemRet.Size.GetValue()
                                        End If
                                        'Get value of TaxAmount
                                        if ( not SalesOrderItemRet.TaxAmount is nothing) then
                                                Dim TaxAmount3095 as Double
                                                TaxAmount3095 = SalesOrderItemRet.TaxAmount.GetValue()
                                        End If
                                        'Get value of TaxCode
                                        if ( not SalesOrderItemRet.TaxCode is nothing) then
                                                Dim TaxCode3096 as String
                                                TaxCode3096 = SalesOrderItemRet.TaxCode.GetValue()
                                        End If
                                        'Get value of TaxPercentage
                                        if ( not SalesOrderItemRet.TaxPercentage is nothing) then
                                                Dim TaxPercentage3097 as Single
                                                TaxPercentage3097 = SalesOrderItemRet.TaxPercentage.GetValue()
                                        End If
                                        'Get value of UnitOfMeasure
                                        if ( not SalesOrderItemRet.UnitOfMeasure is nothing) then
                                                Dim UnitOfMeasure3098 as String
                                                UnitOfMeasure3098 = SalesOrderItemRet.UnitOfMeasure.GetValue()
                                        End If
                                        'Get value of UPC
                                        if ( not SalesOrderItemRet.UPC is nothing) then
                                                Dim UPC3099 as String
                                                UPC3099 = SalesOrderItemRet.UPC.GetValue()
                                        End If
                                        'Get value of WebDesc
                                        if ( not SalesOrderItemRet.WebDesc is nothing) then
                                                Dim WebDesc3100 as String
                                                WebDesc3100 = SalesOrderItemRet.WebDesc.GetValue()
                                        End If
                                        'Get value of Manufacturer
                                        if ( not SalesOrderItemRet.Manufacturer is nothing) then
                                                Dim Manufacturer3101 as String
                                                Manufacturer3101 = SalesOrderItemRet.Manufacturer.GetValue()
                                        End If
                                        'Get value of Weight
                                        if ( not SalesOrderItemRet.Weight is nothing) then
                                                Dim Weight3102 as Single
                                                Weight3102 = SalesOrderItemRet.Weight.GetValue()
                                        End If
                                        'Get value of WebSKU
                                        if ( not SalesOrderItemRet.WebSKU is nothing) then
                                                Dim WebSKU3103 as String
                                                WebSKU3103 = SalesOrderItemRet.WebSKU.GetValue()
                                        End If
                                Next i3072
                        End If
                        if (not SalesOrderRet.DataExtRetList is nothing)
                                Dim i3104 as Integer
                                for i3104 = 0  to SalesOrderRet.DataExtRetList.Count - 1
                                        Dim DataExtRet as IDataExtRet
                                        DataExtRet = SalesOrderRet.DataExtRetList.GetAt(i3104)
                                        'Get value of OwnerID
                                        Dim OwnerID3105 as String
                                        OwnerID3105 = DataExtRet.OwnerID.GetValue()
                                        'Get value of DataExtName
                                        Dim DataExtName3106 as String
                                        DataExtName3106 = DataExtRet.DataExtName.GetValue()
                                        'Get value of DataExtType
                                        Dim DataExtType3107 as ENDataExtType
                                        DataExtType3107 = DataExtRet.DataExtType.GetValue()
                                        'Get value of DataExtValue
                                        Dim DataExtValue3108 as String
                                        DataExtValue3108 = DataExtRet.DataExtValue.GetValue()
                                Next i3104
                        End If
                End Sub




        End Class

  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
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
//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.qbposfc4;

namespace com.intuit.idn.samples
{
        public class SampleSalesOrderAdd
        {
                public void  DoSalesOrderAdd()
                {
                        bool sessionBegun = false;
                        bool connectionOpen = false;
                        QBPOSSessionManager sessionManager = null;

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

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

                                BuildSalesOrderAddRq(requestMsgSet);

                                //Connect to QuickBooks and begin a session
                                sessionManager.OpenConnection("","Sample Code from OSR");
                                connectionOpen = true;
                                sessionManager.BeginSession("");
                                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;

                                WalkSalesOrderAddRs(responseMsgSet);
                        }
                        catch (Exception e)
                        {
                                MessageBox.Show(e.Message, "Error");
                                if (sessionBegun)
                                {
                                        sessionManager.EndSession();
                                }
                                if (connectionOpen)
                                {
                                        sessionManager.CloseConnection();
                                }
                        }
                }
                void BuildSalesOrderAddRq(IMsgSetRequest requestMsgSet)
                {
                        ISalesOrderAdd SalesOrderAddRq= requestMsgSet.AppendSalesOrderAddRq();
                        //Set attributes
                        //Set field value for defMacro
                        SalesOrderAddRq.defMacro.SetValue("IQBStringType");
                        //Set field value for Associate
                        SalesOrderAddRq.Associate.SetValue("ab");
                        //Set field value for Cashier
                        SalesOrderAddRq.Cashier.SetValue("ab");
                        //Set field value for CustomerListID
                        SalesOrderAddRq.CustomerListID.SetValue("200000-1011023419");
                        //Set attributes
                        //Set field value for CustomerListID to use Macro
                        SalesOrderAddRq.CustomerListID.SetValueUseMacro("200000-1011023419");
                        //Set field value for Discount
                        SalesOrderAddRq.Discount.SetValue(10.01);
                        //Set field value for DiscountPercent
                        SalesOrderAddRq.DiscountPercent.SetValue(12.34F);
                        //Set field value for Instructions
                        SalesOrderAddRq.Instructions.SetValue("ab");
                        //Set field value for PriceLevelNumber
                        SalesOrderAddRq.PriceLevelNumber.SetValue(ENPriceLevelNumber.pln1);
                        //Set field value for PromoCode
                        SalesOrderAddRq.PromoCode.SetValue("ab");
                        //Set field value for SalesOrderNumber
                        SalesOrderAddRq.SalesOrderNumber.SetValue("ab");
                        //Set field value for SalesOrderStatusDesc
                        SalesOrderAddRq.SalesOrderStatusDesc.SetValue("ab");
                        //Set field value for SalesOrderType
                        SalesOrderAddRq.SalesOrderType.SetValue(ENSalesOrderType.sotSalesOrder);
                        //Set field value for TaxCategory
                        SalesOrderAddRq.TaxCategory.SetValue("ab");
                        //Set field value for TxnDate
                        SalesOrderAddRq.TxnDate.SetValue(DateTime.Parse("12/15/2007"));
                        //Set field value for AddressName
                        SalesOrderAddRq.ShippingInformation.AddressName.SetValue("ab");
                        //Set field value for City
                        SalesOrderAddRq.ShippingInformation.City.SetValue("ab");
                        //Set field value for CompanyName
                        SalesOrderAddRq.ShippingInformation.CompanyName.SetValue("ab");
                        //Set field value for Country
                        SalesOrderAddRq.ShippingInformation.Country.SetValue("ab");
                        //Set field value for FullName
                        SalesOrderAddRq.ShippingInformation.FullName.SetValue("ab");
                        //Set field value for Phone
                        SalesOrderAddRq.ShippingInformation.Phone.SetValue("ab");
                        //Set field value for Phone2
                        SalesOrderAddRq.ShippingInformation.Phone2.SetValue("ab");
                        //Set field value for Phone3
                        SalesOrderAddRq.ShippingInformation.Phone3.SetValue("ab");
                        //Set field value for Phone4
                        SalesOrderAddRq.ShippingInformation.Phone4.SetValue("ab");
                        //Set field value for PostalCode
                        SalesOrderAddRq.ShippingInformation.PostalCode.SetValue("ab");
                        //Set field value for ShipBy
                        SalesOrderAddRq.ShippingInformation.ShipBy.SetValue("ab");
                        //Set field value for Shipping
                        SalesOrderAddRq.ShippingInformation.Shipping.SetValue(10.01);
                        //Set field value for State
                        SalesOrderAddRq.ShippingInformation.State.SetValue("ab");
                        //Set field value for Street
                        SalesOrderAddRq.ShippingInformation.Street.SetValue("ab");
                        //Set field value for Street2
                        SalesOrderAddRq.ShippingInformation.Street2.SetValue("ab");
                        ISalesOrderItemAdd SalesOrderItemAdd3109=SalesOrderAddRq.SalesOrderItemAddList.Append();
                        //Set field value for ListID
                        SalesOrderItemAdd3109.ListID.SetValue("200000-1011023419");
                        //Set attributes
                        //Set field value for ListID to use Macro
                        SalesOrderItemAdd3109.ListID.SetValueUseMacro("200000-1011023419");
                        //Set field value for ALU
                        SalesOrderItemAdd3109.ALU.SetValue("ab");
                        //Set field value for Associate
                        SalesOrderItemAdd3109.Associate.SetValue("ab");
                        //Set field value for Attribute
                        SalesOrderItemAdd3109.Attribute.SetValue("ab");
                        //Set field value for Commission
                        SalesOrderItemAdd3109.Commission.SetValue(10.01);
                        //Set field value for Desc1
                        SalesOrderItemAdd3109.Desc1.SetValue("ab");
                        //Set field value for Desc2
                        SalesOrderItemAdd3109.Desc2.SetValue("ab");
                        //Set field value for Discount
                        SalesOrderItemAdd3109.Discount.SetValue(10.01);
                        //Set field value for DiscountPercent
                        SalesOrderItemAdd3109.DiscountPercent.SetValue(12.34F);
                        //Set field value for DiscountType
                        SalesOrderItemAdd3109.DiscountType.SetValue("ab");
                        //Set field value for ExtendedPrice
                        SalesOrderItemAdd3109.ExtendedPrice.SetValue(10.01);
                        //Set field value for Price
                        SalesOrderItemAdd3109.Price.SetValue(10.01);
                        //Set field value for Qty
                        SalesOrderItemAdd3109.Qty.SetValue(2);
                        //Set field value for SerialNumber
                        SalesOrderItemAdd3109.SerialNumber.SetValue("ab");
                        //Set field value for Size
                        SalesOrderItemAdd3109.Size.SetValue("ab");
                        //Set field value for TaxCode
                        SalesOrderItemAdd3109.TaxCode.SetValue("ab");
                        //Set field value for UnitOfMeasure
                        SalesOrderItemAdd3109.UnitOfMeasure.SetValue("ab");
                        //Set field value for UPC
                        SalesOrderItemAdd3109.UPC.SetValue("ab");
                        //Set field value for IncludeRetElementList
                        //May create more than one of these if needed
                        SalesOrderAddRq.IncludeRetElementList.Add("ab");
                }




                void WalkSalesOrderAddRs(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.rtSalesOrderAddRs)
                                                {
                                                        //upcast to more specific type here, this is safe because we checked with response.Type check above
                                                        ISalesOrderRet SalesOrderRet = (ISalesOrderRet)response.Detail;
                                                                WalkSalesOrderRet(SalesOrderRet);
                                                }
                                        }
                                }
                        }
                }




                void WalkSalesOrderRet(ISalesOrderRet SalesOrderRet)
                {
                        if (SalesOrderRet == null) return;
                        //Go through all the elements of ISalesOrderRet
                        //Get value of TxnID
                        if (SalesOrderRet.TxnID != null)
                        {
                                string TxnID3110 = (string)SalesOrderRet.TxnID.GetValue();
                        }
                        //Get value of TimeCreated
                        if (SalesOrderRet.TimeCreated != null)
                        {
                                DateTime TimeCreated3111 = (DateTime)SalesOrderRet.TimeCreated.GetValue();
                        }
                        //Get value of TimeModified
                        if (SalesOrderRet.TimeModified != null)
                        {
                                DateTime TimeModified3112 = (DateTime)SalesOrderRet.TimeModified.GetValue();
                        }
                        //Get value of Associate
                        if (SalesOrderRet.Associate != null)
                        {
                                string Associate3113 = (string)SalesOrderRet.Associate.GetValue();
                        }
                        //Get value of BalanceDue
                        if (SalesOrderRet.BalanceDue != null)
                        {
                                double BalanceDue3114 = (double)SalesOrderRet.BalanceDue.GetValue();
                        }
                        //Get value of Cashier
                        if (SalesOrderRet.Cashier != null)
                        {
                                string Cashier3115 = (string)SalesOrderRet.Cashier.GetValue();
                        }
                        //Get value of CustomerListID
                        if (SalesOrderRet.CustomerListID != null)
                        {
                                string CustomerListID3116 = (string)SalesOrderRet.CustomerListID.GetValue();
                        }
                        //Get value of DepositBalance
                        if (SalesOrderRet.DepositBalance != null)
                        {
                                double DepositBalance3117 = (double)SalesOrderRet.DepositBalance.GetValue();
                        }
                        //Get value of Discount
                        if (SalesOrderRet.Discount != null)
                        {
                                double Discount3118 = (double)SalesOrderRet.Discount.GetValue();
                        }
                        //Get value of DiscountPercent
                        if (SalesOrderRet.DiscountPercent != null)
                        {
                                float DiscountPercent3119 = (float)SalesOrderRet.DiscountPercent.GetValue();
                        }
                        //Get value of Instructions
                        if (SalesOrderRet.Instructions != null)
                        {
                                string Instructions3120 = (string)SalesOrderRet.Instructions.GetValue();
                        }
                        //Get value of ItemsCount
                        if (SalesOrderRet.ItemsCount != null)
                        {
                                int ItemsCount3121 = (int)SalesOrderRet.ItemsCount.GetValue();
                        }
                        //Get value of PriceLevelNumber
                        if (SalesOrderRet.PriceLevelNumber != null)
                        {
                                ENPriceLevelNumber PriceLevelNumber3122 = (ENPriceLevelNumber)SalesOrderRet.PriceLevelNumber.GetValue();
                        }
                        //Get value of PromoCode
                        if (SalesOrderRet.PromoCode != null)
                        {
                                string PromoCode3123 = (string)SalesOrderRet.PromoCode.GetValue();
                        }
                        //Get value of Qty
                        if (SalesOrderRet.Qty != null)
                        {
                                int Qty3124 = (int)SalesOrderRet.Qty.GetValue();
                        }
                        //Get value of SalesOrderNumber
                        if (SalesOrderRet.SalesOrderNumber != null)
                        {
                                string SalesOrderNumber3125 = (string)SalesOrderRet.SalesOrderNumber.GetValue();
                        }
                        //Get value of SalesOrderStatusDesc
                        if (SalesOrderRet.SalesOrderStatusDesc != null)
                        {
                                string SalesOrderStatusDesc3126 = (string)SalesOrderRet.SalesOrderStatusDesc.GetValue();
                        }
                        //Get value of SalesOrderType
                        if (SalesOrderRet.SalesOrderType != null)
                        {
                                ENSalesOrderType SalesOrderType3127 = (ENSalesOrderType)SalesOrderRet.SalesOrderType.GetValue();
                        }
                        //Get value of StoreExchangeStatus
                        if (SalesOrderRet.StoreExchangeStatus != null)
                        {
                                ENStoreExchangeStatus StoreExchangeStatus3128 = (ENStoreExchangeStatus)SalesOrderRet.StoreExchangeStatus.GetValue();
                        }
                        //Get value of Subtotal
                        if (SalesOrderRet.Subtotal != null)
                        {
                                double Subtotal3129 = (double)SalesOrderRet.Subtotal.GetValue();
                        }
                        //Get value of TaxAmount
                        if (SalesOrderRet.TaxAmount != null)
                        {
                                double TaxAmount3130 = (double)SalesOrderRet.TaxAmount.GetValue();
                        }
                        //Get value of TaxCategory
                        if (SalesOrderRet.TaxCategory != null)
                        {
                                string TaxCategory3131 = (string)SalesOrderRet.TaxCategory.GetValue();
                        }
                        //Get value of TaxPercentage
                        if (SalesOrderRet.TaxPercentage != null)
                        {
                                float TaxPercentage3132 = (float)SalesOrderRet.TaxPercentage.GetValue();
                        }
                        //Get value of Total
                        if (SalesOrderRet.Total != null)
                        {
                                double Total3133 = (double)SalesOrderRet.Total.GetValue();
                        }
                        //Get value of TxnDate
                        if (SalesOrderRet.TxnDate != null)
                        {
                                DateTime TxnDate3134 = (DateTime)SalesOrderRet.TxnDate.GetValue();
                        }
                        //Get value of UnfilledPercent
                        if (SalesOrderRet.UnfilledPercent != null)
                        {
                                float UnfilledPercent3135 = (float)SalesOrderRet.UnfilledPercent.GetValue();
                        }
                        if (SalesOrderRet.BillingInformation != null)
                        {
                                //Get value of City
                                if (SalesOrderRet.BillingInformation.City != null)
                                {
                                        string City3136 = (string)SalesOrderRet.BillingInformation.City.GetValue();
                                }
                                //Get value of CompanyName
                                if (SalesOrderRet.BillingInformation.CompanyName != null)
                                {
                                        string CompanyName3137 = (string)SalesOrderRet.BillingInformation.CompanyName.GetValue();
                                }
                                //Get value of Country
                                if (SalesOrderRet.BillingInformation.Country != null)
                                {
                                        string Country3138 = (string)SalesOrderRet.BillingInformation.Country.GetValue();
                                }
                                //Get value of FirstName
                                if (SalesOrderRet.BillingInformation.FirstName != null)
                                {
                                        string FirstName3139 = (string)SalesOrderRet.BillingInformation.FirstName.GetValue();
                                }
                                //Get value of LastName
                                if (SalesOrderRet.BillingInformation.LastName != null)
                                {
                                        string LastName3140 = (string)SalesOrderRet.BillingInformation.LastName.GetValue();
                                }
                                //Get value of Phone
                                if (SalesOrderRet.BillingInformation.Phone != null)
                                {
                                        string Phone3141 = (string)SalesOrderRet.BillingInformation.Phone.GetValue();
                                }
                                //Get value of Phone2
                                if (SalesOrderRet.BillingInformation.Phone2 != null)
                                {
                                        string Phone23142 = (string)SalesOrderRet.BillingInformation.Phone2.GetValue();
                                }
                                //Get value of Phone3
                                if (SalesOrderRet.BillingInformation.Phone3 != null)
                                {
                                        string Phone33143 = (string)SalesOrderRet.BillingInformation.Phone3.GetValue();
                                }
                                //Get value of Phone4
                                if (SalesOrderRet.BillingInformation.Phone4 != null)
                                {
                                        string Phone43144 = (string)SalesOrderRet.BillingInformation.Phone4.GetValue();
                                }
                                //Get value of PostalCode
                                if (SalesOrderRet.BillingInformation.PostalCode != null)
                                {
                                        string PostalCode3145 = (string)SalesOrderRet.BillingInformation.PostalCode.GetValue();
                                }
                                //Get value of Salutation
                                if (SalesOrderRet.BillingInformation.Salutation != null)
                                {
                                        string Salutation3146 = (string)SalesOrderRet.BillingInformation.Salutation.GetValue();
                                }
                                //Get value of State
                                if (SalesOrderRet.BillingInformation.State != null)
                                {
                                        string State3147 = (string)SalesOrderRet.BillingInformation.State.GetValue();
                                }
                                //Get value of Street
                                if (SalesOrderRet.BillingInformation.Street != null)
                                {
                                        string Street3148 = (string)SalesOrderRet.BillingInformation.Street.GetValue();
                                }
                                //Get value of Street2
                                if (SalesOrderRet.BillingInformation.Street2 != null)
                                {
                                        string Street23149 = (string)SalesOrderRet.BillingInformation.Street2.GetValue();
                                }
                                //Get value of WebNumber
                                if (SalesOrderRet.BillingInformation.WebNumber != null)
                                {
                                        string WebNumber3150 = (string)SalesOrderRet.BillingInformation.WebNumber.GetValue();
                                }
                        }
                        if (SalesOrderRet.ShippingInformation != null)
                        {
                                //Get value of AddressName
                                if (SalesOrderRet.ShippingInformation.AddressName != null)
                                {
                                        string AddressName3151 = (string)SalesOrderRet.ShippingInformation.AddressName.GetValue();
                                }
                                //Get value of City
                                if (SalesOrderRet.ShippingInformation.City != null)
                                {
                                        string City3152 = (string)SalesOrderRet.ShippingInformation.City.GetValue();
                                }
                                //Get value of CompanyName
                                if (SalesOrderRet.ShippingInformation.CompanyName != null)
                                {
                                        string CompanyName3153 = (string)SalesOrderRet.ShippingInformation.CompanyName.GetValue();
                                }
                                //Get value of Country
                                if (SalesOrderRet.ShippingInformation.Country != null)
                                {
                                        string Country3154 = (string)SalesOrderRet.ShippingInformation.Country.GetValue();
                                }
                                //Get value of FullName
                                if (SalesOrderRet.ShippingInformation.FullName != null)
                                {
                                        string FullName3155 = (string)SalesOrderRet.ShippingInformation.FullName.GetValue();
                                }
                                //Get value of Phone
                                if (SalesOrderRet.ShippingInformation.Phone != null)
                                {
                                        string Phone3156 = (string)SalesOrderRet.ShippingInformation.Phone.GetValue();
                                }
                                //Get value of Phone2
                                if (SalesOrderRet.ShippingInformation.Phone2 != null)
                                {
                                        string Phone23157 = (string)SalesOrderRet.ShippingInformation.Phone2.GetValue();
                                }
                                //Get value of Phone3
                                if (SalesOrderRet.ShippingInformation.Phone3 != null)
                                {
                                        string Phone33158 = (string)SalesOrderRet.ShippingInformation.Phone3.GetValue();
                                }
                                //Get value of Phone4
                                if (SalesOrderRet.ShippingInformation.Phone4 != null)
                                {
                                        string Phone43159 = (string)SalesOrderRet.ShippingInformation.Phone4.GetValue();
                                }
                                //Get value of PostalCode
                                if (SalesOrderRet.ShippingInformation.PostalCode != null)
                                {
                                        string PostalCode3160 = (string)SalesOrderRet.ShippingInformation.PostalCode.GetValue();
                                }
                                //Get value of ShipBy
                                if (SalesOrderRet.ShippingInformation.ShipBy != null)
                                {
                                        string ShipBy3161 = (string)SalesOrderRet.ShippingInformation.ShipBy.GetValue();
                                }
                                //Get value of Shipping
                                if (SalesOrderRet.ShippingInformation.Shipping != null)
                                {
                                        double Shipping3162 = (double)SalesOrderRet.ShippingInformation.Shipping.GetValue();
                                }
                                //Get value of State
                                if (SalesOrderRet.ShippingInformation.State != null)
                                {
                                        string State3163 = (string)SalesOrderRet.ShippingInformation.State.GetValue();
                                }
                                //Get value of Street
                                if (SalesOrderRet.ShippingInformation.Street != null)
                                {
                                        string Street3164 = (string)SalesOrderRet.ShippingInformation.Street.GetValue();
                                }
                                //Get value of Street2
                                if (SalesOrderRet.ShippingInformation.Street2 != null)
                                {
                                        string Street23165 = (string)SalesOrderRet.ShippingInformation.Street2.GetValue();
                                }
                        }
                        if (SalesOrderRet.SalesOrderItemRetList != null)
                        {
                                for (int i3166 = 0; i3166 < SalesOrderRet.SalesOrderItemRetList.Count; i3166++)
                                {
                                        ISalesOrderItemRet SalesOrderItemRet = SalesOrderRet.SalesOrderItemRetList.GetAt(i3166);
                                        //Get value of ListID
                                        if (SalesOrderItemRet.ListID != null)
                                        {
                                                string ListID3167 = (string)SalesOrderItemRet.ListID.GetValue();
                                        }
                                        //Get value of TxnLineID
                                        if (SalesOrderItemRet.TxnLineID != null)
                                        {
                                                int TxnLineID3168 = (int)SalesOrderItemRet.TxnLineID.GetValue();
                                        }
                                        //Get value of ALU
                                        if (SalesOrderItemRet.ALU != null)
                                        {
                                                string ALU3169 = (string)SalesOrderItemRet.ALU.GetValue();
                                        }
                                        //Get value of Associate
                                        if (SalesOrderItemRet.Associate != null)
                                        {
                                                string Associate3170 = (string)SalesOrderItemRet.Associate.GetValue();
                                        }
                                        //Get value of Attribute
                                        if (SalesOrderItemRet.Attribute != null)
                                        {
                                                string Attribute3171 = (string)SalesOrderItemRet.Attribute.GetValue();
                                        }
                                        //Get value of Commission
                                        if (SalesOrderItemRet.Commission != null)
                                        {
                                                double Commission3172 = (double)SalesOrderItemRet.Commission.GetValue();
                                        }
                                        //Get value of Desc1
                                        if (SalesOrderItemRet.Desc1 != null)
                                        {
                                                string Desc13173 = (string)SalesOrderItemRet.Desc1.GetValue();
                                        }
                                        //Get value of Desc2
                                        if (SalesOrderItemRet.Desc2 != null)
                                        {
                                                string Desc23174 = (string)SalesOrderItemRet.Desc2.GetValue();
                                        }
                                        //Get value of Discount
                                        if (SalesOrderItemRet.Discount != null)
                                        {
                                                double Discount3175 = (double)SalesOrderItemRet.Discount.GetValue();
                                        }
                                        //Get value of DiscountPercent
                                        if (SalesOrderItemRet.DiscountPercent != null)
                                        {
                                                float DiscountPercent3176 = (float)SalesOrderItemRet.DiscountPercent.GetValue();
                                        }
                                        //Get value of DiscountType
                                        if (SalesOrderItemRet.DiscountType != null)
                                        {
                                                string DiscountType3177 = (string)SalesOrderItemRet.DiscountType.GetValue();
                                        }
                                        //Get value of DiscountSource
                                        if (SalesOrderItemRet.DiscountSource != null)
                                        {
                                                ENDiscountSource DiscountSource3178 = (ENDiscountSource)SalesOrderItemRet.DiscountSource.GetValue();
                                        }
                                        //Get value of ExtendedPrice
                                        if (SalesOrderItemRet.ExtendedPrice != null)
                                        {
                                                double ExtendedPrice3179 = (double)SalesOrderItemRet.ExtendedPrice.GetValue();
                                        }
                                        //Get value of ExtendedTax
                                        if (SalesOrderItemRet.ExtendedTax != null)
                                        {
                                                double ExtendedTax3180 = (double)SalesOrderItemRet.ExtendedTax.GetValue();
                                        }
                                        //Get value of ItemNumber
                                        if (SalesOrderItemRet.ItemNumber != null)
                                        {
                                                int ItemNumber3181 = (int)SalesOrderItemRet.ItemNumber.GetValue();
                                        }
                                        //Get value of NumberOfBaseUnits
                                        if (SalesOrderItemRet.NumberOfBaseUnits != null)
                                        {
                                                int NumberOfBaseUnits3182 = (int)SalesOrderItemRet.NumberOfBaseUnits.GetValue();
                                        }
                                        //Get value of Price
                                        if (SalesOrderItemRet.Price != null)
                                        {
                                                double Price3183 = (double)SalesOrderItemRet.Price.GetValue();
                                        }
                                        //Get value of PriceLevelNumber
                                        if (SalesOrderItemRet.PriceLevelNumber != null)
                                        {
                                                ENPriceLevelNumber PriceLevelNumber3184 = (ENPriceLevelNumber)SalesOrderItemRet.PriceLevelNumber.GetValue();
                                        }
                                        //Get value of Qty
                                        if (SalesOrderItemRet.Qty != null)
                                        {
                                                int Qty3185 = (int)SalesOrderItemRet.Qty.GetValue();
                                        }
                                        //Get value of QtySold
                                        if (SalesOrderItemRet.QtySold != null)
                                        {
                                                int QtySold3186 = (int)SalesOrderItemRet.QtySold.GetValue();
                                        }
                                        //Get value of SerialNumber
                                        if (SalesOrderItemRet.SerialNumber != null)
                                        {
                                                string SerialNumber3187 = (string)SalesOrderItemRet.SerialNumber.GetValue();
                                        }
                                        //Get value of Size
                                        if (SalesOrderItemRet.Size != null)
                                        {
                                                string Size3188 = (string)SalesOrderItemRet.Size.GetValue();
                                        }
                                        //Get value of TaxAmount
                                        if (SalesOrderItemRet.TaxAmount != null)
                                        {
                                                double TaxAmount3189 = (double)SalesOrderItemRet.TaxAmount.GetValue();
                                        }
                                        //Get value of TaxCode
                                        if (SalesOrderItemRet.TaxCode != null)
                                        {
                                                string TaxCode3190 = (string)SalesOrderItemRet.TaxCode.GetValue();
                                        }
                                        //Get value of TaxPercentage
                                        if (SalesOrderItemRet.TaxPercentage != null)
                                        {
                                                float TaxPercentage3191 = (float)SalesOrderItemRet.TaxPercentage.GetValue();
                                        }
                                        //Get value of UnitOfMeasure
                                        if (SalesOrderItemRet.UnitOfMeasure != null)
                                        {
                                                string UnitOfMeasure3192 = (string)SalesOrderItemRet.UnitOfMeasure.GetValue();
                                        }
                                        //Get value of UPC
                                        if (SalesOrderItemRet.UPC != null)
                                        {
                                                string UPC3193 = (string)SalesOrderItemRet.UPC.GetValue();
                                        }
                                        //Get value of WebDesc
                                        if (SalesOrderItemRet.WebDesc != null)
                                        {
                                                string WebDesc3194 = (string)SalesOrderItemRet.WebDesc.GetValue();
                                        }
                                        //Get value of Manufacturer
                                        if (SalesOrderItemRet.Manufacturer != null)
                                        {
                                                string Manufacturer3195 = (string)SalesOrderItemRet.Manufacturer.GetValue();
                                        }
                                        //Get value of Weight
                                        if (SalesOrderItemRet.Weight != null)
                                        {
                                                float Weight3196 = (float)SalesOrderItemRet.Weight.GetValue();
                                        }
                                        //Get value of WebSKU
                                        if (SalesOrderItemRet.WebSKU != null)
                                        {
                                                string WebSKU3197 = (string)SalesOrderItemRet.WebSKU.GetValue();
                                        }
                                }
                        }
                        if (SalesOrderRet.DataExtRetList != null)
                        {
                                for (int i3198 = 0; i3198 < SalesOrderRet.DataExtRetList.Count; i3198++)
                                {
                                        IDataExtRet DataExtRet = SalesOrderRet.DataExtRetList.GetAt(i3198);
                                        //Get value of OwnerID
                                        string OwnerID3199 = (string)DataExtRet.OwnerID.GetValue();
                                        //Get value of DataExtName
                                        string DataExtName3200 = (string)DataExtRet.DataExtName.GetValue();
                                        //Get value of DataExtType
                                        ENDataExtType DataExtType3201 = (ENDataExtType)DataExtRet.DataExtType.GetValue();
                                        //Get value of DataExtValue
                                        string DataExtValue3202 = (string)DataExtRet.DataExtValue.GetValue();
                                }
                        }
                }




        }
}