Копирование торгового представителя от одного клиента другому - PullRequest
0 голосов
/ 10 октября 2019

Я пытаюсь скопировать продавца по умолчанию из родительского аккаунта в текущий клиент при обновлении родительского аккаунта. По какой-то причине записи торгового представителя дублируются. Итак, я выбираю родительскую учетную запись на вкладке «Настройки биллинга», а затем на вкладке «Продавцы» появляются два дубликата продавцов, которые были скопированы из родительской учетной записи. На родительском счете есть только один продавец. Когда я сохраняю клиента, я получаю ошибку, конечно:

"Нарушение ограничения 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
  }

1 Ответ

0 голосов
/ 14 октября 2019

Я бы хотел упомянуть несколько вещей:

Во-первых, как говорится в сообщении об ошибке, возможно, вы вставляете дубликат записи продавца. Я бы сначала проверил, существует ли он в базе данных.

Это также может быть связано с тем, что продавец привязан к месту нахождения клиента. Вы присоединяете его к locationID местоположения родителя. Возможно, вы захотите найти соответствующий locationCD для клиента (например, MAIN) и использовать этот ключ для обновления продавца, если это необходимо.

...