Acumatica, измените партию Generated Gl с таким счетом для обработки нескольких платежей - PullRequest
0 голосов
/ 03 ноября 2019

я добавил вкладку «Смешанные платежи» на экране «Счета-фактуры» для обработки проблемы нескольких платежей при продаже за наличные. «Счет-фактура» с несколькими платежами Затем я настроил выпущенную кнопку на экране SoInvoice для изменения в сгенерированном пакете GL, но у меня есть следующийпроблемы. 1- Проблема не выпускает Автоматически после выставления счета. 2 - Я добавил только некоторые записи в пакете GL, но не смог удалить ни одной записи. (Мне нужно удалить одну запись из сгенерированного пакета GL). 3-в таблице базы данных (GlTran) после добавления нескольких записей я замечаю четыре столбца с разными значениями Sql pic

namespace PX.Objects.SO

{

public class SOInvoiceEntry_Extension : PXGraphExtension<SOInvoiceEntry>
{
    public delegate IEnumerable ReleaseDelegate(PXAdapter adapter);
    [PXOverride]
    public IEnumerable Release(PXAdapter adapter, ReleaseDelegate baseMethod)
    {
        PXGraph.InstanceCreated.AddHandler<JournalEntry>((JournalEntry graph) =>
        {
            graph.GetExtension<JournalEntry_Extension>().RefNbrmix = this.Base.Document.Current.RefNbr;
            graph.GetExtension<JournalEntry_Extension>().DocTypemix = this.Base.Document.Current.DocType;
            graph.GetExtension<JournalEntry_Extension>().ModifyBatchFromAP = true;

        });

        return baseMethod(adapter);
    }

}

}

пространство имен PX.Objects.GL {

public class JournalEntry_Extension : PXGraphExtension<JournalEntry>
{
    [PXOverride]
    public void Persist(Action del)
    {

        if (ModifyBatchFromAP)
        {
            string RefNbr = RefNbrmix;
            string DocType = DocTypemix;
            decimal? Total = 0;
            ArrayList tran = new ArrayList();
            PXSelectBase<MixPayments> nonStk = new PXSelectReadonly<MixPayments, Where<MixPayments.refNbr, Equal<Required<MixPayments.refNbr>>, And<MixPayments.docType, Equal<Required<MixPayments.docType>>>>>(this.Base);
            nonStk.Cache.ClearQueryCache();
            PXResultset<MixPayments> resultNonStk = nonStk.Select(RefNbr, DocType);
            foreach (MixPayments nonStkItem in resultNonStk)
            {
                var glTran = Base.GLTranModuleBatNbr.Insert();
                Base.GLTranModuleBatNbr.SetValueExt<GLTran.accountID>(glTran, nonStkItem.AccountID);
                glTran = Base.GLTranModuleBatNbr.Update(glTran);
                Base.GLTranModuleBatNbr.SetValueExt<GLTran.subID>(glTran, nonStkItem.SubId);
                Base.GLTranModuleBatNbr.SetValueExt<GLTran.curyDebitAmt>(glTran, nonStkItem.LineAmount);
                Base.GLTranModuleBatNbr.SetValueExt<GLTran.debitAmt>(glTran, nonStkItem.LineAmount);
                Base.GLTranModuleBatNbr.SetValueExt<GLTran.tranType>(glTran, DocType);
                Base.GLTranModuleBatNbr.SetValueExt<GLTran.refNbr>(glTran, RefNbr);
                Base.GLTranModuleBatNbr.Update(glTran);
                Total = Total + nonStkItem.LineAmount;
            }

            var glTran2 = Base.GLTranModuleBatNbr.Insert();
            Base.GLTranModuleBatNbr.SetValueExt<GLTran.accountID>(glTran2, "1301056");
            glTran2 = Base.GLTranModuleBatNbr.Update(glTran2);
            Base.GLTranModuleBatNbr.SetValueExt<GLTran.subID>(glTran2, "HDM0000");
            glTran2.CuryCreditAmt = Total;
            glTran2.CreditAmt = Total;
            glTran2.TranType = DocType;
            glTran2.RefNbr = RefNbr;
            Base.GLTranModuleBatNbr.Update(glTran2);
        }

        del();
    }

}
...