GithubHelp home page GithubHelp logo

quickbooks-php's People

Contributors

academickeys avatar artvaz avatar bigtunacan avatar brardith avatar brazilianldsjaguar avatar chadsaun avatar consolibyte avatar danyay avatar elvismdev avatar emilebourquin avatar gmuresan avatar hackley2 avatar ivanp avatar jacobgreenleaf avatar josephzidell avatar keith-chargeover avatar kitsunenokenja avatar livelysalt avatar lwitzel avatar mreiden avatar mryanb avatar mstenta avatar njcrawford avatar randomarray avatar rnewton avatar scragz avatar synzvato avatar tyler-sommer avatar ve7tcc avatar wuestkamp avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

quickbooks-php's Issues

QuickBooks_Cast::cast - Truncate Not working

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!

preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead

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);

Missing delete methods

The delete method is unavailable on the Vendor and Bill object.
Is this the right place to report possible enhancements?

Fix Class Name

diff --git a/QuickBooks/QBXML/Object/Bill/ItemLine.php b/QuickBooks/QBXML/Object/Bill/ItemLine.php
index 260a8b6..3ab348a 100755
--- a/QuickBooks/QBXML/Object/Bill/ItemLine.php
+++ b/QuickBooks/QBXML/Object/Bill/ItemLine.php
@@ -18,7 +18,7 @@ QuickBooks_Loader::load('/QuickBooks/QBXML/Object.php');
/**

/
-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!

do_receiveResponseXML() not defining qbxml version

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.

Unicode character support?

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.

Uploading attachments to QuickBooks

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

Request (set via curl params):

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

)

Response:

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

quickbooks-php not sending data service items all fields in quickbook 2011 desktop

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.
screenshot-europa promaticstechnologies com 2015-02-25 10-56-04

MySQL mirror: no relatives setup for "class"

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"?

QuickBooks Report not working

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 []

Automated testing?

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?

Vendor Expense

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.

oauth.php

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.

Sqlite driver errors

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 Invoice Rate is 0, it becomes empty in the XML

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

IPP Customer query returned Ids that do not match add response

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?

Error while fetching items list using query

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

Database SQL Dump

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

Payments did not marked as paid when add via API

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.

Rewrite auto-loader

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.

QuickBooks Online - ParentRef and jobs

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.

Batch operation support.

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.

Version detection

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?

realtime enqueue

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...

QuickBooks Online: ChangeDataCapture service errors when returning Invoices with "Custom Fields"

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.

Does you library supports quickbooks 15 enterprise?

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.

Use of undefined constant QUICKBOOKS_OBJECT_XML_DROP

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.

Class naming consistency.

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.

Unable to query Invoice list

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

How many new projects are using PHP < 5.3?

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:

  • Increased efficiency, as classes would be lazy loaded on a need be bases.
  • Better organization without the worry of name collisions with other libraries.
  • It will increase the ease of use for developers who are not contributing to the project, but simply using it in their own project.

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.

Namespacing

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.

Unable to query customer by ID

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!

No old versions in Packagist

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.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.