я добавил вкладку «Смешанные платежи» на экране «Счета-фактуры» для обработки проблемы нескольких платежей при продаже за наличные. «Счет-фактура» с несколькими платежами Затем я настроил выпущенную кнопку на экране 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();
}
}