Как сохранить изменения на Opportunity с другого экрана? - PullRequest
0 голосов
/ 12 сентября 2018

У меня есть поле в CROpportunity с именем UsrOrderTotalValue. Заказ на продажу (SO301000) и Opportunitis (CR304000) связаны с добавленным в SOOrder вкладке обычным полем UsrOpportunityID. Когда кнопка «Сохранить» нажата на Заказе на продажу, необходимо сохранить в UsrOrderTotalValue некоторое значение. Часть кода приведена ниже. Кроме того, ниже я пробовал разные подходы к использованию Persist, но ничего не работает. Моя версия Acumatica: Acumatica 2018 R1 (18.110.0017)

OpportunityMaint opportunityGraph = PXGraph.CreateInstance<OpportunityMaint>();
SOOrderExt sOOrderExt = row.GetExtension<SOOrderExt>();
CROpportunity cROpportunity = Opportunity.Select(sOOrderExt.UsrOpportunityID);

opportunityGraph.Opportunity.Update(cROpportunity);
opportunityGraph.Save.Press();

1 Ответ

0 голосов
/ 12 сентября 2018

Попробуйте, как показано ниже, у меня есть жестко закодированное значение, пожалуйста, замените ваши поля.

    [PXOverride]
    public void Persist(Action del)
    {
        if ((Base.Document.Cache.GetStatus(Base.Document.Current) == PXEntryStatus.Inserted || Base.Document.Cache.GetStatus(Base.Document.Current) == PXEntryStatus.Updated))
        {
            OpportunityMaint opportunityGraph = PXGraph.CreateInstance<OpportunityMaint>();
            CROpportunity cROpportunity = new CROpportunity();

            cROpportunity.OpportunityID = "000001";
            cROpportunity = opportunityGraph.Opportunity.Current = opportunityGraph.Opportunity.Select(cROpportunity);

            if (cROpportunity != null)
                cROpportunity.OpportunityName = "test";

            opportunityGraph.Opportunity.Update(cROpportunity);
            opportunityGraph.Save.Press();
        }
        del();
    }
...