Состояние обновляется в конце метода 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 должен отображаться на вкладке «Заказы» отгрузки:
После вставки записи SOOrderShipment возникает событие SOOrderShipment RowInserted в SOShipmentEntry:
protected virtual void SOOrderShipment_RowInserted(PXCache sender, PXRowInsertedEventArgs e)
{
UpdateShipmentCntr(sender, e.Row, (short)1);
}
Я не смог определить причину, по которой статус не изменится, поэтому я бы предложил отладить шаги, ведущие к изменению статуса заказа на продажу.