我在“自动化步骤”页面中为“合同项目的重复价格选项”添加了另一个选项。
所以,现在,如果我选择使用重复价格,它将从我在非库存物品页面中创建的自定义字段中获取值。
这是我的自定义公式,用于计算Contract Item页面的FixedRecurringPriceVal字段。
[PXFormula(typeof(Switch<
Case<Where<ContractItem.recurringItemID, IsNotNull>,
Switch<
Case<Where<ContractItem.fixedRecurringPriceOption, Equal<customRecurringPrice>>, IsNull<NullIf<Selector<ContractItem.recurringItemID, InventoryItemExt.usrRecurringPrice>, Null>,
Switch<Case<Where<ContractItem.curyID, Equal<Current<Company.baseCuryID>>>, NullIf<Selector<ContractItem.recurringItemID, Null>, Null>>, Null>>,
Case<Where<ContractItem.fixedRecurringPriceOption, Equal<PriceOption.basePercent>>, Div<Mult<ContractItem.fixedRecurringPrice, ContractItem.basePriceVal>, decimal100>,
Case<Where<ContractItem.fixedRecurringPriceOption, Equal<PriceOption.itemPrice>>, IsNull<NullIf<Selector<ContractItem.recurringItemID, ARSalesPrice.salesPrice>, decimal0>,
Switch<Case<Where<ContractItem.curyID, Equal<Current<Company.baseCuryID>>>, NullIf<Selector<ContractItem.recurringItemID, InventoryItem.basePrice>, decimal0>>, Null>>,
Case<Where<ContractItem.fixedRecurringPriceOption, Equal<PriceOption.itemPercent>>, Div<Mult<ContractItem.fixedRecurringPrice, IsNull<NullIf<Selector<ContractItem.recurringItemID, ARSalesPrice.salesPrice>, decimal0>,
Switch<Case<Where<ContractItem.curyID, Equal<Current<Company.baseCuryID>>>, NullIf<Selector<ContractItem.recurringItemID, InventoryItem.basePrice>, decimal0>>, Null>>>, decimal100>>>>>,
ContractItem.fixedRecurringPrice>>,
decimal0>))]
作为参考,这是我的静态值类:
using System;
using PX.Data;
namespace NonStockItemRecurringPriceSetup
{
public class customRecurringPrice : Constant<string>
{
public customRecurringPrice():base("r"){;}
}
}
现在,它按预期更新了Contract Item页面的FixedRecurringPriceVal。
但是,在“客户合同”页面中,当我选择新合同的合同模板时,如果我在合同项目页面中选择了“使用重复价格”作为定价选项,则正在计算合同项目中的重复价格,否则它会被正确计算。
当我查看ContractDetail DAC时,我得到了下面的FixedRecurringPriceVal公式,我在定制方面遇到了问题。
public abstract class fixedRecurringPriceVal : IBqlField { }
[PXDecimal(6)]
[PXFormula(typeof(GetItemPriceValue<
ContractDetail.contractID,
ContractDetail.contractItemID,
ContractDetailType.ContractDetail,
ContractDetail.fixedRecurringPriceOption,
Selector<ContractDetail.contractItemID, ContractItem.recurringItemID>,
ContractDetail.fixedRecurringPrice,
ContractDetail.basePriceVal,
ContractDetail.qty,
Switch<
Case<Where<Parent<Contract.status>, Equal<Contract.status.draft>,
Or<Parent<Contract.status>, Equal<Contract.status.pendingActivation>>>,
IsNull<Parent<Contract.activationDate>, Parent<Contract.startDate>>,
Case<Where<Parent<Contract.status>, Equal<Contract.status.active>,
Or<Parent<Contract.status>, Equal<Contract.status.inUpgrade>>>,
IsNull<Parent<ContractBillingSchedule.nextDate>, Current<AccessInfo.businessDate>>,
Case<Where<Parent<Contract.status>, Equal<Contract.status.expired>>,
IsNull<Parent<ContractBillingSchedule.nextDate>, Parent<Contract.expireDate>>,
Case<Where<Parent<Contract.status>, Equal<Contract.status.canceled>>,
IsNull<Parent<Contract.terminationDate>, Current<AccessInfo.businessDate>>>>>>,
Current<AccessInfo.businessDate>>>))]
[PXUIField(DisplayName = "Recurring Price")]
public decimal? FixedRecurringPriceVal
{
get;
set;
}
现在,当我选择合约模板时,如果固定价格重复期权在网格中为“使用重复价格”,我需要帮助才能从非库存项目的“自定义重复价格”自定义字段中获取值。
谢谢。