I am currently working on a method that updates the item_number for parts with the Current Revision of the part. This is what I have so far:
(OnAfterVersion)
Innovator inn = this.getInnovator();
Item newItem = inn.newItem("Part", "get");
newItem.setProperty("config_id", this.getProperty("config_id"));
newItem.setProperty("is_current", "1");
newItem.setAttribute("select", "major_rev");
newItem = newItem.apply();
string currRev = newItem.getProperty("major_rev");
string ID = newItem.getID();
string itemNumber = this.getProperty("item_number");
RequestState.Add("newRevision", currRev);
RequestState.Add("newRevisionID", ID);
RequestState.Add("itemNumber", itemNumber);
return this;
(OnBeforeUpdate)
Innovator inn = this.getInnovator();
Aras.Server.Core.InnovatorDatabase conn = CCO.DB.InnDatabase;
string newRevisions = (string) RequestState["newRevision"];
string newItemID = (string) RequestState["newRevisionID"];
string itemNumber = (string) RequestState["itemNumber"];
if (!String.IsNullOrEmpty(newItemID)) {
itemNumber = itemNumber.Remove(itemNumber.Length - 1, 1);
itemNumber = itemNumber + newRevisions;
var sql = "UPDATE INNOVATOR.PART SET item_number='" + itemNumber + "' where id='" + newItemID + "'";
inn.applySQL(sql);
this.setProperty("item_number", itemNumber);
}
return this;
The methods work great until I try to bump two or more parts to the next revision using an eco.
I get the error: An entry with the same key already exists. I'm guess that this is happening cause OnAfterVersion is called for both items before OnBeforeUpdate can run and finish the method. I was wondering if there was a simple work around this?