Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/api/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Api Acumatica如何获得现金账户的开始或结束余额?_Api_Acumatica - Fatal编程技术网

Api Acumatica如何获得现金账户的开始或结束余额?

Api Acumatica如何获得现金账户的开始或结束余额?,api,acumatica,Api,Acumatica,当我在“Founds Transfers”(CA301000)中选择现金账户时,总账余额和可用余额条目将更新 这些金额来自哪里?我的意思是,我需要通过GI查询这些字段,但我无法找出表的名称 有任何线索吗?总账余额和可用余额字段是CATTransfer DAC的一部分。 在CATTransfer数据库表中找不到这些字段,因为它们在运行时在CATTransfer DAC中作为未绑定字段使用GLBALANCETribute和CASHBALANCETribute的FieldSelecting事件进行计算

当我在“Founds Transfers”(CA301000)中选择现金账户时,总账余额可用余额条目将更新

这些金额来自哪里?我的意思是,我需要通过GI查询这些字段,但我无法找出表的名称


有任何线索吗?

总账余额和可用余额字段是CATTransfer DAC的一部分。 在CATTransfer数据库表中找不到这些字段,因为它们在运行时在CATTransfer DAC中作为未绑定字段使用GLBALANCETribute和CASHBALANCETribute的FieldSelecting事件进行计算

通过按住Ctl+Alt并单击该字段,可以找到UI元素的DAC和数据字段

以下是ATransfer Dac中的GLBalance属性供参考:

    #region InGLBalance
    public abstract class inGLBalance : PX.Data.IBqlField
    {
    }
    protected Decimal? _InGLBalance;

    [PXDefault(TypeCode.Decimal, "0.0", PersistingCheck = PXPersistingCheck.Nothing)]
    [PXCury(typeof(CATransfer.inCuryID))]
    [PXUIField(DisplayName = "GL Balance", Enabled = false)]
    [GLBalance(typeof(CATransfer.inAccountID), null, typeof(CATransfer.inDate))]
    public virtual Decimal? InGLBalance
    {
        get
        {
            return this._InGLBalance;
        }
        set
        {
            this._InGLBalance = value;
        }
    }
    #endregion
    #region OutGLBalance
    public abstract class outGLBalance : PX.Data.IBqlField
    {
    }
    protected Decimal? _OutGLBalance;

    [PXDefault(TypeCode.Decimal, "0.0", PersistingCheck = PXPersistingCheck.Nothing)]
    [PXCury(typeof(CATransfer.outCuryID))]
    [PXUIField(DisplayName = "GL Balance", Enabled = false)]
    [GLBalance(typeof(CATransfer.outAccountID), null, typeof(CATransfer.outDate))]
    public virtual Decimal? OutGLBalance
    {
        get
        {
            return this._OutGLBalance;
        }
        set
        {
            this._OutGLBalance = value;
        }
    }
    #endregion
    #region CashBalanceIn
    public abstract class cashBalanceIn : PX.Data.IBqlField
    {
    }
    protected Decimal? _CashBalanceIn;
    [PXDefault(TypeCode.Decimal, "0.0", PersistingCheck = PXPersistingCheck.Nothing)]
    [PXCury(typeof(CATransfer.inCuryID))]
    [PXUIField(DisplayName = "Available Balance", Enabled = false)]
    [CashBalance(typeof(CATransfer.inAccountID))]
    public virtual Decimal? CashBalanceIn
    {
        get
        {
            return this._CashBalanceIn;
        }
        set
        {
            this._CashBalanceIn = value;
        }
    }
    #endregion
    #region CashBalanceOut
    public abstract class cashBalanceOut : PX.Data.IBqlField
    {
    }
    protected Decimal? _CashBalanceOut;
    [PXDefault(TypeCode.Decimal, "0.0", PersistingCheck = PXPersistingCheck.Nothing)]
    [PXCury(typeof(CATransfer.outCuryID))]
    [PXUIField(DisplayName = "Available Balance", Enabled = false)]
    [CashBalance(typeof(CATransfer.outAccountID))]
    public virtual Decimal? CashBalanceOut
    {
        get
        {
            return this._CashBalanceOut;
        }
        set
        {
            this._CashBalanceOut = value;
        }
    }
    #endregion
