首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Acumatica -活动“冲销并核销备注”默认过帐期间至有效财务期间

Acumatica -活动“冲销并核销备注”默认过帐期间至有效财务期间
EN

Stack Overflow用户
提问于 2020-06-04 04:41:32
回答 2查看 123关注 0票数 1

在按下“发票和备忘录”屏幕中的“冲销并核销备忘”操作后,是否可以创建自定义以将过帐期间设置为当前有效的财务期间?

我们已经注意到,新创建的贷项通知单默认为发票的后期,如果在下一个财务期间贷记,这可能是不正确的。

EN

回答 2

Stack Overflow用户

发布于 2020-06-09 02:24:54

您正在讨论应收帐款方面的事情,但我在应付款方面也做了类似的事情。这并不完全是你想要的,但它太大了,无法发表评论。您也许能够从中获得总体思路,并将其应用于您的场景。我采取的方法是在发布时检查时间段。

代码语言:javascript
复制
protected virtual void _(Events.FieldUpdated<APInvoice.finPeriodID> e)
{
    APInvoice row = (APInvoice)e.Row;
    CheckPeriod(e.Cache, row);
}

#region Release override
public delegate IEnumerable ReleaseDelegate(PXAdapter adapter);
[PXOverride]
public virtual IEnumerable Release(PXAdapter adapter, ReleaseDelegate baseMethod)
{
    CheckPeriod(Base.Caches[typeof(APInvoice)], Base.Document.Current);
    return baseMethod(adapter);
}
#endregion

protected virtual void CheckPeriod(PXCache cache, APInvoice invoice)
{
    if (invoice?.FinPeriodID == null) return;

    string currentPeriod = GetCurrentPeriod(invoice.BranchID);
    if (currentPeriod != invoice.FinPeriodID)
    {
        PXUIFieldAttribute.SetError<APInvoice.finPeriodID>(cache, invoice, "Invalid period");
    }

}

public virtual string GetCurrentPeriod(int? branchID)
{
    PXResultset<Branch> Results = PXSelectJoin<GL.Branch,
        InnerJoin<FinPeriod, On<FinPeriod.organizationID, Equal<Branch.organizationID>>>,
        Where<Branch.branchID, Equal<Required<Branch.branchID>>,
            And<FinPeriod.startDate, LessEqual<Required<FinPeriod.startDate>>,
            And<FinPeriod.endDate, Greater<Required<FinPeriod.endDate>>>>>>  // End Date is the date AFTER the period ends
        .SelectSingleBound(Base, null, branchID, Base.Accessinfo.BusinessDate, Base.Accessinfo.BusinessDate);

    if (Results != null)
    {
        foreach (PXResult<GL.Branch, FinPeriod> result in Results)
        {
            FinPeriod period = result;
            return period.FinPeriodID;
        }
    }
    return null;
}

正如您所看到的,我在释放上放置了一个覆盖,以执行我的验证,如果期间不是当前的,它将设置一个错误条件。验证是通过检索当前业务日期的当前期间并与APInvoice上的期间进行比较来执行的。

您可以从示例中探索如何利用GetCurrentPeriod,并在FieldDefaulting上进行覆盖(如果它有助于实现您的目标)。

票数 0
EN

Stack Overflow用户

发布于 2020-06-09 23:19:44

下面定义的解决方案是在Acumatica 20.102.0015中开发的,它将“冲销并应用备注”操作中创建的贷项通知单的日期和过帐期间更改为新单据的默认值,而不是冲销发票中的日期。

代码语言:javascript
复制
namespace AARAMPostPeriod
{
    public class AAARInvoiceEntryExtension : PXGraphExtension<ARInvoiceEntry>
    {
        public delegate IEnumerable ReverseDocumentAndApplyToReversalIfNeededDel(PXAdapter adapter, ReverseInvoiceArgs reverseArgs);

        [PXOverride]
        public virtual IEnumerable ReverseDocumentAndApplyToReversalIfNeeded(PXAdapter adapter, ReverseInvoiceArgs reverseArgs, ReverseDocumentAndApplyToReversalIfNeededDel del)
        {
            if(reverseArgs.ApplyToOriginalDocument) reverseArgs.DateOption = ReverseInvoiceArgs.CopyOption.SetDefault;
            return del(adapter, reverseArgs);
        }
    }
}

reverseArgs.DateOption的默认值通常为

代码语言:javascript
复制
ReverseInvoiceArgs.CopyOption.SetOriginal
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62182381

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档