Identify single SOLine item - acumatica

I have to update the custom field column in SOLine. However, I have multiple line items with the same Inventory and Warehouse selected. Is there a way I can find a single line item still?
Both the line items are marked for PO.
I need to identify a single line item where two different POs are created but the costs are different.
I need to identify a single line item where same POs are created but the costs are different.

Related

Create saved search in NetSuite that displays which items have been ordered as a single line item

My goal is to see a list how many times an item has been ordered by itself and the quantity ordered.
so:
I think the simplest method is a criteria where the line amount must equal the transaction total amount.

Exclude Orders from Sales Order Summary report

I want to exclude the Sales Order completely based on the InventoryItem I select in report parameter for Sales Order Summary report (Screen ID - SO610500). Meaning, if I select a particular InventoryItem in the parameter, the report should not include the entire Sales Order where I have the selected InventoryItem as one of the line item.
I have tried Additional Filter by adding SOLine.InventoryID, Does Not Contain condition but that seems to work when I have only 1 line item for the order which needs to be excluded but if there are more line items then it is not working.
I have also tried adding new additional parameter to exclude the select InventoryID but that also does the same.
Can anyone please suggest any better way to achiev this goal.
Sales Order 1 (Example) - Contains only 1 line item which I want to exclude from report.
Sales Order 2 (Example) - Contains 2 line items out of which 1 item I want to exclude from the report.
Sales Order Summary Report - Additional filter condition I have added
Sales Order Summary Report - The report itself, which do not list the first sales order but has second sales order.
Finally found the trick to achieve what I need.
To do this in Report Designer, the best would be to do a variable in the Detail section. It could be an IIf formula that returns TRUE if the InventoryID on the row is equal to the InventoryID that you are looking for or FALSE if not. Then you'd need to set the ResetExpr on the variable to reset to 0 when it reaches the next Order. Then you would need to move the fields from groupHeaderSection2 to groupFooterSection2 because the variable won't exist until after the Details section. Finally, you'd need to put the variable in the VisibleExpr field of groupFooterSection2 so the section does not print when the variable is false. You will have to adjust the group totals accordingly by declaring the variables in groupFooterSection2.

NetSuite Eliminate Duplicates from Saved Item Search

I am making a saved search to show all of the items in our inventory with quantity details, but when I preview the saved search many duplicate products are displayed to the screen. How can I eliminate the duplicates? Also, how would I eliminate any Kit/Package items?
It is likely you have multiple location inventory turned on but are not filtering by nor including a column for the Inventory Location. If you include the Inventory Location column you'll see that the lines are not duplicates.
If you don't have inventory in a number of locations you can filter on Location On Hand is greater than 0. The filters to use here depend on what you are trying to see.
You would eliminate Kits/Packages by filtering on Type == Inventory Part
To eliminate only Kits/Package items from search results you can use filter criteria - Type none of Kits/Package Item.
If you are using multiple locations and you do not want to see multiple results for same item - I would recommend writing a grouped/summary search by specifying summary types for fields in the results/search columns:
1) All Item details like - Name, display name , etc. with summary type as group
2) All inventory count field such as Location on Hand, Location Available, Location Back Ordered, etc. should have summary type as Sum

Create Notes view for duplicate parent documents

We have an Xpages application and recently discovered an issue where there are several Notes documents that have duplicates but the duplicates are PARENT documents too and NOT response documents. Is it possible to create a Notes view that will show duplicates where all the duplicates are parents? I know the formula for showing conflicts is the following but what about where they are all parents?
SELECT #IsAvailable($Conflict)
Expounding on my comment:
Create a view which is categorized on the first column
In the first column formula, put in criteria that you would use to determine a duplicate. This may be the Document Unique ID, or maybe another field or combination of fields.
Add a second column that contains the number 1. Then enable column totals on this column.
Now look at this view you created. With the view categories collapsed, look for any number greater that 1 to determine which documents are duplicates.
I think what you are asking is not how to identify the duplicates - but how to find out which of them are parent documents. So basically you would create a view as Steve suggests - but instead of putting a constant of 1 into the second column I would suggest putting either #DocChildren (for immediate responses) or #DocDescendants (for all responses and responses to responses).
If I understand your logic then all the ones returning 0 (zero) are child documents and those returning 1 or higher would be parent documents. Of course you could also use an item on the document in your view formula - if it only exists on the parent doc (or its value can tell that it is a parent doc)
View selection formulas act on only one document at a time. They cannot perform lookups. They have no way to compare two documents. There is therefore no possible way for a view to identify duplicates.
A view can, as per the other answers, categorize documents based on common values. If there is a single field that is supposed to be unique across all documents, you can categorize on that field. That will give you a visualization of the duplicates, but it won't filter them in or out.
The only way for a view to filter duplicates - either to show only duplicates, or to exlude duplicates - would be if you run an agent that reads all documents, looks for those that are duplicates, and marks them with a special field value - e.g., IsDuplicate = 1. Once you do that, you can create a view that selects all documents with IsDuplicated = 1, or a view that excludes IsDuplicated = 1.

