QBXML Query for 50000 customers does not work - enterprise

I installed QuickBooks Enterprise 13.0 Trial.
Imported 50000 customers using the Excel template it provided
Downloaded QB SDKTest.exe from
[https://member.developer.intuit.com/qbsdk-current/samples/readme.html#SDKTest (VB) (qbxml) (desktop)][1]
I have a simple query to request customers
<?xml version="1.0" ?>
<!DOCTYPE QBXML PUBLIC '-//INTUIT//DTD QBXML QBD 1.0//EN' >
<QBXML>
<QBXMLMsgsRq onError="stopOnError">
<CustomerQueryRq requestID = "Customers">
<ActiveStatus>All</ActiveStatus>
</CustomerQueryRq>
</QBXMLMsgsRq>
</QBXML>
It fails with the following response
<CustomerQueryRs statusMessage="There has been an internal error when processing the request." statusSeverity="Error" statusCode="1000" requestID="Customers"/>
The test was OK with 40000 customers. Did I reach a limit ? I expected to be able to work with 100000 customers

50K records are quite huge. So,you can try using 'Iterators' for this.
Ref - https://member.developer.intuit.com/qbSDK-current/doc/PDF/QBSDK_ProGuide.pdf
(Pg - 119)
Please let me know if it works.
You can refer the following link for object limits
http://support.quickbooks.intuit.com/support/articles/INF12412
Thanks

Related

Prestahop api 1.7 update order webservice error

I'm triyng to update an order status & tranking number on prestashop 1.7.6.0 via webservice but if the new order status has to send email to customer I get error 500.
Cases:
new order status id 5 send email > error 500 (status changed, no mail sent, other changes like track nr ignored)
new order status id 4 doesn't send email > code 200 (all ok)
BUT if I try changing manually in back office to order status id 5 all is working, status changed and mail sent.
I do all my test on Postman as these information will be changed with a call from an external service for the management of shipment, how can I debug this problem?
End Point: www.domain.ext/api/orders/10705
xml sent
<?xml version="1.0" encoding="UTF-8"?>
<prestashop xmlns:xlink="http://www.w3.org/1999/xlink">
<order>
<id>10705</id>
<id_address_delivery xlink:href="https://www.domain.ext/api/addresses/11307">11307</id_address_delivery>
<id_address_invoice xlink:href="https://www.domain.ext/api/addresses/11307">11307</id_address_invoice>
<id_cart xlink:href="https://www.domain.ext/api/carts/11918">11918</id_cart>
<id_currency xlink:href="https://www.domain.ext/api/currencies/2">2</id_currency>
<id_lang xlink:href="https://www.domain.ext/api/languages/2">2</id_lang>
<id_customer xlink:href="https://www.domain.ext/api/customers/10806">10806</id_customer>
<id_carrier xlink:href="https://www.domain.ext/api/carriers/5">5</id_carrier>
<current_state xlink:href="https://www.domain.ext/api/order_states/5">5</current_state>
<module>codwfeeplus</module>
<invoice_number>0</invoice_number>
<invoice_date>2022-05-10 15:32:41</invoice_date>
<delivery_number>9050</delivery_number>
<delivery_date>2022-05-17 15:16:33</delivery_date>
<valid>1</valid>
<date_add>2022-05-10 15:32:40</date_add>
<date_upd>2022-05-17 15:23:53</date_upd>
<shipping_number notFilterable="true">1592222222</shipping_number>
<id_shop_group>1</id_shop_group>
<id_shop>1</id_shop>
<secure_key>044248612d0019be079f165138d46e85</secure_key>
<payment>CONTRASSEGNO</payment>
<recyclable>0</recyclable>
<gift>0</gift>
<gift_message/>
<mobile_theme>0</mobile_theme>
<total_discounts>0.000000</total_discounts>
<total_discounts_tax_incl>0.000000</total_discounts_tax_incl>
<total_discounts_tax_excl>0.000000</total_discounts_tax_excl>
<total_paid>15.500000</total_paid>
<total_paid_tax_incl>15.500000</total_paid_tax_incl>
<total_paid_tax_excl>15.500000</total_paid_tax_excl>
<total_paid_real>15.500000</total_paid_real>
<total_products>9.500000</total_products>
<total_products_wt>9.500000</total_products_wt>
<total_shipping>6.000000</total_shipping>
<total_shipping_tax_incl>6.000000</total_shipping_tax_incl>
<total_shipping_tax_excl>6.000000</total_shipping_tax_excl>
<carrier_tax_rate>0.000</carrier_tax_rate>
<total_wrapping>0.000000</total_wrapping>
<total_wrapping_tax_incl>0.000000</total_wrapping_tax_incl>
<total_wrapping_tax_excl>0.000000</total_wrapping_tax_excl>
<round_mode>2</round_mode>
<round_type>1</round_type>
<conversion_rate>1.000000</conversion_rate>
<reference>10705</reference>
<associations>
<order_rows nodeType="order_row" virtualEntity="true">
<order_row>
<id>10913</id>
<product_id xlink:href="https://www.domain.ext/api/products/203975">203975</product_id>
<product_attribute_id>0</product_attribute_id>
<product_quantity>1</product_quantity>
<product_name>xxxxxxxxxxxxxxxxxxxx</product_name>
<product_reference>12859</product_reference>
<product_ean13/>
<product_isbn/>
<product_upc/>
<product_price>10.000000</product_price>
<id_customization xlink:href="https://www.domain.ext/api/customizations/0">0</id_customization>
<unit_price_tax_incl>9.500000</unit_price_tax_incl>
<unit_price_tax_excl>9.500000</unit_price_tax_excl>
</order_row>
</order_rows>
</associations>
</order>
</prestashop>
I found it's a Prestashop 1.7.6 WS bug
https://github.com/PrestaShop/PrestaShop/issues/14842
Solved here https://github.com/PrestaShop/PrestaShop/pull/14899

Apigee Spike Arrest Rate Limit Application

I am an Apigee newbie.
I am trying to understand the Spike Arrest policy.
I am looking at this documentation:
http://apigee.com/docs/api-services/content/shield-apis-using-spikearrest
http://apigee.com/docs/api-services/content/policy-attachment-and-enforcement
The one thing I cannot understand for certain is if, when the Spike Arrest Policy is applied to an ApiProxy, whether the rate limit is applied per Key/Client Dev Application, or is it shared between all Keys/Client Dev Applications?
For example if we have the following config:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<SpikeArrest async="false" continueOnError="false" enabled="true" name="spikearrest-1">
<DisplayName>SpikeArrest-1</DisplayName>
<FaultRules/>
<Properties/>
<Identifier ref="request.header.some-header-name"/>
<MessageWeight ref="request.header.weight"/>
<Rate>50ps</Rate>
</SpikeArrest>
And Client Dev Apps:
1. DevApp1
2. DevApp2
Is the 50ps rate limit shared between DevApp1 and DevApp2, or do DevApp1 and DevApp2 get 50ps rate limit each?
Thanks,
You can use any of the predefined variables:
http://apigee.com/docs/api-services/api/variables-reference
The variable that is probably the most commonly used for Spike Arrest is client.ip.
Edge will make all elements of a request message available. If your clients are adding a client_id (aka API key) to a request as a query parameter, for example api.call.com?client_id=u34r8ur, then you would set the variable in your Spike Arrest Identifier to be:
<Identifier ref="request.queryparam.client_id"/>
Or if it is in an HTTP header:
<Identifier ref="request.header.client_id"/>
Hope that helps!
Its per app identified by your identifier.

QuickBooks API Invoice <DueDate> tag

I wrote a custom integration between a SQL Server based system and QuickBooks many years ago which automatically creates invoices in QuickBooks from data in SQL Server. The XML string to create the invoices is quite simple:
<QBXML>
<QBXMLMsgsRq newMessageSetID="10025027" onError="continueOnError">
<InvoiceAddRq requestID="10025027">
<InvoiceAdd>
<CustomerRef>
<FullName>Acme Corporation, Inc.</FullName>
</CustomerRef>
<TxnDate>2014-02-05</TxnDate>
<RefNumber>124</RefNumber>
<ShipAddress>
<Addr1>16-01 16th Avenue, Dock 3</Addr1>
<Addr2/>
<Addr3/>
<Addr4/>
<City>Astoria</City>
<State>NY</State>
<PostalCode>11105</PostalCode>
</ShipAddress>
<PONumber> 6028019</PONumber>
<SalesRepRef>
<FullName>H</FullName>
</SalesRepRef>
<Memo>1401106</Memo>
<InvoiceLineAdd>
<ItemRef>
<FullName>SALES</FullName>
</ItemRef>
<Desc> Semi Annual Sampling - M1; Day 1</Desc>
<Rate>5580</Rate>
</InvoiceLineAdd>
</InvoiceAdd>
</InvoiceAddRq>
</QBXMLMsgsRq>
</QBXML>
The SQL Server based system actually prints detailed invoices which are delivered to the customer, QuickBooks is only used to keep track of account balances and payments. I am now trying to add the DueDate to the invoice by adding the following XML tag:
<DueDate>2014-03-07</DueDate>
I have tried to place this tag in several places in the XML string but QuickBooks rejects the request with the following error:
"QuickBooks found an error when parsing the provided XML text stream."
The bookkeeper is able to manually change the due date on the invoices after they are created, but for some reason I can't specify the due date when creating the invoices with the QuickBooks API. Any Ideas?
Thanks.
A few things to note here:
This is an incomplete qbXML request. There should be an XML and qbXML header tag as the very first two lines, and you're missing them. They should look like this:
<?xml version="1.0" encoding="utf-8"?>
<?qbxml version="13.0"?>
That version="..." bit should be set to something your version of QuickBooks supports (generally your QuickBooks version - 1, e.g. QuickBooks 2012 supports qbXML version 11.0, QuickBooks 2013 supports qbXML version 12.0, QuickBooks 2014 supports qbXML version 13.0, etc.)
Your post doesn't even show the DueDate field in the XML, so it's a little hard to tell what's actually wrong, but...
Keep in mind that the order of tags in qbXML is important. So if the OSR shows the DueDate field after PONumber, you better make darn sure to put it after the PONumber field. If you put it before it, you're going to get exactly the error you described.
Did you use the OSR to find the correct place? There shouldn't be any guess-work here - it tells you exactly where to put it.
...
<State>NY</State>
<PostalCode>11105</PostalCode>
</ShipAddress>
<PONumber> 6028019</PONumber>
<DueDate>2014-02-12</DueDate
<SalesRepRef>
<FullName>H</FullName>
</SalesRepRef>
<Memo>1401106</Memo>
...
I think the missing header tags were the problem. (I also added the <TermsRef> tag)
Here is the XML that did the trick:
<?xml version="1.0" encoding="utf-8"?>
<?qbxml version="11.0"?>
<QBXML>
<QBXMLMsgsRq newMessageSetID="10025079" onError="continueOnError">
<InvoiceAddRq requestID="10025079">
<InvoiceAdd>
<CustomerRef>
<FullName>Acme Corporation</FullName>
</CustomerRef>
<TxnDate>2014-02-13</TxnDate>
<RefNumber>168</RefNumber>
<ShipAddress>
<Addr1>Acme Corporation</Addr1>
<Addr2>1587-43 Veteran's Highway</Addr2>
<Addr3/>
<Addr4/>
<City>Islandia</City>
<State>NY</State>
<PostalCode>11749</PostalCode>
</ShipAddress>
<PONumber>5A873929B</PONumber>
<TermsRef>
<FullName>30 Days</FullName>
</TermsRef>
<DueDate>2014-03-15</DueDate>
<SalesRepRef>
<FullName>H</FullName>
</SalesRepRef>
<Memo>1402016</Memo>
<InvoiceLineAdd>
<ItemRef>
<FullName>SALES</FullName>
</ItemRef>
<Desc> OBAR Auto Parts, 279 South Street, Oyster Bay, NY 11771</Desc>
<Rate>1760</Rate>
</InvoiceLineAdd>
</InvoiceAdd>
</InvoiceAddRq>
</QBXMLMsgsRq>
</QBXML>
Thank you again!

QBMS (Quickbooks Merchant Services) Scheduled Billing doesn't show up in Dashboard

I have added a wallet and scheduled billing for the future, I receive the scheduled billing ID and a success message, but when I go to recurring payments (this is all in the sandbox -- ptc), I don't see anything.
This is my request:
POST https://webmerchantaccount.ptc.quickbooks.com/j/AppGateway HTTP/1.1
Content-Type: application/x-qbmsxml
Content-Length: 770
<?xml version="1.0" encoding="utf-8"?>
<?qbmsxml version="4.5"?>
<QBMSXML>
<SignonMsgsRq>
<SignonTicketRq>
<ClientDateTime>2012-01-30T17:03:42</ClientDateTime>
<SessionTicket>***********************</SessionTicket>
</SignonTicketRq>
</SignonMsgsRq>
<QBMSXMLMsgsRq>
<CustomerScheduledBillingAddRq>
<CustomerID>1234721</CustomerID>
<WalletEntryID>102142113311000320665100</WalletEntryID>
<PaymentType>CreditCard</PaymentType>
<Amount>1.06</Amount>
<SalesTaxAmount>0.06</SalesTaxAmount>
<StartDate>2012-01-31</StartDate>
<FrequencyExpression>0 0 0 1 * ?</FrequencyExpression>
<ScheduledBillingStatus>Active</ScheduledBillingStatus>
</CustomerScheduledBillingAddRq>
</QBMSXMLMsgsRq>
</QBMSXML>
Then I get this response:
<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE QBMSXML PUBLIC "-//INTUIT//DTD QBMSXML QBMS 4.5//EN" "http://webmerchantaccount.ptc.quickbooks.com/dtds/qbmsxml45.dtd">
<QBMSXML>
<SignonMsgsRs>
<SignonTicketRs statusCode="0" statusSeverity="INFO">
<ServerDateTime>2012-01-30T23:07:46</ServerDateTime>
<SessionTicket>***********************</SessionTicket>
</SignonTicketRs>
</SignonMsgsRs>
<QBMSXMLMsgsRs>
<CustomerScheduledBillingAddRs statusCode="0" statusMessage="Status OK" statusSeverity="INFO">
<ScheduledBillingID>5225</ScheduledBillingID>
</CustomerScheduledBillingAddRs>
</QBMSXMLMsgsRs>
</QBMSXML>
Can anyone tell me why I can't see this in the dashboard? Or where I should see it?
Thanks!
If you're using a TEST/PTC merchant account, the transactions won't show up in the GUI dashboard. That's just how Intuit's system works. :-(

ebay API GetOrders shows wrong result

My objective is to list user's transactions (both sales and purchases).
I am using GetOrders and specifying a time range to and the call executes successfully but returns 0 transactions, whereas the user I am querying for has multiple purchases on their account.
Let me get a bit more specific. Here is the code that I am using:
<GetOrdersRequest xmlns="urn:ebay:apis:eBLBaseComponents">
<RequesterCredentials>
<eBayAuthToken>......</eBayAuthToken>
</RequesterCredentials>
<CreateTimeFrom>2009-04-05T05:02:03</CreateTimeFrom>
<CreateTimeTo>2011-12-23T00:02:44</CreateTimeTo>
</GetOrdersRequest>​
And even using the API test tool (Hence, the problem is not language specific) it delivers 0 results:
<GetOrdersResponse xmlns="urn:ebay:apis:eBLBaseComponents">
<Timestamp>2011-12-23T00:05:32.753Z</Timestamp>
<Ack>Success</Ack>
<Version>753</Version>
<Build>E753_CORE_BUNDLED_14214525_R1</Build>
<PaginationResult>
<TotalNumberOfPages>0</TotalNumberOfPages>
<TotalNumberOfEntries>0</TotalNumberOfEntries>
</PaginationResult>
<HasMoreOrders>false</HasMoreOrders>
<OrderArray />
<OrdersPerPage>100</OrdersPerPage>
<PageNumber>1</PageNumber>
<ReturnedOrderCountActual>0</ReturnedOrderCountActual>
</GetOrdersResponse>​`
The user I am querying for has 2 recent purchases dated at:
12/08/11
11/18/11
What am I missing here? I am supplying the time range and the call executes properly, yet it finds 0 results. I'd very much appreciate your help.
Try including the OrderRole, ie. Buyer or Seller and OrderStatus of either Active or Completed. Something like the following will return completed orders for items purchased by the caller.
<GetOrdersRequest xmlns="urn:ebay:apis:eBLBaseComponents">
<DetailLevel>ReturnAll</DetailLevel>
<MessageID>cff8bc1c-0475-4d64-a8a5-02757aafd937</MessageID>
<Version>747</Version>
<CreateTimeFrom>2012-01-07T14:05:24.6353866Z</CreateTimeFrom>
<CreateTimeTo>2012-02-07T14:05:24.6353866Z</CreateTimeTo>
<OrderRole>Buyer</OrderRole>
<OrderStatus>Completed</OrderStatus>
</GetOrdersRequest>
For more details, have a look here.
The maximum date range that may be specified is 30 days