Set "Item has BOM"-indicator

Hi,

To indicate that a Part has BOM or not I want to set a field (HasBOM) to 1 or 0

I have below server side code  triggered on onBeforeAdd and  OnBeforeUpdate on the Part item type

It works,

But I have to press save twice!? to have the field updated after I removed or added a BOM,
is there a way to have it updated directly on save???

Thanks for any idea

//Mikael

// Method to check if item has BOM and set HasBOM "

Innovator inn = this.getInnovator();
string issueID = this.getProperty("source_id","");

Item updatedBOM = inn.applyAML( "<AML>" + " <Item type='Part BOM' action='get' select='related(item_number)'>" + " <source_id>" + this.getID() + "</source_id>" + " <related_id>" + " <Item>" + " </Item>" + " </related_id>" + " </Item>" + "</AML>");


if (updatedBOM.getItemCount() > 0)

{
this.setProperty("hasbom", "1");
}
else
{
this.setProperty("hasbom", "0");
}

return this;

Parents
  • Hi Mikael,

    please check out the Files flag used in Manufacturer Parts. It does something similar and works very reliable. The corresponding Methods can be found as Server Events in ItemType Manufacturer Part Files. But you have to change the corresponding SQL Procedure.

    Angela

  • Hi, 

    I had the same problem :-). 

    Just keep it simple:

    SET @relationship_db_name = (select instance_data from [ITEMTYPE] where
    id = (select relationship_id from [RELATIONSHIPTYPE] where
    source_id = (select id from [ITEMTYPE] where name = @itemtypename)
    AND
    name = 'Part BOM'))

    As long as you don´t feel the need to change the name of the Part BOM ItemType, you will be fine.

Reply
  • Hi, 

    I had the same problem :-). 

    Just keep it simple:

    SET @relationship_db_name = (select instance_data from [ITEMTYPE] where
    id = (select relationship_id from [RELATIONSHIPTYPE] where
    source_id = (select id from [ITEMTYPE] where name = @itemtypename)
    AND
    name = 'Part BOM'))

    As long as you don´t feel the need to change the name of the Part BOM ItemType, you will be fine.

Children