Building a pagination cursor

I have activities that are stored in a graph database. Multiple activities are grouped and aggregated into 1 activity in some circumstances.
A processed activity feed could look like this:
Activity 1
Activity 2
Grouped Activity
Activity 3
Activity 4
Activity 5
Activities have an updated timestamp and a unique id.
The activities are ordered by their updated time and in the case of a grouped activity, the most recent updated time within its child activities is used.
Activities can be inserted anywhere in the list (for example, if we start following someone, their past activities would be inserted into the list).
Activities can be removed from anywhere in the list.
Due to the amount of data, using the timestamp with microseconds can still result in conflicts (2 items can have the same timestamp).
Cursor identifiers should be unique and stable. Adding and removing feed items should not change the identifier.
I would like to introduce cursor based paging to allow clients to paginate through the feed similar to twitter's. There doesn't seem to be much information on how they are built as I have only found this blog post talking about implementing them. However it seems to have a problem if the cursor's identifier happens to be pointing to the item that was removed.
With the above, how can I produce an identifier that can be used as a cursor for the above? Initially, I considered combining the timestamp with the unique id: 1371813798111111.myuniqueid. However, if the item at 1371813798111111.myuniqueid is deleted, I can get the items with the 1371813798111111 timestamp, but would not be able to determine which item with that timestamp I should start with.
Another approach I had was to assign an incrementing number to each feed result. Since the number is incrementing and in order, if the number/id is missing, I can just choose the next one. However, the problem with this is that the cursor ids will change if I start removing and adding feed items in the middle of the feed. One solution I had to this problem is to have a huge gap between each number, but it is difficult to determine how new items can be added to the space between each number in a deterministic way. In addition, as the new items are added, and the gaps are being filled up, we would end up with the same problem.
Simply put, if I have a list of items where items can be added and removed from anywhere in the list, what is the best way to generate an id for each list item such that if the item for the id is deleted, I can still determine its position in the list?
You need to have additional (or existing) column which sequentially increased for every new added row to target table. Let's call this column seq_id.
When client request cursor for the first time:
GET /api/v1/items?sort_by={sortingFieldName}&size={count}
where sortingFieldName is name of field by which we apply sorting
What happened under the hood:
SELECT * FROM items
WHERE ... // apply search params
ORDER BY sortingFieldName, seq_id
LIMIT :count
Response:
{
"data": [...],
"cursor": {
"prev_field_name": "{result[0].sortingFieldName}",
"prev_id": "{result[0].seq_id}",
"nextFieldName": "{result[count-1].sortingFieldName}",
"next_id": "{result[count-1].seq_id}",
"prev_results_link": "/api/v1/items?size={count}&cursor=bw_{prevFieldName}_{prevId}",
"next_results_link": "/api/v1/items?size={count}&cursor=fw_{nextFieldName}_{nextId}"
}
}
Next of cursor will not be present in response if we retrieved less than count rows.
Prev part of cursor will not be present in response if we don't have cursor in request or don't have data to return.
When client perform request again - he need to use cursor. Forward cursor:
GET /api/v1/items?size={count}&cursor=fw_{nextFieldName}_{nextId}
What happened under the hood:
SELECT * FROM items
WHERE ... // apply search params
AND ((fieldName = :cursor.nextFieldName AND seq_id > :cursor.nextId) OR
fieldName > :cursor.nextFieldName)
ORDER BY sortingFieldName, seq_id
LIMIT :count
Or backward cursor:
GET /api/v1/items?size={count}&cursor=fw_{prevFieldName}_{prevId}
What happened under the hood:
SELECT * FROM items
WHERE ... // apply search params
AND ((fieldName = :cursor.prevFieldName AND seq_id < :cursor.prevId) OR
fieldName < :cursor.prevFieldName)
ORDER BY sortingFieldName DESC, seq_id DESC
LIMIT :count
Response will be similar to previous one

Resources