Статус заказа клиента не изменяется после создания отгрузки - PullRequest
0 голосов
/ 25 октября 2018

создаю отправку типа Передача с пользовательского экрана, используя приведенный ниже код, отправка успешно создается, но состояние на экране «Заказ на продажу» не обновляется, а также не позволяет мне снова создать отправку с экрана «Заказ на продажу», поскольку она ужеимеет открытую отправку, статус обновляется, когда я подтверждаю отправку.Может ли кто-нибудь помочь мне в этом.

soShipmentGraph.CreateShipment(soOrderGraph.Document.Current, graph.Document.Current.SiteID, graph.Document.Current.ShipDate, false, SOOperation.Issue, created);

1 Ответ

0 голосов
/ 25 октября 2018

Состояние обновляется в конце метода CreateShipment на основе значения поля SOOrder.UpdateShipmentCntr, если при создании отправки не было сгенерировано исключение:

if (order.OpenShipmentCntr > 0)
{
   order.Status = SOOrderStatus.Shipping;
   order.Hold = false;
   soorder.Update(order);
}

Поле OpenShipmentCntr обновляется методом SOShipmentEntry.UpdateShipmentCntr:

protected virtual void UpdateShipmentCntr(PXCache sender, object Row, short? Counter)
{
    SOOrder order = (SOOrder)PXParentAttribute.SelectParent(sender, Row, typeof(SOOrder));
    if (order != null)
    {
        order.ShipmentDeleted = (Counter == -1) ? true : (bool?)null;
        order.ShipmentCntr += Counter;
        if (((SOOrderShipment)Row).Confirmed == false)
        {
            order.OpenShipmentCntr += Counter;
        }
        soorder.Cache.SetStatus(order, PXEntryStatus.Updated);
    }
}

При создании отправки SOShipmentEntry должен вставить запись SOOrderShipment, которая связывает SOOrder (Заказ на продажу) с записями SOShipment (Отгрузка).SOOrderShipment должен отображаться на вкладке «Заказы» отгрузки:

enter image description here

После вставки записи SOOrderShipment возникает событие SOOrderShipment RowInserted в SOShipmentEntry:

protected virtual void SOOrderShipment_RowInserted(PXCache sender, PXRowInsertedEventArgs e)
{
    UpdateShipmentCntr(sender, e.Row, (short)1);
}

Я не смог определить причину, по которой статус не изменится, поэтому я бы предложил отладить шаги, ведущие к изменению статуса заказа на продажу.

...