Линии смещены с настраиваемыми полями в сетке продуктов Opportunity на одну строку вниз на настроенном сайте.
Фон :
У нас есть настройка, которая обеспечивает поля единици% в шапке.PXFormula используется в ЦАП для любых зависимых от расчета значений.
У продуктов возможностей есть 4 добавленных поля:
- Последняя стоимость = Последняя стоимость из InventoryItem
- Общая стоимость= Кол-во * Последняя стоимость
- Маржа = ExtAmt - ExtCost
- Стоимость вручную, флажок, разрешающий ручную отмену последней стоимости
Возможность имеет 2 добавленных поля:
- Сумма маржи = Сумма маржи
- Маржа% = Сумма маржи / Общая сумма продаж
Проблема :
Существует проблема с возможностями настройки, когда строки смещаются на одну строку при копировании записи из существующей возможности или при импорте файла Excel.
Существующая запись
После копирования/ Вставить или импортировать из Excel
Код :
Мой текущий код:
public PXSelect<INItemCost,
Where<INItemCost.inventoryID,
Equal<Current<CROpportunityProducts.inventoryID>>>> Cost;
protected void CROpportunityProducts_RowInserting(PXCache cache,
PXRowInsertingEventArgs e, PXRowInserting InvokeBaseHandler)
{
if(InvokeBaseHandler != null)
InvokeBaseHandler(cache, e);
var row = (CROpportunityProducts)e.Row;
if (row == null) return;
var rowExt = cache.GetExtension<CROpportunityProductsExt>(row);
if (rowExt == null) return;
var cost = Cost.SelectSingle();
if (cache.GetValue(row, "usrManCost") == null) return;
if (cost != null && (bool)cache.GetValue(row, "usrManCost") == false)
{
cache.SetValueExt<CROpportunityProductsExt.usrLastCost>(row, cost.LastCost);
}
}
Что может быть причиной этого?У меня есть мысли, что событие RowInserting возвращает 0 для первой строки, поскольку оператор PXSelect <> возвращает 0, поскольку InventoryItem не находится в кэше до следующей строки.
Одним из возможных решений, которое я придумал, было использование RowInserted.Это решает проблему при использовании копирования / вставки.Однако это приводит к тому, что импорт из Excel неправильно рассчитывает общую маржу.