У меня есть контракт из шаблона, у которого есть опция «Включить переопределение элемента шаблона».Итак, я создаю контракт, используя этот шаблон.Затем, когда я запускаю фактурирование по контракту, он использует конкретную деталь и использует периодическую цену от детализации для расчета суммы в счетах и авизо.
Теперь, если я обновлю конкретную деталь контракта с другой позицией контракта и сохраню ту, котораяимеет другую повторяющуюся цену.Теперь, если я запускаю «Выполнить фактурирование по контракту», я получаю вычисление из той же старой детали контракта, и он не использует обновленную деталь контракта, даже у контракта теперь есть новая деталь контракта.
Когда я просматриваю базу данных каждый раз, когда обновляю позицию контракта в деталях контракта или запускаю расчет контракта, я вижу, что детали контракта дублируются.Я нашел этот код в методе Bill от BillEngine, а также там, где он копирует экземпляр сведений о контракте.
Я попытался поменять LineNbr и RevID со старой детали контракта на новую запись детали, он по-прежнему показывает новую деталь контракта с новой позицией контракта, но все еще использует ту же старую позицию контракта в счетах-фактурах и напоминаниях.
Это то, что я делаю, когда обновляю поле «Элемент договора» в сетке «Детали контракта», чтобы обновлять детали.
protected virtual void ContractDetail_ContractItemID_FieldUpdated(PXCache sender, PXFieldUpdatedEventArgs e, PXFieldUpdated InvokeBaseHandler)
{
if (InvokeBaseHandler != null)
InvokeBaseHandler(sender, e);
ContractDetail row = e.Row as ContractDetail;
if (row != null)
{
ContractItem item = PXSelect<ContractItem, Where<ContractItem.contractItemID, Equal<Required<ContractItem.contractItemID>>>>.Select(Base, row.ContractItemID);
if (item != null)
{
row.Description = item.Descr;
row.Qty = item.DefaultQty;
row.RecurringDiscountPct = 0;
row.FixedRecurringPriceVal = item.FixedRecurringPriceVal;
}
}
}