Bruce Herbach Posted March 2, 2020 Posted March 2, 2020 I'm new to working with the Productive Computing QuickBooks Connector. I'm trying to add a ItemNonInventoryAdd item. It appears that when pushing this item to QuickBooks from FileMaker (18) an ExternalGUID field is required. Current records in QuickBooks, created in QuickBooks this field is empty. The field fails validation and gives me the following message: SEVERITY: failed validation MESSAGE: Error at ExternalGUID Reason: '123456789abc' violates pattern constraint of '0|(\{[0-9a-fA-F]{8}(\-([0-9a-fA-F]{4})){3}\-[0-9a-fA-F]{12}\})'. Parsing regular expressions is not my strong suit. I have tried a number of different values for this field. Using 0 worked once. Using it a second time gave the error of the value being in use. Can someone show me a few examples of what an externalGUID should look like? I did try using the FileMaker Record UUID, and this produced the same error. Greatly appreciate help with this.
PCIPal Posted March 3, 2020 Posted March 3, 2020 Hi Bruce, I have found a bit of information about the ExternalGUID. I will include some sample code for reference as to how to create this ID and a link to a site which will benefit you in the future when working with QuicksBooks! An example on how to receive a unique GUID is below: IQBGUIDType - val is a globally unique identifier that you generate using GUIDGEN.EXE, a tool that comes with Microsoft Visual Studio. A GUIDTYPE value takes the form {XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX}, where X is a hexadecimal digit. For example: {6B063959-81B0-4622-85D6-F548C8CCB517}. Note that GUIDTYPE values are not case-sensitive, meaning that if you enter a GUIDTYPE value with lower-case letters, the value will be saved and returned with upper-case letters. Click this link for some more info https://developer-static.intuit.com/qbsdk-current/common/newosr/index.html Thanks, PCIPal
Bruce Herbach Posted March 4, 2020 Author Posted March 4, 2020 Thanks. It appears that the a FileMaker UUID should work, but when using the primary key/uuid value I still get the error message. For the moment this is not a show stopper. Current data in QuickBooks does not have a value in this field and we can get by with out it.
Geoffrey Gerhard Posted March 4, 2020 Posted March 4, 2020 Is this really required, PCIPal? The OSR identifies the GUID element as optional in a ItemNonInventoryAddRequest.
Bruce Herbach Posted March 4, 2020 Author Posted March 4, 2020 Once I fixed an issue with fields earlier in the OSR this field reverted to it's optional state. I had an issue when trying to set two fields one on each side of the Sales/Or/AndPurchase section. Should have used fields from And section only. The message I was getting when the script tried to set fields on both sides of the OR was that is was expecting ExternalGUID. As stated at the top, I'm new to working with the plugin and interpreting the OSR. That stated, I now have the script working and correctly adding ItemNonInventoryAdd items. If I enable the line: set variable[ $$Result; Value: PCQB_RqAddFieldWithValue( "ExternalGUID" ; Rate_mat::ID ) ] I still get the error in the original post. The field Rate_mat::ID is a standard FileMaker UUID and should match the shown regular expression. Thanks for your help
PCIPal Posted March 4, 2020 Posted March 4, 2020 Hi Bruce, I've done a bit of testing and reviewed the OCR, and it looks like the evaluated result of "Get(UUID)" in FileMaker returns a GUID-format string as we would expect, but QuickBooks' QBXML processor is expecting a little extra in that UUID, namely the start and end curly brace characters { and }. If you include the beginning brace and end brace when setting the ExternalGUID field, it should accept it; I was able to successfully create an inventory item with an ExternalGUID with the following pseudocode: PCQB_RqNew( "ItemInventoryAdd" ) & ¶ & PCQB_RqAddFieldWithValue( "Name" ; "Test Inventory Item" ) & ¶ & PCQB_RqAddFieldWithValue( "SalesPrice" ; "1" ) & ¶ & PCQB_RqAddFieldWithValue( "IncomeAccountRef::FullName" ; "Construction Income" ) & ¶ & // sample income account PCQB_RqAddFieldWithValue( "COGSAccountRef::FullName" ; "Cost of Goods Sold" ) & ¶ & // sample COGS account PCQB_RqAddFieldWithValue( "AssetAccountRef::FullName" ; "Vehicles" ) & ¶ & // sample asset account PCQB_RqAddFieldWithValue( "ExternalGUID" ; "{" & Get(UUID) & "}" ) & ¶ & // GUID looks like {XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX} Granted the example is an inventory item, but it should hold true for a non-inventory item as well. Hope this helps! PCIPal
Recommended Posts
This topic is 1708 days old. Please don't post here. Open a new topic instead.
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now