объединить значения из нескольких полей в одно - PullRequest
0 голосов
/ 06 марта 2020

Мне нужна помощь, я хочу объединить значение типа и значение налоговой категории в поле описания.

enter image description here

Есть идеи?

Спасибо !!

Ответы [ 2 ]

0 голосов
/ 06 марта 2020

Есть несколько способов, которыми вы можете go об этом.

  1. Учитывая, что в вашей конкатенации есть 2 поля, и любое из них может быть изменено в любой момент вы можете управлять логикой c в событии RowUpdated. В этом случае вам следует отфильтровать по указанным c полям, которые необходимо учитывать, чтобы предотвратить выполнение этого логика c для любого другого поля.

Например:

protected virtual void InventoryItem_RowUpdated(PXCache sender, PXRowUpdatedEventArgs e)
{
    InventoryItem newRow = (InventoryItem)e.Row;
    InventoryItem oldRow = (InventoryItem)e.OldRow;
    if (!sender.ObjectsEqual<InventoryItem.itemType>(e.Row, e.OldRow) 
            || !sender.ObjectsEqual<InventoryItem.taxCategoryID>(e.Row, e.OldRow))
    {

            //Add concatenation logic
            sender.SetValue<InventoryItem.descr>(newRow, "NEW CONCATENATED VALUE");
    }
}

Преимущество этого подхода заключается в том, что все логики c централизованы в одном месте.

В качестве альтернативного подхода вы можете использовать FieldUpdated события из ItemType и TaxCategoryID .

Независимо от выбранного варианта, в обоих полях в ASPX должно быть установлено значение CommitChanges , равное true, чтобы логики c выполнялись сразу после снятия фокуса с поля

0 голосов
/ 06 марта 2020

Создать настройки. В проекте настройки go для сценария базы данных создайте сценарий sql. Добавьте следующую команду

 update inventoryitem set descr = case when charindex(' type: ',descr)>0 
then left(descr,charindex(' type: ',descr)) 
else descr end + ' type: ' + case 
when itemtype = 'F' then 'Finished Good' 
when itemtype = 'M' then 'Component Part' 
when itemtype = 'A' then 'SubAssembly' 
when itemtype = 'N' then 'Non-Stock Item' 
when itemtype = 'L' then 'Labor' 
when itemtype = 'S' then 'Service' 
when itemtype = 'C' then 'Charge' 
else 'Expense' end + ' tax: ' + TaxCategoryID

Publi sh настройки всякий раз, когда вы хотите обновить значения.

...