Hi Andre
Please find the below code
In Form "LedgerJournalTransVendInvoice"
I have added new control and added lookup method to fill workers , and in same control i have made changes in modified method.
public boolean modified()
{
boolean ret;
str worker,voucher;
ret = super();
element.sfi_updateworkerdimension(this.valueStr(),ledgerjournaltrans.DefaultDimension,ledgerjournaltrans.Voucher);
LedgerCache::clearAllScopes();
element.task(2876);
return ret;
}
and code for sfi_updateworkerdimension() method is below
public void sfi_updateworkerdimension(str worker,int64 defaultdimension,str voucher)
{
str worker2;
DimensionAttributeValueSetStorage dimensionAttributeValueSetStorage;
DimensionAttribute dimensionAttribute;
Ledgerjournaltrans ledgerjournaltrans1 = Ledgerjournaltrans::findLedgerJournalId(voucher);
DimensionValue oldDimensionValue;
DimensionValue newDimensionValue = worker;
DimensionDefault newDimensionDefault;
// Get current value
oldDimensionValue = this.sfi_getDimensonValue(ledgerjournaltrans1.DefaultDimension);
// Build DimensionAttributeValueSetStorage
dimensionAttributeValueSetStorage = DimensionAttributeValueSetStorage::find(ledgerjournaltrans1.DefaultDimension);
// Remove old dimension value
dimensionAttribute = DimensionAttribute::findByName("Worker");
dimensionAttributeValueSetStorage.removeDimensionAttributeValue(
DimensionAttributeValue::findByDimensionAttributeAndValue(dimensionAttribute, oldDimensionValue).RecId);
// Set new dimension value
if(newDimensionValue != "")
{
dimensionAttribute = DimensionAttribute::findByName("Worker");
//here i have made info inside dimensionAttributeValueSetStorage.addItem() method
dimensionAttributeValueSetStorage.addItem(
DimensionAttributeValue::findByDimensionAttributeAndValue(dimensionAttribute, newDimensionValue));
}
newDimensionDefault = dimensionAttributeValueSetStorage.save();
ttsbegin;
ledgerjournaltrans1.selectForUpdate(true);
ledgerjournaltrans1.DefaultDimension = newDimensionDefault;
ledgerjournaltrans1.update();
ttscommit;
}