ruckus / quickeebooks

ABANDONED !!!! Quickbooks + Ruby using the Quickbooks Online v2 Data Services REST API
MIT License
79 stars 67 forks source link

Modify customer address validation to allow no address on Windows flavor #91

Open theinventor opened 11 years ago

theinventor commented 11 years ago

At first I just removed the validation, but I think something should be there - since sending an empty address does fail.

You are able to send nothing at all, customer.addresses = nil seems to work;

    <Add xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" RequestId="95bd8691b4b6d8a8e20d4a1eea28349c" xmlns="http://www.intuit.com/sb/cdm/v2">
        <ExternalRealmId>762087535</ExternalRealmId>
        <Object xsi:type="Customer"> 
            <TypeOf>Person</TypeOf> 
            <Name>Steve Klabnick</Name> 
            <Phone> 
                <DeviceType>LandLine</DeviceType> 
                <FreeFormNumber>6678881212</FreeFormNumber> 
                <Default>true</Default> 
                <Tag>Business</Tag> 
            </Phone> 
            <Email> 
                <Address>troy+steve@testing.com</Address> 
                <Default>true</Default> 
                <Tag>Business</Tag> 
            </Email> 
            <DBAName /> 
        </Object>
    </Add>

    <RestResponse xmlns="http://www.intuit.com/sb/cdm/v2">
        <Success RequestId="95bd8691b4b6d8a8e20d4a1eea28349c">
            <PartyRoleRef>
                <Id idDomain="NG">929334</Id>
                <SyncToken>1</SyncToken>
                <LastUpdatedTime>2013-08-26T04:14:30Z</LastUpdatedTime>
                <PartyReferenceId idDomain="NG">1008617</PartyReferenceId>
            </PartyRoleRef>
            <RequestName>CustomerAdd</RequestName>
            <ProcessedTime>2013-08-26T04:14:30Z</ProcessedTime>
        </Success>
    </RestResponse>

I have no idea how to communicate this in a short validation error :)

ruckus commented 11 years ago

First, thanks for digging into this.

I'm surprised not sending an Address works as Intuit indicates its a required field.

https://developer.intuit.com/docs/0025_quickbooksapi/0050_data_services/v2/0500_quickbooks_windows/0600_object_reference/customer

under Business Rules: "The customer address field is mandatory."

But I'm also confused by your note at the top. You say "sending an empty address does fail" but then also "You are able to send nothing at all". Do you mean that excluding certain parts of the Address are OK? Can you please clarify?

Thanks again

theinventor commented 11 years ago

For example, sending a nil street, city, state, but having the address tag in there, which a builds up the XML element with a lot of empty fields will fail.

If you don't send any element at all, it works - I saw this eluded to on stackoverflow

Troy Anderson

On Aug 26, 2013, at 10:00 AM, Cody Caughlan notifications@github.com wrote:

First, thanks for digging into this.

I'm surprised not sending an Address works as Intuit indicates its a required field.

https://developer.intuit.com/docs/0025_quickbooksapi/0050_data_services/v2/0500_quickbooks_windows/0600_object_reference/customer

under Business Rules: "The customer address field is mandatory."

But I'm also confused by your note at the top. You say "sending an empty address does fail" but then also "You are able to send nothing at all". Do you mean that excluding certain parts of the Address are OK? Can you please clarify?

Thanks again

— Reply to this email directly or view it on GitHub.

ruckus commented 11 years ago

Ah ok, so sending a request with an actual "Address" element but which contains a set of empty values for Street, City, etc. will fail. But also sending a request with no "Address" at all will succeed.

So it seems like the validation rule is basically, in plain english, "If you give me an address then it needs to have non-blank values for all my children attributes (Street, City, State, Zip, etc)".

On Aug 26, 2013, at 10:41 AM, Troy Anderson notifications@github.com wrote:

For example, sending a nil street, city, state, but having the address tag in there, which a builds up the XML element with a lot of empty fields will fail.

If you don't send any element at all, it works - I saw this eluded to on stackoverflow

Troy Anderson

On Aug 26, 2013, at 10:00 AM, Cody Caughlan notifications@github.com wrote:

First, thanks for digging into this.

I'm surprised not sending an Address works as Intuit indicates its a required field.

https://developer.intuit.com/docs/0025_quickbooksapi/0050_data_services/v2/0500_quickbooks_windows/0600_object_reference/customer

under Business Rules: "The customer address field is mandatory."

But I'm also confused by your note at the top. You say "sending an empty address does fail" but then also "You are able to send nothing at all". Do you mean that excluding certain parts of the Address are OK? Can you please clarify?

Thanks again

— Reply to this email directly or view it on GitHub. — Reply to this email directly or view it on GitHub.

theinventor commented 11 years ago

I actually don't know the rule though, I can do some more testing to reverse engineer it - I have a feeling if you leave out the street, but fill in the rest, it will work. and if you fill in the street and leave out the rest, it probably works.

I got a few validation errors on the address when I was testing, but I didn't explore enough to understand their rules.

I'm using it as-is for now, but I'll just be disabling that validation in my production app until this is firmed up and in another version release.

It's hard to tell my users it requires an address, when Quickbooks proper does not :(

On Aug 26, 2013, at 11:20 AM, Cody Caughlan notifications@github.com wrote:

Ah ok, so sending a request with an actual "Address" element but which contains a set of empty values for Street, City, etc. will fail. But also sending a request with no "Address" at all will succeed.

So it seems like the validation rule is basically, in plain english, "If you give me an address then it needs to have non-blank values for all my children attributes (Street, City, State, Zip, etc)".

On Aug 26, 2013, at 10:41 AM, Troy Anderson notifications@github.com wrote:

For example, sending a nil street, city, state, but having the address tag in there, which a builds up the XML element with a lot of empty fields will fail.

If you don't send any element at all, it works - I saw this eluded to on stackoverflow

Troy Anderson

On Aug 26, 2013, at 10:00 AM, Cody Caughlan notifications@github.com wrote:

First, thanks for digging into this.

I'm surprised not sending an Address works as Intuit indicates its a required field.

https://developer.intuit.com/docs/0025_quickbooksapi/0050_data_services/v2/0500_quickbooks_windows/0600_object_reference/customer

under Business Rules: "The customer address field is mandatory."

But I'm also confused by your note at the top. You say "sending an empty address does fail" but then also "You are able to send nothing at all". Do you mean that excluding certain parts of the Address are OK? Can you please clarify?

Thanks again

— Reply to this email directly or view it on GitHub. — Reply to this email directly or view it on GitHub.

— Reply to this email directly or view it on GitHub.