ItemConsolidatedQuery Find by Custom Field - intuit-partner-platform

In QuickBooks Desktop, I have an inventory item with a custom field called code. The value of the code is 12345. I need to pull a inventory item where the custom field code is 12345.
Here is my XML:
<?xml version="1.0" encoding="utf-8"?><ItemConsolidatedQuery xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://www.intuit.com/sb/cdm/v2"><CustomFieldEnable>true</CustomFieldEnable><NameContains>temple</NameContains></ItemConsolidatedQuery>
I know the item's name, so I tried to query by it. There are 3 items with the same name, so I attempted to query them later. I am unable to see any custom field data:
http://pastebin.com/FBD1na0s
I know that the custom field exists. Here is my C# code:
Intuit.Ipp.Data.Qbd.ItemConsolidatedQuery itQuery = new Intuit.Ipp.Data.Qbd.ItemConsolidatedQuery();
itQuery.NameContains = "temple";
itQuery.CustomFieldEnable = true;
itQuery.CustomFieldEnableSpecified = true;
itQuery.CustomFieldFilter = Intuit.Ipp.Data.Qbd.customFieldFilterEnumType.Include;
var itemsList = itQuery.ExecuteQuery<Intuit.Ipp.Data.Qbd.ItemConsolidated>(ds.ServiceContext);
Is there a C# example to query custom fields in QBD?

Have you tried adding this line:
itQuery.CustomFieldFilterSpecified = true;
Also, custom fields in QB are secured by OwnerID. Probably theOwnerID must be specified in itQuery.CustomFieldQueryParam; I haven't experimented with it yet.

Need to include OwnerIDList in the request. See the OSR for examples.

Related

Need to change Access Control of Published Items though api

In Smartsheet I have downloaded Published Items list from user management. Using this list I need to change the Access control (Public/Organization) value through api. Please help. Thanks
Depending on the type of object you're updating (Sheet, Report, or Dashboard), the operations you'll use are as follows:
Set Sheet Publish Status
Set Report Publish Status
Set Dashboad (Sight) Publish Status
I've included some code examples below (taken nearly verbatim from those you'll find in the docs I've linked to above.)
One additional note: You'll notice that the values written to the Published Items list that you manually export from Smartsheet differ from the values used by the API. For example, the Access Control column of exported data contains values like Organization and Public -- where as the corresponding values used by the API are ORG and ALL.
Example #1: SHEET --> Set ReadOnlyFullAccessibleBy to ALL, ReadWriteAccessibleBy to ORG
SheetPublish sheetPublish = new SheetPublish();
sheetPublish.ReadOnlyLiteEnabled = false;
sheetPublish.ReadOnlyFullEnabled = true;
sheetPublish.ReadOnlyFullAccessibleBy = "ALL";
sheetPublish.ReadWriteEnabled = true;
sheetPublish.ReadWriteAccessibleBy = "ORG";
sheetPublish.IcalEnabled = false;
smartsheet.SheetResources.UpdatePublishStatus(
4583614634583940, // sheetId
sheetPublish
);
Example #2: Report --> Set ReadOnlyFullAccessibleBy to ORG
ReportPublish reportPublish = new ReportPublish();
reportPublish.ReadOnlyFullEnabled = true;
reportPublish.ReadOnlyFullAccessibleBy = "ORG";
smartsheet.ReportResources.UpdatePublishStatus(
1653087851556740, // reportId
reportPublish
);
Example #3: Dashboard (Sight) --> Set ReadOnlyFullAccessibleBy to ALL
SightPublish publish = new SightPublish();
publish.ReadOnlyFullEnabled = true;
publish.ReadOnlyFullAccessibleBy = "ALL";
smartsheet.SightResources.SetPublishStatus(
5363568917931908, // sightId
publish
);

Dynamic Column configuration in ag-grid

I am trying to load table data dynamically in ag-grid. All column will be listed in sidebar(ToolPanel) check boxes and if user click on any unchecked box then a request will be sent to server and get data for that column and merge into the grid.
I am not sure this can be done with the ag-grid sideBar.
I am thinking of capturing the click event in sideBar but can not found any relevant document.
Please let me know if there is any solution for this.
If you are expecting any event from ag-grid, I think columnVisible might help you.
Have a look at this live example: https://plnkr.co/edit/KpFQp84rZvJgY2gjKRar?p=preview
Uncheck any column and then check.
<AgGridReact
...
onColumnVisible={this.onColumnVisible}
/>
onColumnVisible = params => {
console.log(params);
if (params.visible) {
const colId = params.column.colId;
alert(colId);
// you could identify here, which column was checked
// load data from server for that column
// make sure you also retrieve ID and then associate the column data with appropriate row, i.e.
this.yourHttpSvc.getColData(colId).subscribe(response => {
// iterate through response & rowData appropriately
this.stats.rowData[key][colId] = response[key][colId];
})
}
}
Hope this helps!

xPages REST Service Results into Combobox or Typeahead Text Field

