consolibyte / quickbooks-php Goto Github PK
View Code? Open in Web Editor NEWQuickBooks Integration for PHP
License: Eclipse Public License 1.0
QuickBooks Integration for PHP
License: Eclipse Public License 1.0
It appears that the function that allows you to truncate a string is only working on some fields.
Ones we have found so far.
Company Name:
A very Long Company Name that Is Above 51 Letters Will Break Imports
Company Phone Number:
Example: 0800 000 000 ext456
This causes imports to break because QBO only allows a set amount of characters for fields. If the truncate worked then this would be resolved.
I still don't feel it's the correct way to work as some companies will only pay an invoice if the company name is exactly correct.
anyhoo... please fix it as it's causing us a headache!
The 3.0 version isn't shown on https://packagist.org/packages/consolibyte/quickbooks . Maybe repo's after commit hook that submits repo changes to Packagist is broken or tag name isn't in supported format.
preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead
\vendor\consolibyte\quickbooks\QuickBooks\Cast.php:530
$string = preg_replace(
"/([\360-\367])([\200-\277])([\200-\277])([\200-\277])/e",
"'&#'.((ord('\\1')-240)*262144+(ord('\\2')-128)*4096+(ord('\\3')-128)*64+(ord('\\4')-128)).';'", $string);
In QuickBooks it's possible to enable sandbox mode. In that case URL for API is a bit different (the sandbox-
is added in front of domain it seems.
Please allow for setting base url externally instead of hardcoding it in here: https://github.com/consolibyte/quickbooks-php/blob/master/QuickBooks/IPP.php#L993
The delete method is unavailable on the Vendor
and Bill
object.
Is this the right place to report possible enhancements?
I'm trying to import inventory sites in my application, but there isn't a constant defined for that action. Is this something that can be done currently?
Is support missing for this type of request?
http://www.consolibyte.com/docs/index.php/QbXML_for_Reporting
I was not able to locate the proper action for this.
Thanks!
/
-class QuickBooks_Object_QBXML_Bill_ItemLine extends QuickBooks_QBXML_Object
+class QuickBooks_QBXML_Object_Bill_ItemLine extends QuickBooks_QBXML_Object
{
/*
* Create a new QuickBooks_Object_Check_ItemLine object
Thanks!
Is there any way to get the attachment for an item for the desktop version of QB (14.0)?
I should mention I'm using the web connector.
The recent v3 tag is not present on the packagist repo: https://packagist.org/packages/consolibyte/quickbooks
Could you push it? Or tag a 3.1 version? Currently I have to use dev-master.
20151104.22:39:20 UTC : QBWebConnector.SOAPWebService.do_receiveResponseXML() : wcTicket="2a0185a1-95c8-a234-f927-c8705d69376b"
20151104.22:39:20 UTC : QBWebConnector.SOAPWebService.do_receiveResponseXML() : response =
20151104.22:39:20 UTC : QBWebConnector.SOAPWebService.do_receiveResponseXML() : XML dump follows: -
<?xml version="1.0" ?>
<QBXML>
<QBXMLMsgsRs>
<CustomerQueryRs requestID="241" statusCode="0" statusSeverity="Info" statusMessage="Status OK" iteratorRemainingCount="0" iteratorID="{84ff5521-205d-46b6-9d44-7b6b9acb7165}">
<CustomerRet>
<ListID>80000003-1446676743</ListID>
<TimeCreated>2015-11-04T14:39:03-08:00</TimeCreated>
<TimeModified>2015-11-04T14:39:03-08:00</TimeModified>
<EditSequence>1446676743</EditSequence>
<Name>abcde</Name>
<FullName>abcde</FullName>
<IsActive>true</IsActive>
<Sublevel>0</Sublevel>
<Balance>0.00</Balance>
<TotalBalance>0.00</TotalBalance>
<JobStatus>None</JobStatus>
<PreferredDeliveryMethod>None</PreferredDeliveryMethod>
</CustomerRet>
<CustomerRet>
<ListID>80000001-1446673838</ListID>
<TimeCreated>2015-11-04T13:50:38-08:00</TimeCreated>
<TimeModified>2015-11-04T14:39:10-08:00</TimeModified>
<EditSequence>1446676750</EditSequence>
<Name>Test Cust</Name>
<FullName>Test Cust</FullName>
<IsActive>true</IsActive>
<Sublevel>0</Sublevel>
<CompanyName>aaaa</CompanyName>
<BillAddress>
<Addr1>aaaa</Addr1>
</BillAddress>
<BillAddressBlock>
<Addr1>aaaa</Addr1>
</BillAddressBlock>
<Balance>123.00</Balance>
<TotalBalance>123.00</TotalBalance>
<JobStatus>None</JobStatus>
<PreferredDeliveryMethod>None</PreferredDeliveryMethod>
</CustomerRet>
</CustomerQueryRs>
</QBXMLMsgsRs>
</QBXML>
20151104.22:39:20 UTC : QBWebConnector.SOAPWebService.do_receiveResponseXML() : hresult=""
20151104.22:39:20 UTC : QBWebConnector.SOAPWebService.do_receiveResponseXML() : message=""
20151104.22:39:20 UTC : QBWebConnector.SOAPWebService.do_receiveResponseXML() : QBWC1042: ReceiveResponseXML failed
Error message: Response is not well-formed XML.
This is the error I get in the web connector log. I think its because it doesn't have in the 2nd tag.
I use QB v3 to add a customer with name has unicode characters, for example: "Ngụy Như Kon Tum". After imported successfully, customer name will be "Ngåy Nh° Kon Tum".
How can I fix this?
Best Regards.
I could not find any method to delete a line from an invoice, any ideas ?
I'm using Quickbooks Integration Lib https://github.com/consolibyte/quickbooks-php, it fulfills all of my requirement but there are no examples for this library to upload attachments to QuickBooks,
somebody has already raise an issue at http://consolibyte.com/forum/viewtopic.php?id=8261 , but no solution for this.
But I've tried a bit by setting via some curl options like below to upload files
Array
(
[47] => 1
[10015] =>
--d6c3e579ddbcf4333df36c1efc0d60ce
Content-Disposition: form-data; name="file_metadata_0"
Content-Type: application/xml; charset=UTF-8
Content-Transfer-Encoding: 8bit
<?xml version="1.0" encoding="UTF-8"?>
<ns0:Attachable xmlns:ns0="http://schema.intuit.com/finance/v3">
<ns0:AttachableRef>
<ns0:EntityRef type="Invoice">190</ns0:EntityRef>
</ns0:AttachableRef>
<ns0:FileName>7374.jpg</ns0:FileName>
<ns0:Category>Image</ns0:Category>
<ns0:Tag>Tag_7374</ns0:Tag>
</ns0:Attachable>
--d6c3e579ddbcf4333df36c1efc0d60ce
Content-Disposition: form-data; name="file_content_0"; filename="7374.jpg"
Content-Type: image/jpeg
Content-Transfer-Encoding: base64
/9j/4AAQSkZJRgABAQEAlgCWAAD/4ge4SUNDX1BST0ZJTEUAAQEAAAeoYXBwbAIgAABtbnRyUkdC
IFhZWiAH2QACABkACwAaAAthY3NwQVBQTAAAAABhcHBsAAAAAAAAAAAAAAAAAAAAAAAA9tYAAQAA
AADTLWFwcGwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAtk
ZXNjAAABCAAAAG9kc2NtAAABeAAABWxjcHJ0AAAG5AAAADh3dHB0AAAHHAAAABRyWFlaAAAHMAAA
ABRnWFlaAAAHRAAAABRiWFlaAAAHWAAAABRyVFJDAAAHbAAAAA5jaGFkAAAHfAAAACxiVFJDAAAH
bAAAAA5nVFJDAAAHbAAAAA5kZXNjAAAAAAAAABRHZW5lcmljIFJHQiBQcm9maWxlAAAAAAAAAAAA
AAAUR2VuZXJpYyBSR0IgUHJvZmlsZQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAbWx1YwAAAAAAAAAeAAAADHNrU0sAAAAoAAABeGhySFIAAAAoAAABoGNh
RVMAAAAkAAAByHB0QlIAAAAmAAAB7HVrVUEAAAAqAAACEmZyRlUAAAAoAAACPHpoVFcAAAAWAAAC
ZGl0SVQAAAAoAAACem5iTk8AAAAmAAAComtvS1IAAAAWAAACyGNzQ1oAAAAiAAAC3mhlSUwAAAAe
AAADAGRlREUAAAAsAAADHmh1SFUAAAAoAAADSnN2U0UAAAAmAAAConpoQ04AAAAWAAADcmphSlAA
AAAaAAADiHJvUk8AAAAkAAADomVsR1IAAAAiAAADxnB0UE8AAAAmAAAD6G5sTkwAAAAoAAAEDmVz
RVMAAAAmAAAD6HRoVEgAAAAkAAAENnRyVFIAAAAiAAAEWmZpRkkAAAAoAAAEfHBsUEwAAAAsAAAE
pHJ1UlUAAAAiAAAE0GFyRUcAAAAmAAAE8mVuVVMAAAAmAAAFGGRhREsAAAAuAAAFPgBWAWEAZQBv
AGIAZQBjAG4A/QAgAFIARwBCACAAcAByAG8AZgBpAGwARwBlAG4AZQByAGkBDQBrAGkAIABSAEcA
QgAgAHAAcgBvAGYAaQBsAFAAZQByAGYAaQBsACAAUgBHAEIAIABnAGUAbgDoAHIAaQBjAFAAZQBy
AGYAaQBsACAAUgBHAEIAIABHAGUAbgDpAHIAaQBjAG8EFwQwBDMEMAQ7BEwEPQQ4BDkAIAQ/BEAE
PgREBDAEOQQ7ACAAUgBHAEIAUAByAG8AZgBpAGwAIABnAOkAbgDpAHIAaQBxAHUAZQAgAFIAVgBC
kBp1KAAgAFIARwBCACCCcl9pY8+P8ABQAHIAbwBmAGkAbABvACAAUgBHAEIAIABnAGUAbgBlAHIA
aQBjAG8ARwBlAG4AZQByAGkAcwBrACAAUgBHAEIALQBwAHIAbwBmAGkAbMd8vBgAIABSAEcAQgAg
1QS4XNMMx3wATwBiAGUAYwBuAP0AIABSAEcAQgAgAHAAcgBvAGYAaQBsBeQF6AXVBeQF2QXcACAA
UgBHAEIAIAXbBdwF3AXZAEEAbABsAGcAZQBtAGUAaQBuAGUAcwAgAFIARwBCAC0AUAByAG8AZgBp
AGwAwQBsAHQAYQBsAOEAbgBvAHMAIABSAEcAQgAgAHAAcgBvAGYAaQBsZm6QGgAgAFIARwBCACBj
z4/wZYdO9k4AgiwAIABSAEcAQgAgMNcw7TDVMKEwpDDrAFAAcgBvAGYAaQBsACAAUgBHAEIAIABn
AGUAbgBlAHIAaQBjA5MDtQO9A7kDugPMACADwAPBA78DxgOvA7sAIABSAEcAQgBQAGUAcgBmAGkA
bAAgAFIARwBCACAAZwBlAG4A6QByAGkAYwBvAEEAbABnAGUAbQBlAGUAbgAgAFIARwBCAC0AcABy
AG8AZgBpAGUAbA5CDhsOIw5EDh8OJQ5MACAAUgBHAEIAIA4XDjEOSA4nDkQOGwBHAGUAbgBlAGwA
IABSAEcAQgAgAFAAcgBvAGYAaQBsAGkAWQBsAGUAaQBuAGUAbgAgAFIARwBCAC0AcAByAG8AZgBp
AGkAbABpAFUAbgBpAHcAZQByAHMAYQBsAG4AeQAgAHAAcgBvAGYAaQBsACAAUgBHAEIEHgQxBEkE
OAQ5ACAEPwRABD4ERAQ4BDsETAAgAFIARwBCBkUGRAZBACAGKgY5BjEGSgZBACAAUgBHAEIAIAYn
BkQGOQYnBkUARwBlAG4AZQByAGkAYwAgAFIARwBCACAAUAByAG8AZgBpAGwAZQBHAGUAbgBlAHIA
ZQBsACAAUgBHAEIALQBiAGUAcwBrAHIAaQB2AGUAbABzAGV0ZXh0AAAAAENvcHlyaWdodCAyMDA3
IEFwcGxlIEluYy4sIGFsbCByaWdodHMgcmVzZXJ2ZWQuAFhZWiAAAAAAAADzUgABAAAAARbPWFla
IAAAAAAAAHRNAAA97gAAA9BYWVogAAAAAAAAWnUAAKxzAAAXNFhZWiAAAAAAAAAoGgAAFZ8AALg2
Y3VydgAAAAAAAAABAc0AAHNmMzIAAAAAAAEMQgAABd7///MmAAAHkgAA/ZH///ui///9owAAA9wA
AMBs/+EAgEV4aWYAAE1NACoAAAAIAAUBEgADAAAAAQABAAABGgAFAAAAAQAAAEoBGwAFAAAAAQAA
AFIBKAADAAAAAQACAACHaQAEAAAAAQAAAFoAAAAAAAA6mQAAAGQAADqZAAAAZAACoAIABAAAAAEA
AAAuoAMABAAAAAEAAAAUAAAAAP/bAEMAAgEBAgEBAgIBAgICAgIDBQMDAwMDBgQEAwUHBgcHBwYG
BgcICwkHCAoIBgYJDQkKCwsMDAwHCQ0ODQwOCwwMC//bAEMBAgICAwIDBQMDBQsIBggLCwsLCwsL
CwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLC//AABEIABQALgMBIgAC
EQEDEQH/xAAfAAABBQEBAQEBAQAAAAAAAAAAAQIDBAUGBwgJCgv/xAC1EAACAQMDAgQDBQUEBAAA
AX0BAgMABBEFEiExQQYTUWEHInEUMoGRoQgjQrHBFVLR8CQzYnKCCQoWFxgZGiUmJygpKjQ1Njc4
OTpDREVGR0hJSlNUVVZXWFlaY2RlZmdoaWpzdHV2d3h5eoOEhYaHiImKkpOUlZaXmJmaoqOkpaan
qKmqsrO0tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna4eLj5OXm5+jp6vHy8/T19vf4+fr/xAAfAQAD
AQEBAQEBAQEBAAAAAAAAAQIDBAUGBwgJCgv/xAC1EQACAQIEBAMEBwUEBAABAncAAQIDEQQFITEG
EkFRB2FxEyIygQgUQpGhscEJIzNS8BVictEKFiQ04SXxFxgZGiYnKCkqNTY3ODk6Q0RFRkdISUpT
VFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqCg4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4
ubrCw8TFxsfIycrS09TV1tfY2dri4+Tl5ufo6ery8/T19vf4+fr/2gAMAwEAAhEDEQA/APkb41eO
NYtfi94oSDVdRVF1a74FzJgfvn96j+Kmj+O/gj/wj3/C159Q0MeK9Et/EekmfU1IvdPuN/kzrtkO
0N5b/K2GGOQKzvjnz8YPFX/YVvP/AEc9fePiv9qXwn4K+Eut674A8S+Br3xl4e/Zd8MaZ4dF0LPU
HtvENte3TtbwwThla8h3RuYipI+UspFfueIryw6p8kOa+n5Ja62310Z+V4XDRxU5RlPl8z4O0S/8
YeJfB+t+IfD1xrN7oPhpbZtV1GG7ZrXTxczeRb+bJvwDLLlEAyWYHA4OK/hTxP4i8ceKdI0Xwrq9
1eanr13FY6fANS2fappZFjRVdnCgF2UFiQozkkDmv0r+KX7VPhO/8JftJaX8I/HPwu0qXxf4c8C+
JZIA1hDb63cpldfjtwI2WS7NvFGnkINyyMpXY7Fqq/GDUvhB4d+IXxP17TPHvwc1nTfiB8a/h/4o
0O10zVbW4lstChubNbxpoto+zxARztLHyAgZnADc8NPN5ydpUbXtbfqob6dOZ9vha8zu/smElpXX
W+3eW2vku+5+fXjvw38RPhlZm58eRa7ptp/a97oCXT3m+3nv7Jtt3BDKkhWUwtwzISgPG4mux/ZD
8Y6tefEO++06nqL7dOkxm6k4/exf7VfRX/BRD9oTTfiz+xBaaD8NPGfgK803wz8XvFf2nRLOWzjv
30+XU5pNKntIUQSPbeU+8yxkKUK7i+AB8x/sc/8AJQ7/AP7Bz/8Ao2KuqlWnicLOdSKTu1b0em/d
anFVpRw+IjCnK60d/X0O/wDil+zfoWofE7xJNcXOqb31W7JxJHj/AF7/APTOsH/hmPw//wA/Gqf9
/I//AI3RRXRTk+VamM4rmegv/DMfh/H/AB8ap/38j/8AjdB/Zj8Pn/l41Trn/WR9f+/dFFVzPuRZ
XEP7Mfh89bjVOP8AppFx/wCQ69I/Zf8A2d9F0z4hXP2S61Qb9Olzl4z0lh/6Z+9FFY4mT9lLU1oJ
c6P/2Q==
--d6c3e579ddbcf4333df36c1efc0d60ce--
[19913] => 1
[10002] => https://sandbox-quickbooks.api.intuit.com/v3/company/PASSING_REALM_ID/upload
[10023] => Array
(
[0] => Content-Type: multipart/form-data; boundary=d6c3e579ddbcf4333df36c1efc0d60ce
[1] => Authorization: OAuth realm="", oauth_signature_method="HMAC-SHA1", oauth_signature="gnC4JlTG30UuvBIbhJSw2akChlY%3D", oauth_nonce="EHXw9", oauth_timestamp="1447127370", oauth_token="qyprdVyR9IUKhBWkei9hPdm6Qo58ouKkWjqAoV9P7w2XOsqa", oauth_consumer_key="qyprddtFK1ows20F6ZI128MqgU6DO7", oauth_version="1.0"
[2] => Content-Length: 5653
)
[10102] =>
[41] =>
[42] => 1
[64] =>
[81] => 0
)
message=ApplicationAuthenticationFailed; errorCode=003200; statusCode=401
Rest of stuffs like adding invoice working fine, getting error for only this request.
I've gone through what this error code 003200 is http://stackoverflow.com/questions/24891385/quickbooks-ipp-v3-getting-error-3200-when-adding-invoice , several times i disconnected app and connected but no use, it still gives me the above error
we are able to connect a quickbooks-php api with quickbook pro and can send data in items (Non-Inventory) in fields name and types only, however their are other fields description, quantity and customer jobs where we are trying to send data but getting error. please see the attached screenshot regarding the error. please suggest how to fix this.
When a new "class" is created at the same time it's applied to an invoice, the procedure is to generate a fake ListID and use it both in the qb_class and qb_invoice. With other tables, the mirror code will automatically replace the ListID in invoice with the new one that's generated in the linked table. This doesn't happen with Classes.
When I added the relative to the Callbacks.php, it worked fine. Is there a reason the relatives weren't added for "class"?
i trying to get BalanceSheet report but give me blank response.
i am using this code:
$ServiceReport = new QuickBooks_IPP_Service_Report_BalanceSheet();
$reports = $ServiceReport->report($Context, $realm);
Response :
Request [GET HTTP/1.1
Content-Type: text/plain
Authorization: OAuth realm="", oauth_signature_method="HMAC-SHA1", oauth_signature="lOKH%2F2ZEgsfdsgKPfzUnSHAKsc%3D", oauth_nonce="x78TS", oauth_timestamp="1437030660", oauth_token="lvprdUFTbZVvRM3sf45dfWzr0ecH8QOJUZJKTakP9rpVjj4", oauth_consumer_key="qyprd3Dcesdf854dTwFp8GJ6CyF", oauth_version="1.0" ]
Response []
Unable to connect to QuickBooks using the example to work with the 'Intuit Partner Platform', as detailed in http://www.consolibyte.com/docs/index.php/PHP_DevKit_for_QuickBooks_-_Intuit_Partner_Platform_Quick-Start .
Example: build_20131004\docs\example_app_ipp_v3
Downloaded from: http://consolibyte.com/downloads/quickbooks-php-devkit/
Getting a 404 Page Not Found Error (kindly see image attached).
I've just started working on a project that is leveraging this library but I'm a bit nervous about the apparent total lack of unit or integration tests.
Is there some kind of automated testing I'm not aware of? Is it on the project roadmap? Would pull requests adding automated testing be welcome?
Does this library have a Vendor Expense Object and Service? Or am i missing it. I know that I can create a Vendor Bill and Bill Payment. But I haven't been able to find the Expense object to work with.
Upon visiting the index.php page to do the setup I click on "Connect to Quick Books" and it loads a blank page. No error messages, I've tried print_r() a few variables to see if information is being exchanged with no response (blank page). Error reporting is on, and display errors is on.
The abstract rewind function is not implemented for in the sqlite driver code. When using the sqlite driver the following error is raised.
Also getting an undefined function sqlite_open() error.
Fatal error: Class QuickBooks_Driver_Sql_Sqlite contains 1 abstract method and must therefore be declared abstract or implement the remaining methods (QuickBooks_Driver_Sql::rewind) in /Applications/MAMP/htdocs/quickbooks-php/QuickBooks/Driver/Sql/Sqlite.php on line 159
Fatal error: Call to undefined function sqlite_open() in /Applications/MAMP/htdocs/quickbooks-php/QuickBooks/Driver/Sql/Sqlite.php on line 310
If I want to set the Rate in InvoiceLineAdd = 0, the generated XML request has the node empty which isn't the desired value as QuickBooks will ignore it and use the stored rate for this item.
I change line 695 in XML\Node.php to
if ($node->data() === '__EMPTY__') // ick, bad hack
instead of
if ($node->data() == '__EMPTY__') // ick, bad hack
to fix it
I am working with the IPP example included with the distribution. I can add and query customers without a problem, but I've noticed that when I query customers the ID is different and is in braces.
e.g. I run example_customer_add.php and it says "Our new customer ID is: [4]". However, when I query customers, the same customer returns "{-4}" from the getID method.
I've traced this down to _push method of QuickBooks/IPP/Parser.php#L469 and the buildIDType method in QuickBooks/IPP/IDS.php#L217
Hopefully, I'm missing something and this is working as intended, but shouldn't these two values match?
Hi,
First of all thanks for the great library. I am new to QB integration, I was trying to fetch items using query, but getting 500 response from QB.
Query used:
select * from Item Where Metadata.LastUpdatedTime>'2013-03-13T14:50:22-08:00' Order By Metadata.LastUpdatedTime
Response:
Using CURL to send request!
Opening connection to: https://quickbooks.api.intuit.com/v3/company/xxxxx/query?query=select * from Item Where Metadata.LastUpdatedTime>'2013-03-13T14:50:22-08:00' Order By Metadata.LastUpdatedTime
CURL options: Array
(
[19913] => 1
[10002] => https://quickbooks.api.intuit.com/v3/company/503358085/query?query=select+*+from+Item+Where+Metadata.LastUpdatedTime>'2013-03-13T14:50:22-08:00'+Order+By+Metadata.LastUpdatedTime
[10023] => Array
(
[0] => Content-Type: text/plain
[1] => Authorization: OAuth realm="", oauth_signature_method="HMAC-SHA1", oauth_signature="xxxx", oauth_nonce="U85rP", oauth_timestamp="1392029397", oauth_token="xxxxx", oauth_consumer_key="xxxx", oauth_version="1.0"
)
[10102] =>
[41] =>
[42] => 1
[64] =>
[81] => 0
)
HTTP request: GET https://quickbooks.api.intuit.com/v3/company/XXXXXX/query?query=select+*+from+Item+Where+Metadata.LastUpdatedTime>'2013-03-13T14:50:22-08:00'+Order+By+Metadata.LastUpdatedTime HTTP/1.1
Content-Type: text/plain
Authorization: OAuth realm="", oauth_signature_method="HMAC-SHA1", oauth_signature="xxxxxx", oauth_nonce="U85rP", oauth_timestamp="1392029397", oauth_token="xxxxx", oauth_consumer_key="xxxxxx", oauth_version="1.0"
HTTP response: HTTP/1.1 500 Internal Server Error
Date: Mon, 10 Feb 2014 10:49:57 GMT
Server: Apache/2.2.22 (Unix)
Content-Length: 355
Connection: close
Content-Type: application/xml;charset=ISO-8859-1
message=Unexpected error while proxying request; errorCode=006000; statusCode=500'2013-03-13T14:50:22-08:00'+Order+By+Metadata.LastUpdatedTime HTTP/1.1
Content-Type: text/plain
Authorization: OAuth realm="", oauth_signature_method="HMAC-SHA1", oauth_signature="xxxxx", oauth_nonce="U85rP", oauth_timestamp="1392029397", oauth_token="xxxx", oauth_consumer_key="xxxxx", oauth_version="1.0"
HTTP/1.1 500 Internal Server Error
Date: Mon, 10 Feb 2014 10:49:57 GMT
Server: Apache/2.2.22 (Unix)
Content-Length: 355
Connection: close
Content-Type: application/xml;charset=ISO-8859-1
message=Unexpected error while proxying request; errorCode=006000; statusCode=500
But if I use the query without any "WHERE" condition then I am getting the results,
Query:
select * from Item
Response:
Using CURL to send request!
Opening connection to: https://quickbooks.api.intuit.com/v3/company/503358085/query?query=select * from Item
CURL options: Array
(
[19913] => 1
[10002] => https://quickbooks.api.intuit.com/v3/company/503358085/query?query=select+*+from+Item
[10023] => Array
(
[0] => Content-Type: text/plain
[1] => Authorization: OAuth realm="", oauth_signature_method="HMAC-SHA1", oauth_signature="xxxxx", oauth_nonce="896gq", oauth_timestamp="1392028849", oauth_token="xxxxx", oauth_consumer_key="xxxxx", oauth_version="1.0"
)
[10102] =>
[41] =>
[42] => 1
[64] =>
[81] => 0
)
HTTP request: GET https://quickbooks.api.intuit.com/v3/company/xxxxx/query?query=select+*+from+Item HTTP/1.1
Content-Type: text/plain
Authorization: OAuth realm="", oauth_signature_method="HMAC-SHA1", oauth_signature="xxxx", oauth_nonce="896gq", oauth_timestamp="1392028849", oauth_token="xxxx", oauth_consumer_key="xxxx", oauth_version="1.0"
HTTP response: HTTP/1.1 200 OK
Date: Mon, 10 Feb 2014 10:40:49 GMT
Server: Apache/2.2.22 (Unix)
QBO-Version: 70.158
Cache-Control: max-age=0, no-cache, no-store, must-revalidate, private
Expires: 0
Content-Encoding: gzip
intuit_tid: 2afd5dfa-ef82-4e98-afef-e3bb0d24a3e4
Via: 1.1 ipp-gateway-ap05
Content-Length: 2624
Connection: close
Content-Type: application/xml;charset=UTF-8
If I run the same query (with WHERE condition) in the API explorer, I am able to get the response.
It would be really very helpful if you could help me fixing this, or let me know if I am doing anything wrong.
Thanks
Chethan
Hello,
I have tried to run the devkit mutiple times but every time I try to do it I keep getting errors about the database not being initialized (see below). I thought that the SDK was supposed to create the tables it needs automatically but it looks like that is not the case. I have tried multiple different database types as well (mysql, pgsql) with no luck both locally and on an external server (heroku). Would it be possible for someone to send me a SQL dump of the database that it is suppose to create for you? I feel like if I create it manually it will solve my problem since the errors I am getting are all about the tables not existing.
Query failed: ERROR: relation "quickbooks_log" does not exist LINE 3: quickbooks_log ^ in /app/vendor/consolibyte/quickbooks/QuickBooks/Driver/Sql/Pgsql.php on line 495 Fatal error: PostgreSQL Error: ERROR: relation "quickbooks_log" does not exist LINE 3: quickbooks_log ^, SQL: INSERT INTO quickbooks_log ( batch, msg, log_datetime ) VALUES ( 0, 'Handler is starting up...: array ( ''qb_company_file'' => NULL, ''qbwc_min_version'' => NULL, ''qbwc_wait_before_next_update'' => NULL, ''qbwc_min_run_every_n_seconds'' => NULL, ''qbwc_version_warning_message'' => NULL, ''qbwc_version_error_message'' => NULL, ''qbwc_interactive_url'' => NULL, ''autoadd_missing_requestid'' => true, ''check_valid_requestid'' => true, ''server_version'' => ''PHP QuickBooks SOAP Server v3.0 at /'', ''authenticate'' => NULL, ''authenticate_dsn'' => NULL, ''map_application_identifiers'' => true, ''allow_remote_addr'' => array ( ), ''deny_remote_addr'' => array ( ), ''convert_unix_newlines'' => true, ''deny_concurrent_logins'' => false, ''deny_concurrent_timeout'' => 60, ''deny_reallyfast_logins'' => false, in /app/vendor/consolibyte/quickbooks/QuickBooks/Driver/Sql/Pgsql.php on line 504
I am trying to add the payment against an invoice but that did not marked that invoice as paid rather it marked as unapplied payment, although payment adds to the income but according to the quickbook this will cause serious problem when we make profit and loss statement.
I want to ask that how we can cater this, as I am using standard way of your api to add the payment against an invoice.
Current auto-loader assumes, that if class name starts with QuickBooks
then it should be handling that class regardless of fact, that class filename can't be found within /vendor
folder.
Instead I recommend either use PHP 5.3 namespaces or create a class map that will allow to only handle own classes.
Without this I've created QuickBooksHelper
class and getting fatal error currently because QuickBooks autoloader is executed before my own autoloader that is able to handle that.
According to the Quickbooks Online documentation there should be a ParentRef for Customers which accepts a ReferenceType. I'm not seeing this in quickbooks-php.
Here's the relevant info from their API docs:
ParentRef:
ReferenceType, default is null
The immediate parent of the Sub-Customer/Job in the hierarchical "Customer:Job" list.
Required for the create operation if the Customer is a sub-customer or Job.
Does this dev-kit support batch operation? If yes, can you show me an example to use batch operation with this dev-kit, I cant find it :)
Best Regard.
I am maintaining the https://drupal.org/project/quickbooks_php_devkit Drupal project which makes this library available in Drupal. For version 2.0-RC4, I detected the version of the library by looking for the line with 'version' in the composer.json file. With that line removed from the 2.0 release, how should I go about detecting the version? Might I suggest that the version be added at the top of the README.md file?
hi guys..
currently i have this application that generate .qwb file,
(then make a get customer enqueue)
then after installing, it will go thru quickbook web connector app,
but after hitting updated selected and even the get all customers action is on enqueue, the get all customer does not fire it still wait for about 10-15mins before the enqueue of the get all customer is fired and get the respond from that..
is that be possible that after create the enqueue of getting customer then hitting "update selected button" then it will get the created queue of getting customers instalntly without waiting?
this is my code of adding a queue
$Queue = new QuickBooks_WebConnector_Queue($this->_dsn);
$Queue->enqueue(QUICKBOOKS_OBJECT_CUSTOMER, NULL, 100, NULL, $app['email']);
this is for creating the xml for getting all customer
public function _getCustomer($requestID, $user, $action, $ID, $extra, &$err,
$last_action_time, $last_actionident_time, $version, $locale) {
return ''.
''.
''.
''.
''.
''.
''.
'';
}
thanks guys...
We used your quikbooks-devkit (as found on GitHub), and basically ran
several tests successfully.
We then incorporated this as part of a WordPress plugin for a client (of
ours) to retrieve invoice information.
We tested this successfully on our development server.
However, after migrating to the client, errors started cropping up.
After a lot of to-and-fro .. the only difference we could see is that we
have the php.ini memory limit set to 192MB.
The client has 128MB. When we tested at 128MB .. yep we get an internal
server error (500).
We have advised the client they need to upgrade their hosting plan.
However, the question to you is this, since the only thing we need to do
is connect (no problem) and retrieve invoices (crash), is there any
config setting so the devkit runs with a smaller footprint?
Thank you
Willy
*** SEE COMMENTS ***
Although memory may be a factor, there is something else going on. We got the error log from the client's server, and see SimpleXML warnings.
Hey Keith.
Excellent library, we are using it to communicate our site with quickbooks enterprise (desktop) using the web connector.
I was wondering if we can continue using this library together with Quickbooks enterprise 15. Also we have this version locked with composer:
"name": "consolibyte/quickbooks",
"version": "dev-master",
"source": {
"type": "git",
"url": "https://github.com/consolibyte/quickbooks-php.git",
"reference": "490ba8dff986faef57016194c3270ea4811c50d9"
},
And we would like to know if we can continue using that version, because it's the one we used for all the communication tests.
I'm getting an error notice that is interferring with output the XML.
Notice: Use of undefined constant QUICKBOOKS_OBJECT_XML_DROP - assumed 'QUICKBOOKS_OBJECT_XML_DROP' in quickbooks/QuickBooks/QBXML/Object/InventoryItem.php on line 372
I did a quick search and the variable QUICKBOOKS_OBJECT_XML_DROP shows up in 46 files.
In this particular case it's in the method parameters.
public function asQBXML($request, $todo_for_empty_elements = QUICKBOOKS_OBJECT_XML_DROP, $indent = "\t", $root = null)
{
}
I think that the correct usage would be something like
public function asQBXML($request, $todo_for_empty_elements = QuickBooks_QBXML_Object::XML_DROP, $indent = "\t", $root = null, $parent = null)
{
}
That is based on quickbooks/QuickBooks/QBXML/Object/Check.php line 498.
Factory::create() has:
$class = 'QuickBooks_Encryption_' . ucfirst(strtolower($encrypt));
$file = '/QuickBooks/Encryption/' . ucfirst(strtolower($encrypt)) . '.php';
and the name of the class is:
class QuickBooks_Encryption_AES extends QuickBooks_Encryption
and this is not the only case.
I am getting this error.
Warning: require_once(C:\xampp\htdocs\projects\quick/QuickBooks\IPP\Object\DescriptionLineDetail.php): failed to open stream: No such file or directory in C:\xampp\htdocs\projects\quick\QuickBooks\Loader.php on line 56
Fatal error: require_once(): Failed opening required 'C:\xampp\htdocs\projects\quick/QuickBooks\IPP\Object\DescriptionLineDetail.php' (include_path='.;C:\xampp\php\PEAR;C:\xampp\htdocs\projects\quick') in C:\xampp\htdocs\projects\quick\QuickBooks\Loader.php on line 56
The next logical step for the development of the devkit would be to add PSR compliance. This of course would mean namespacing the module.
The pros for this change would be:
The downside would be changing the required PHP from 5+ to 5.3+. Which leads back to the question in the title, how many new projects are using PHP <5.3?
I'm writing this post in an attempt to get a healthy debate going on the topic, so throw in your two cents.
I am unable to pull the current user information connected with QuickBook PHP API . I want to show them on my Web app after authorisation.
Is there any chance that the project will start using namespacing in the future? I saw something a poll a couple years ago asking how many people are still on < 5.3 but nothing since then. I would assume even less people are on 5.3 since then especially since most hosts are forcing people to upgrade php.
Composer autoloading is no longer working.
QuickBooks_QBXML_Object_Invoice_SalesTaxLine calls $this->setRate('Rate', $rate), probably should be $this->set('Rate', $rate);
Hello I'm trying to use the method findById()
in the QuickBooks_IPP_Service_Customer
class. I keep getting the error message: Undefinied variable: url
on this line: https://github.com/consolibyte/quickbooks-php/blob/master/QuickBooks/IPP.php#L1022
The code that I'am running:
// authentication already handled
$realm = $creds['qb_realm'];
if($Context = $IPP->context()){
$CS = new \QuickBooks_IPP_Service_Customer();
$customer = $CS->findById($Context, $realm, '{-1093}');
var_dump($customer);
}
And just for my knowledge what do I pass for the ID in the customer? Is it: 1093
, {QBO-1093}
, or {-1093}
?
Thanks for the help!
I've been looking and looking through your api, and I cannot simply find a way to do this.
I am getting this warning with php 5.5
Deprecated: mysql_connect(): The mysql extension is deprecated and will be removed in the future: use mysqli or PDO instead in vendor/consolibyte/quickbooks/QuickBooks/Driver/Sql/Mysql.php on line 289
Hi,
I don't think this sdk supports VendorCredit entity, am I right ?
Call to undefined method QuickBooks_IPP_Service_VendorCredit::add()
Would it be possible to put up older versions on Packagist? We're still on version 1.5.3 and aren't ready to make a full upgrade yet, but are trying to get the code out of our project and install it with composer.
All calls to ereg() function need to be converted to preg_match() for PHP 7.0+.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.