以下是计算值的GLBalanceAttribute类FieldSelecting事件:

    public virtual void FieldSelecting(PXCache sender, PXFieldSelectingEventArgs e)
    {
        GLSetup gLSetup = PXSelect<GLSetup>.Select(sender.Graph);
        decimal? result = 0m;
        object CashAccountID = sender.GetValue(e.Row, _CashAccount);

        object FinPeriodID = null;

        if (string.IsNullOrEmpty(_FinPeriodID))
        {
            object FinDate = sender.GetValue(e.Row, _FinDate);
            FinPeriod finPeriod = PXSelect<FinPeriod, Where<FinPeriod.startDate, LessEqual<Required<FinPeriod.startDate>>,
                                                        And<FinPeriod.endDate, Greater<Required<FinPeriod.endDate>>>>>.Select(sender.Graph, FinDate, FinDate);
            if (finPeriod != null)
            {
                FinPeriodID = finPeriod.FinPeriodID;
            }
        }
        else
        {
            FinPeriodID = sender.GetValue(e.Row, _FinPeriodID);
        }

        if (CashAccountID != null && FinPeriodID != null)
        {
            // clear glhistory cache for ReleasePayments longrun
            sender.Graph.Caches<GLHistory>().ClearQueryCache();
            sender.Graph.Caches<GLHistory>().Clear();

            GLHistory gLHistory = PXSelectJoin<GLHistory,
                                                InnerJoin<GLHistoryByPeriod,
                                                        On<GLHistoryByPeriod.accountID, Equal<GLHistory.accountID>,
                                                        And<GLHistoryByPeriod.branchID, Equal<GLHistory.branchID>,
                                                        And<GLHistoryByPeriod.ledgerID, Equal<GLHistory.ledgerID>,
                                                        And<GLHistoryByPeriod.subID, Equal<GLHistory.subID>,
                                                        And<GLHistoryByPeriod.lastActivityPeriod, Equal<GLHistory.finPeriodID>>>>>>,
                                                InnerJoin<Branch,
                                                        On<Branch.branchID, Equal<GLHistory.branchID>,
                                                        And<Branch.ledgerID, Equal<GLHistory.ledgerID>>>,
                                                InnerJoin<CashAccount,
                                                        On<GLHistoryByPeriod.branchID, Equal<CashAccount.branchID>, 
                                                        And<GLHistoryByPeriod.accountID, Equal<CashAccount.accountID>,
                                                        And<GLHistoryByPeriod.subID, Equal<CashAccount.subID>>>>,
                                                InnerJoin<Account,
                                                        On<GLHistoryByPeriod.accountID, Equal<Account.accountID>, 
                                                        And<Match<Account, Current<AccessInfo.userName>>>>,
                                                InnerJoin<Sub,
                                                        On<GLHistoryByPeriod.subID, Equal<Sub.subID>, And<Match<Sub, Current<AccessInfo.userName>>>>>>>>>,
                                                Where<CashAccount.cashAccountID, Equal<Required<CashAccount.cashAccountID>>,
                                                   And<GLHistoryByPeriod.finPeriodID, Equal<Required<GLHistoryByPeriod.finPeriodID>>>
                                                 >>.Select(sender.Graph, CashAccountID, FinPeriodID);

            if (gLHistory != null)
            {
                result = gLHistory.CuryFinYtdBalance;
            }
        }
        e.ReturnValue = result;
        e.Cancel = true;
    }
} 
    public virtual void FieldSelecting(PXCache sender, PXFieldSelectingEventArgs e)
    {
        CASetup caSetup = PXSelect<CASetup>.Select(sender.Graph);
        decimal? result = 0m;
        object CashAccountID = sender.GetValue(e.Row, _CashAccount);

        CADailySummary caBalance = PXSelectGroupBy<CADailySummary,
                                                     Where<CADailySummary.cashAccountID, Equal<Required<CADailySummary.cashAccountID>>>,
                                                                Aggregate<Sum<CADailySummary.amtReleasedClearedCr,
                                                                 Sum<CADailySummary.amtReleasedClearedDr,
                                                                 Sum<CADailySummary.amtReleasedUnclearedCr,
                                                                 Sum<CADailySummary.amtReleasedUnclearedDr,
                                                                 Sum<CADailySummary.amtUnreleasedClearedCr,
                                                                 Sum<CADailySummary.amtUnreleasedClearedDr,
                                                                 Sum<CADailySummary.amtUnreleasedUnclearedCr,
                                                                 Sum<CADailySummary.amtUnreleasedUnclearedDr>>>>>>>>>>.
                                                                 Select(sender.Graph, CashAccountID);
        if ((caBalance != null) && (caBalance.CashAccountID != null))
        {
            result = caBalance.AmtReleasedClearedDr - caBalance.AmtReleasedClearedCr;

            if ((bool)caSetup.CalcBalDebitClearedUnreleased)
                result += caBalance.AmtUnreleasedClearedDr;
            if ((bool)caSetup.CalcBalCreditClearedUnreleased)
                result -= caBalance.AmtUnreleasedClearedCr;
            if ((bool)caSetup.CalcBalDebitUnclearedReleased)
                result += caBalance.AmtReleasedUnclearedDr;
            if ((bool)caSetup.CalcBalCreditUnclearedReleased)
                result -= caBalance.AmtReleasedUnclearedCr;
            if ((bool)caSetup.CalcBalDebitUnclearedUnreleased)
                result += caBalance.AmtUnreleasedUnclearedDr;
            if ((bool)caSetup.CalcBalCreditUnclearedUnreleased)
                result -= caBalance.AmtUnreleasedUnclearedCr;
        }
        e.ReturnValue = result;
        e.Cancel = true;
    }
} 
以及计算值的CashBalanceAttribute类FieldSelecting事件:

    public virtual void FieldSelecting(PXCache sender, PXFieldSelectingEventArgs e)
    {
        GLSetup gLSetup = PXSelect<GLSetup>.Select(sender.Graph);
        decimal? result = 0m;
        object CashAccountID = sender.GetValue(e.Row, _CashAccount);

        object FinPeriodID = null;

        if (string.IsNullOrEmpty(_FinPeriodID))
        {
            object FinDate = sender.GetValue(e.Row, _FinDate);
            FinPeriod finPeriod = PXSelect<FinPeriod, Where<FinPeriod.startDate, LessEqual<Required<FinPeriod.startDate>>,
                                                        And<FinPeriod.endDate, Greater<Required<FinPeriod.endDate>>>>>.Select(sender.Graph, FinDate, FinDate);
            if (finPeriod != null)
            {
                FinPeriodID = finPeriod.FinPeriodID;
            }
        }
        else
        {
            FinPeriodID = sender.GetValue(e.Row, _FinPeriodID);
        }

        if (CashAccountID != null && FinPeriodID != null)
        {
            // clear glhistory cache for ReleasePayments longrun
            sender.Graph.Caches<GLHistory>().ClearQueryCache();
            sender.Graph.Caches<GLHistory>().Clear();

            GLHistory gLHistory = PXSelectJoin<GLHistory,
                                                InnerJoin<GLHistoryByPeriod,
                                                        On<GLHistoryByPeriod.accountID, Equal<GLHistory.accountID>,
                                                        And<GLHistoryByPeriod.branchID, Equal<GLHistory.branchID>,
                                                        And<GLHistoryByPeriod.ledgerID, Equal<GLHistory.ledgerID>,
                                                        And<GLHistoryByPeriod.subID, Equal<GLHistory.subID>,
                                                        And<GLHistoryByPeriod.lastActivityPeriod, Equal<GLHistory.finPeriodID>>>>>>,
                                                InnerJoin<Branch,
                                                        On<Branch.branchID, Equal<GLHistory.branchID>,
                                                        And<Branch.ledgerID, Equal<GLHistory.ledgerID>>>,
                                                InnerJoin<CashAccount,
                                                        On<GLHistoryByPeriod.branchID, Equal<CashAccount.branchID>, 
                                                        And<GLHistoryByPeriod.accountID, Equal<CashAccount.accountID>,
                                                        And<GLHistoryByPeriod.subID, Equal<CashAccount.subID>>>>,
                                                InnerJoin<Account,
                                                        On<GLHistoryByPeriod.accountID, Equal<Account.accountID>, 
                                                        And<Match<Account, Current<AccessInfo.userName>>>>,
                                                InnerJoin<Sub,
                                                        On<GLHistoryByPeriod.subID, Equal<Sub.subID>, And<Match<Sub, Current<AccessInfo.userName>>>>>>>>>,
                                                Where<CashAccount.cashAccountID, Equal<Required<CashAccount.cashAccountID>>,
                                                   And<GLHistoryByPeriod.finPeriodID, Equal<Required<GLHistoryByPeriod.finPeriodID>>>
                                                 >>.Select(sender.Graph, CashAccountID, FinPeriodID);

            if (gLHistory != null)
            {
                result = gLHistory.CuryFinYtdBalance;
            }
        }
        e.ReturnValue = result;
        e.Cancel = true;
    }
} 
    public virtual void FieldSelecting(PXCache sender, PXFieldSelectingEventArgs e)
    {
        CASetup caSetup = PXSelect<CASetup>.Select(sender.Graph);
        decimal? result = 0m;
        object CashAccountID = sender.GetValue(e.Row, _CashAccount);

        CADailySummary caBalance = PXSelectGroupBy<CADailySummary,
                                                     Where<CADailySummary.cashAccountID, Equal<Required<CADailySummary.cashAccountID>>>,
                                                                Aggregate<Sum<CADailySummary.amtReleasedClearedCr,
                                                                 Sum<CADailySummary.amtReleasedClearedDr,
                                                                 Sum<CADailySummary.amtReleasedUnclearedCr,
                                                                 Sum<CADailySummary.amtReleasedUnclearedDr,
                                                                 Sum<CADailySummary.amtUnreleasedClearedCr,
                                                                 Sum<CADailySummary.amtUnreleasedClearedDr,
                                                                 Sum<CADailySummary.amtUnreleasedUnclearedCr,
                                                                 Sum<CADailySummary.amtUnreleasedUnclearedDr>>>>>>>>>>.
                                                                 Select(sender.Graph, CashAccountID);
        if ((caBalance != null) && (caBalance.CashAccountID != null))
        {
            result = caBalance.AmtReleasedClearedDr - caBalance.AmtReleasedClearedCr;

            if ((bool)caSetup.CalcBalDebitClearedUnreleased)
                result += caBalance.AmtUnreleasedClearedDr;
            if ((bool)caSetup.CalcBalCreditClearedUnreleased)
                result -= caBalance.AmtUnreleasedClearedCr;
            if ((bool)caSetup.CalcBalDebitUnclearedReleased)
                result += caBalance.AmtReleasedUnclearedDr;
            if ((bool)caSetup.CalcBalCreditUnclearedReleased)
                result -= caBalance.AmtReleasedUnclearedCr;
            if ((bool)caSetup.CalcBalDebitUnclearedUnreleased)
                result += caBalance.AmtUnreleasedUnclearedDr;
            if ((bool)caSetup.CalcBalCreditUnclearedUnreleased)
                result -= caBalance.AmtUnreleasedUnclearedCr;
        }
        e.ReturnValue = result;
        e.Cancel = true;
    }
} 
公共虚拟无效字段选择(PXCache发送方,PXFieldSelectingEventArgs e)
{
CASetup CASetup=PXSelect.Select(sender.Graph);
十进制?结果=0m;
对象cashcountid=sender.GetValue(例如,行,\u cashcount);
CADAILYSUMARY caBalance=PXSelectGroupBy。
选择(sender.Graph,CashAccountID);
if((caBalance!=null)&&(caBalance.cashcountid!=null))
{
结果=caBalance.AmtReleasedClearedDr-caBalance.AmtReleasedClearedCr;
如果((bool)caSetup.CALCBALDEBITCLEARED未发布)
结果+=caBalance.amtureleasedcleareddr;
如果((bool)caSetup.CALCBALCREDITCLEARED未发布)
结果-=caBalance.amt释放清除CR;
如果((bool)caSetup.CalcBalDebitUnclearedReleased)
结果+=caBalance.amtreleasedUnclareddr;
如果((bool)caSetup.CalcBalCreditUnclearedReleased)
结果-=caBalance.amtreleasedUnclaredCR;
如果((bool)caSetup.CalcBalDebitUnclearedUnreleased)
结果+=caBalance.amtureleasedUncleareddr;
如果((bool)caSetup.CalcBalCreditUnclearedUnreleased)
结果-=caBalance.amtureleasedunclearedcr;
}
e、 返回值=结果;
e、 取消=真;
}
}