Я пытаюсь скопировать продавца по умолчанию из родительского аккаунта в текущий клиент при обновлении родительского аккаунта. По какой-то причине записи торгового представителя дублируются. Итак, я выбираю родительскую учетную запись на вкладке «Настройки биллинга», а затем на вкладке «Продавцы» появляются два дубликата продавцов, которые были скопированы из родительской учетной записи. На родительском счете есть только один продавец. Когда я сохраняю клиента, я получаю ошибку, конечно:
"Нарушение ограничения PRIMARY KEY 'CustSalesPeople_PK'. Невозможно вставить дубликат ключа в объект 'dbo.CustSalesPeople'"
Я положилточка останова в моем коде, чтобы подтвердить, что он запускается только один раз. Любые идеи о том, почему это происходит?
TIA!
public class CustomerMaint_Extension : PXGraphExtension<CustomerMaint>
{
public PXSelect<CustSalesPeople, Where<CustSalesPeople.bAccountID,
Equal<Current<Customer.parentBAccountID>>>> ParentSalesPeople;
#region Event Handlers
protected virtual void Customer_ParentBAccountID_FieldUpdated(PXCache sender, PXFieldUpdatedEventArgs e)
{
if (e.Row == null)
return;
Customer cust = (Customer)e.Row;
if ((e.OldValue == null) || ((int?)e.OldValue != cust.ParentBAccountID))
{
if (cust.ParentBAccountID > 0)
{
foreach (CustSalesPeople salesPerson in ParentSalesPeople.Select())
{
if (salesPerson.IsDefault == true)
{
CustSalesPeople sp = Base.SalesPersons.Insert();
sp.BAccountID = cust.BAccountID;
sp.CommisionPct = salesPerson.CommisionPct;
sp.IsDefault = true;
sp.LocationID = salesPerson.LocationID;
sp.SalesPersonID = salesPerson.SalesPersonID;
sp = Base.SalesPersons.Update(sp);
//sender.PersistUpdated(sp);
break;
}
}
}
}
}
#endregion
}