Выполнение биллинга по контракту использует старые детали контракта - PullRequest
0 голосов
/ 17 мая 2019

У меня есть контракт из шаблона, у которого есть опция «Включить переопределение элемента шаблона».Итак, я создаю контракт, используя этот шаблон.Затем, когда я запускаю фактурирование по контракту, он использует конкретную деталь и использует периодическую цену от детализации для расчета суммы в счетах и ​​авизо.

Теперь, если я обновлю конкретную деталь контракта с другой позицией контракта и сохраню ту, котораяимеет другую повторяющуюся цену.Теперь, если я запускаю «Выполнить фактурирование по контракту», я получаю вычисление из той же старой детали контракта, и он не использует обновленную деталь контракта, даже у контракта теперь есть новая деталь контракта.

Когда я просматриваю базу данных каждый раз, когда обновляю позицию контракта в деталях контракта или запускаю расчет контракта, я вижу, что детали контракта дублируются.Я нашел этот код в методе 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;
                }
            }
        }
...