Ошибка: Ссылка Nbr. не может быть найден в системе .. "}

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

    public void ReleaseCreditMemo(string refNbr)
    {
        try
        {
            ARPaymentEntry docGraph = PXGraph.CreateInstance<ARPaymentEntry>();
            List<ARRegister> list = new List<ARRegister>();
            ARPayment payment;

            ARRegister invoice = PXSelect<ARRegister, Where<ARRegister.docType, Equal<Required<ARRegister.docType>>, And<ARRegister.refNbr, Equal<Required<ARRegister.refNbr>>>>>.Select(docGraph, ARInvoiceType.CreditMemo, refNbr);

            docGraph.Document.Current = PXSelect<ARPayment, Where<ARPayment.docType, Equal<Required<ARPayment.docType>>, And<ARPayment.refNbr, Equal<Required<ARPayment.refNbr>>>>>.Select(docGraph, ARInvoiceType.CreditMemo, refNbr);

            payment = docGraph.Document.Current;

            list.Add(payment);

            foreach (ISARWhTax item in ARWhLine.Select())
            {
                decimal? _CuryAdjgAmt = payment.CuryOrigDocAmt > invoice.CuryDocBal ? invoice.CuryDocBal : payment.CuryOrigDocAmt;
                decimal? _CuryAdjgDiscAmt = payment.CuryOrigDocAmt > invoice.CuryDocBal ? 0m : invoice.CuryDiscBal;
                ARAdjust adj = new ARAdjust();
                adj.AdjdBranchID = item.AdjdBranchID;
                adj.AdjdDocType = ARInvoiceType.Invoice;
                adj.AdjdRefNbr = item.AdjdRefNbr;
                adj.AdjdCustomerID = item.CustomerID;
                adj.AdjdDocDate = invoice.DocDate;
                adj.CuryAdjgAmt = _CuryAdjgAmt;
                adj.CuryAdjdDiscAmt = _CuryAdjgDiscAmt;

                if (docGraph.Document.Current.CuryUnappliedBal == 0m && docGraph.Document.Current.CuryOrigDocAmt > 0m)
                {
                    throw new PXLoadInvoiceException();
                }
                //This line code below OCCURS THE ERROR
                docGraph.Adjustments.Insert(adj);
            }
            docGraph.Save.Press();
            PXLongOperation.StartOperation(docGraph, delegate() { ARDocumentRelease.ReleaseDoc(list, false); });
        }
        catch (Exception ex)
        {
            throw new PXException(ex.Message);
        }
    }

person xxxAcuGeekxxx    schedule 12.02.2016    source источник


Ответы (2)


Я бы посмотрел на селектор поля, вызывающего ошибку («Ссылочный номер»), так как наличие селектора в поле будет проверять введенное значение в операторе выбора селектора (если только validatevalue = false для селектора). Возможно, селектор подскажет, чего не хватает или что вызывает сбой проверки.

person Brendan    schedule 12.02.2016

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

 PXLongOperation.StartOperation(this.Base, delegate() { ARDocumentRelease.ReleaseDoc(list, false); });
person xxxAcuGeekxxx    schedule 16.02.2016