在付款和应用程序屏幕上需要输入

时间:2018-09-05 06:44:06

标签: acumatica

任何人都可以帮助我,在“到期日期”字段中将填充什么方案值,.aspx看起来像这样,它来自SOOrder DAC。

<px:PXGridColumn DataField="SOOrder__DueDate" Label="Due Date" Width="90px" ></px:PXGridColumn>

enter image description here

1 个答案:

答案 0 :(得分:0)

双下划线符号'__'是Acumatica的一种约定,这意味着该字段来自于加入的DAC,而不是DataView的主DAC。

使用网格上的Acumatica Inspect Element功能,您可以找到DataView名称'SOAdjustments'并使用按钮Actions-> View Business Logic Source ...来获取DataView声明:

@section

DataView的主要DAC是BQL查询中出现的第一个DAC:在这种情况下为SOAdjust。

在LeftJoin BQL子句中,SOOrder DAC已加入查询。屏幕上显示的DueDate字段是该查询的联合SOOrder DAC。

SOOrder.DueDate字段解析为SOOrder数据库表的DueDate字段。这是一个标准的DB字段,这意味着显示的值只是从数据库中获取的。

在您的情况下,我认为该值最初是由SOOrder.TermsID字段上的[Terms(...)]属性设置的:

PXSelectJoin<SOAdjust,

LeftJoin<SOOrder, On<SOOrder.orderType, Equal<SOAdjust.adjdOrderType>,
                  And<SOOrder.orderNbr, Equal<SOAdjust.adjdOrderNbr>>>>,

Where<SOAdjust.adjgDocType, Equal<Current<ARPayment.docType>>,
      And<SOAdjust.adjgRefNbr, Equal<Current<ARPayment.refNbr>>>>> SOAdjustments;

计算DueDate的算法是PX.Objects.CS.TermsAttribute.CalcTermsDates方法的一部分:

#region TermsID
public abstract class termsID : PX.Data.IBqlField
{
}
protected String _TermsID;
[PXDBString(10, IsUnicode = true)]
[PXDefault(typeof(Search<Customer.termsID, Where<Customer.bAccountID, Equal<Current<SOOrder.customerID>>>>), PersistingCheck = PXPersistingCheck.Nothing)]
[PXUIField(DisplayName = "Terms", Visibility = PXUIVisibility.Visible)]
[PXSelector(typeof(Search<Terms.termsID, Where<Terms.visibleTo, Equal<TermsVisibleTo.all>, Or<Terms.visibleTo, Equal<TermsVisibleTo.customer>>>>), DescriptionField = typeof(Terms.descr), Filterable = true)]
[Terms(typeof(SOOrder.invoiceDate), typeof(SOOrder.dueDate), typeof(SOOrder.discDate), typeof(SOOrder.curyOrderTotal), typeof(SOOrder.curyTermsDiscAmt))]
public virtual String TermsID
{
    get
    {
        return this._TermsID;
    }
    set
    {
        this._TermsID = value;
    }
}
#endregion