Default order setting for an Item

Hello!,

I am using Ax2012.

I want to set purchase site, inventory site and sales site through x++ code. But I am getting this error,Cannot edit a record in Item sales order settings (InventItemSalesSetup).
The record has never been selected.

Help me to find the solution. This is the code that I have used for your reference,

inventDim1.InventSiteId = "ABC";
       .
       .
inventDim = inventDim::findOrCreate(inventDim1);
//InventItemSalesSetup
           inventItemSalesSetup.clear();
           inventItemSalesSetup.initValue();
           inventItemSalesSetup.ItemId = itemId;
           inventItemSalesSetup.InventDimId = inventDim::inventDimIdBlank();
           inventItemSalesSetup.InventDimIdDefault = inventDim.inventDimId;            
           inventItemSalesSetup.insert();
           //InventItemInventSetup
           inventItemInventSetup.clear();
           inventItemInventSetup.initValue();
           inventItemInventSetup.ItemId = itemId;
           inventItemInventSetup.InventDimId = inventDim::inventDimIdBlank();
           inventItemInventSetup.InventDimIdDefault = inventDim.inventDimId;            
           inventItemInventSetup.insert();
           //InventItemPurchSetup
           inventItemPurchSetup.clear();
           inventItemPurchSetup.initValue();
           inventItemPurchSetup.ItemId = itemId;
           inventItemPurchSetup.InventDimId = inventDim::inventDimIdBlank();
           inventItemPurchSetup.InventDimIdDefault = inventDim.inventDimId;
           inventItemPurchSetup.insert();

Thanks

Cannot create a record in Item sales order settings (InventItemSalesSetup). Item number: K11, AllBlank.
The record already exists.
You will get this error. As there should have been already a record with same item and blank inventDimId.

When you release the product, it will automatically creates a record in these tables with blank inventDimId.

Not sure why would you receive an edit error, while inserting the record.

If you want to set the default sites then you may have to update the existing records.

If you want to have site specific order settings, then you have to create new record.

Hello Kranthi!,

Thanks for your help! And sorry for the late reply.

I updated the values but if I see in ReleasedProducts → default order setting → Purchase site, Inventory site, sales site is empty .

Please help how to update those fields . This is the code I have used .

static void LearningDefaultOrderSettings(Args _args)
{
    ItemId itemId = "000156_202";
    InventItemSalesSetup inventItemSalesSetup;
    InventItemPurchSetup inventItemPurchSetup;
    InventItemInventSetup inventItemInventSetup;

        ttsBegin;
            //InventItemSalesSetup
            select forUpdate inventItemSalesSetup
            where inventItemSalesSetup.ItemId == itemId;
            inventItemSalesSetup.initValue();
            inventItemSalesSetup.ItemId = itemId;
            inventItemSalesSetup.InventDimId = '1';
            inventItemSalesSetup.InventDimIdDefault = "Ax#1";
            inventItemSalesSetup.update();
        ttsCommit;
            //InventItemInventSetup
        ttsBegin;
            select forUpdate InventItemInventSetup
            where InventItemInventSetup.ItemId == itemId;
            inventItemInventSetup.initValue();
            inventItemInventSetup.ItemId = itemId;
            inventItemInventSetup.InventDimId = '1';
            inventItemInventSetup.InventDimIdDefault = "Ax#1";
            inventItemInventSetup.update();
        ttsCommit;
            //InventItemPurchSetup
        ttsBegin;
           select forUpdate InventItemPurchSetup
            where InventItemPurchSetup.ItemId == itemId;
            inventItemPurchSetup.initValue();
            inventItemPurchSetup.ItemId = itemId;
            inventItemPurchSetup.InventDimId = '1';
            inventItemPurchSetup.InventDimIdDefault = "Ax#1";
            inventItemPurchSetup.update();
            ttsCommit;
            info('record updated');
}

Thanks.

While you update, update only fields that are necessary. Don’t have to use initValue or update item id and inventDimId.
For updating the site on default order settings, you have to update the InventDimIdDefault field. Leave the inventDimId
to blank dim id.
select forUpdate InventItemInventSetup
where InventItemInventSetup.ItemId == itemId;
inventItemInventSetup.InventDimIdDefault = “Ax#1”; // this is the dim id with site
inventItemInventSetup.update();

You may also have to include inventDimId in your select.

InventDimId inventDimIdBalnk = InventDim::inventDimIdBlank();

select forUpdate InventItemInventSetup
where InventItemInventSetup.ItemId == itemId
&& InventItemInventSetup.InventDimId == inventDimIdBalnk ;

inventItemInventSetup.InventDimIdDefault = “Ax#1”; // this is the dim id with site
inventItemInventSetup.update();

Hello Kranthi!,

Thank you so much it worked.