I've read all the documentation I can find and watched all the videos I can find and don't understand how to do this. I have set up an xPages REST Service and it works well. Now I want to place the results of the service into either a combobox or typeahead text field. Ideally I would like to know how to do it for both types of fields.
I have an application which has a view containing a list of countries, another view containing a list of states, and another containing a list of cities. I would like the first field to only display the countries field from the list of data it returns in the XPages REST Service. Then, depending upon which country was selected, I would like the states for that country to be listed in another field for selection, etc.
I can see code for calling the REST Service results from a button, or from a dojo grid, but I cannot find how to call it to populate either of the types of fields identified above.
Where would I call the Service for the field? I had thought it would go in the Data area, but perhaps I've just not found the right syntax to use.
November 6, 2017:
I have been following your suggestion, but am still lost as can be. Here's what I currently have in my code:
x$( "#{id:ApplCountry}" ).select2({
placeholder: "select a country",
minimumInputLength: 2,
allowClear : true,
multiple: false,
ajax: {
dataType: 'text/plain',
url: "./Application.xsp/gridData",
quietMillis: 250,
data: function (params) {
return {
search:'[name=]*'+params.term+'*',
page: params.page
};
},
processResults: function (data, page) {
var data = $.map(data, function (obj) {
obj.id = obj.id || obj["#entityid"];
obj.text = obj.text || obj.name;
return obj;
});
},
return {results: data};
}
}
});
I'm using the dataType of 'text/plain' because that was what I understood I should use when gathering data from a domino application. I have tried changing this to json but it makes no difference.
I'm using processResults because I understand this is what should be used in version 4 of select2.
I don't understand the whole use of the hidden field, so I've stayed away from that.
No matter what I do, although my REST service works if I put it directly in the url, I cannot get any data to display in the field. All I want to display in the field is the country code of the document, which is in the field named "name" (not my choice, it's how it came before I imported the data from MySQL.
I have read documentation and watched videos, but still don't really understand how everything fits together. That was my problem with the REST service. If you use it in Dojo, you just put the name of the service in a field on the Dojo element and it's done, so I don't understand why all the additional coding for another type of domino element. Shouldn't it work the same way?
I should point out that at some points it does display the default message, so it does find the field. Just doesn't display the country selections.
I think the issue may be that you are not returning SelectItems to your select2, and that is what it is expecting. When I do something like you are trying, I actually use a bean to generate the selection choices. You may want to try that or I'm putting in the working part of my bean below.
The Utils.getItemValueAsString is a method I use to return either the string value of a field, or if it is not on the document/empty/null an empty string. I took out an if that doesn't relate to this, so there my be a mismatch, but I hope not.
You might be able to jump directly to populating the arrayList, but as I recall I needed to leverage the LinkedHashMap for something.
You should be able to do the same using SSJS, but since that renders to Java before executing, I find this more efficient.
For label/value pairs:
LinkedHashMap lhmap = new LinkedHashMap();
Document doc = null;
Document tmpDoc = null;
allObjects.addElement(doc);
if (dc.getCount() > 0) {
doc = dc.getFirstDocument();
while (doc != null) {
lhmap.put(Utils.getItemValueAsString(doc, LabelField, true), Utils.getItemValueAsString(doc, ValueField, true));
}
tmpDoc = dc.getNextDocument(doc);
doc.recycle();
doc = tmpDoc;
}
}
List<SelectItem> options = new ArrayList<SelectItem>();
Set set = lhmap.entrySet();
Iterator hsItr = set.iterator();
while (hsItr.hasNext()) {
Map.Entry me = (Map.Entry) hsItr.next();
// System.out.println("after: " + hStr);
SelectItem option = new SelectItem();
option.setLabel(me.getKey() + "");
option.setValue(me.getValue() + "");
options.add(option);
}
System.out.println("About to return from generating");
return options;
}
I ended up using straight up SSJS. Worked like a charm - very simple.

Dynamic form Issue in Angular

Scenario :
A form is generated dynamically, I used this tutorial to create the form dynamically. When I click "Submit" button, the form value I get in the component is
ts :
doSubmitICR(form) {
console.log(form.value);
}
form.value has the following values
{
CaptainPoint:"0",
Category:"restaurant",
Description:"Test",
DisplayDept:"kitchen",
Group:"restaurant",
GuestPoint:"0",
ItemCode:"1",
ItemName:"Test Item",
PrintingDept:"frontoffice",
SalesRate:"3",
SubGroup:"restaurant",
TAX1:true,
TAX2:true,
TabDisplay:"restaurant",
Unit:"restaurant"
}
TAX1 and TAX2 are dynamic, those form controls were created from a tax table, If the table has TAX3 and TAX4, then instead of TAX1 and TAX2 in the above form, TAX3 and TAX4 form control is generated.
Issue :
If the TAXs are dynamic, how can I pass these values to Web service say WebAPI2 as a model?
Is it possible to filter only the TAX element from the form.value?
Any advice would be appreciated. Thank you.
The solution from alexKhymenko should work well. Alternatively, if the values you want to submit to the API will always have the format of TAX{d}, where d is some combination of digits, you could use the following to get just those values on a request object:
let request = {};
Object.keys(form.value).forEach(key => {
if(/^TAX[\d]+$/.test(key))
request[key] = form.value[key]
});

How do i set a label on an issue using the JIRA SOAP API

Is there a way to set the "Labels" field for a ticket when creating or updating a JIRA ticket using the SOAP API? A search for "label" in the WSDL reveals nothing, and when getting a ticket using the API which I know has labels set, there is no indication in the result that a label exists.
You can update the label of an existing issue using the field id 'labels'. Here is the code I'm using (C#):
public void LabelIssue(string issueKey, string label)
{
RemoteIssue issue = jiraSoapService.getIssue(token, issueKey);
List<RemoteFieldValue> actionParams = new List<RemoteFieldValue>();
RemoteFieldValue labels = new RemoteFieldValue { id = "labels", values = new string[] { label } };
actionParams.Add(labels);
jiraSoapService.updateIssue(token, issue.key, actionParams.ToArray());
}
I'm pretty sure there's no method to do this in JiraSoapService
http://docs.atlassian.com/rpc-jira-plugin/latest/com/atlassian/jira/rpc/soap/JiraSoapService.html
~Matt
Try updating custom field id 10041. I looked forever and I finally found it.
Here is sample code in python:
update_str = [{"id": "customfield_10041", "values":["my_label"]}]
ret = jira_handle.service.updateIssue(auth, key, update_str)
Hope that helps!!