我试图在SOLine级别(文档详细信息网格)和SOOrder级别(订单摘要区域)上进行一些简单的计算 . 感谢另一个stackoverflow用户,我得到了第一个SOLine计算(Field称为Total profit(Ext Price - Ext Cost) . 现在,我试图计算Total利润除以Ext价格的百分比(在SOLine级别)但是我遇到了问题 . 这是可能的吗?这个函数似乎没有认识到新的领域 . 所以我这样做了它并且给出了一个“不能除零”错误......这是错的吗?这是我的第一个尝试使用新的自定义字段(TotalProfit字段已经定义并确认正常工作 - 但我遇到了这个GP%问题):[PXUIField(DisplayName =“GP%”,Enabled = false)]
[PXFormula(typeof(Div <SOLine.curyTotalProfit,SOLine.curyLineAmt>))]
[PXDefault(TypeCode.Decimal,“0.0”)]
这是我尝试的第二个采用总利润公式并将结果除以Ext价格(curylineamt)[PXUIField(DisplayName =“GP%”,Enabled = false)]
[PXFormula(typeof(Div <Sub <SOLine.curyLineAmt,SOLine.curyExtCost>,SOLine.curyLineAmt>))]
[PXDefault(TypeCode.Decimal,“0.0”)]
我需要做的第二件事是显示(在订单汇总级别)1 . 所有SOLINE TotalProfit和2的总和 . 每行总利润的百分比除以总计费用 . - 对于这个,我知道我必须定义pxparent属性,但我的所有尝试都失败了 . 这是我尝试过的:我创建了两个新字段 - (一个用于货币考虑):(第一个字段):
[PXParent(typeof(选择<SOOrder,Where <SOLine.OrderNbr,Equal <Current <SOOrder.OrderNbr >>>>))]
[PXDBCurrency(typeof(SOOrder.curyInfoID),typeof(SOOrder.usrOrderTotalProfit))]
[PXUIField(DisplayName =“Total Profit”,Enabled = false)]
[PXFormula(null,typeof(SumCalc <SOLine.usrCuryTotalProfit>))]
[PXDefault(TypeCode.Decimal,“0.0”)]
(第二场):
[PXDBDecimal(4)]
[PXDefault(TypeCode.Decimal,“0.0”)]
当我尝试发布这个时,我得到错误,说类型名称不存在,并且说它是属性但是像类型一样使用 . 这些似乎应该被构建到Acumatica中,但它们不是 . 任何帮助是极大的赞赏 .
更新:
嗨德米特里,非常感谢您的回复 . 我仍然坚持GP%一...我正在尝试计算我的自定义字段(UsrCuryTotalProfit)除以curyLineAmt . 这是UsrCuryTotalProfit字段的属性:
[PXDBCurrency(typeof(SOLine.curyInfoID), typeof(SOLineExt.usrTotalProfit))]
[PXUIField(DisplayName = "Total Profit", Enabled = false)]
[PXFormula(typeof(Sub<SOLine.curyLineAmt, SOLine.curyExtCost>))]
[PXDefault(TypeCode.Decimal, "0.0")]
所以,我在GP%字段中使用了这个:
[PXUIField(DisplayName = "GP %", Enabled = false)]
[PXFormula(typeof(Div<SOLineExt.usrTotalProfit, SOLine.curyLineAmt>))]
[PXDefault(TypeCode.Decimal, "0.0")]
它发布很好,但是当我进入销售订单屏幕并尝试在网格中添加一行时,它会给我一个错误:“尝试除以零” . 我还在做错吗?
我想知道这是否与行没有任何成本或价格信息有关,但公式试图划分之前我输入任何东西...不知道如何解决 .
1 回答
这是您尝试发布的实际代码吗?我认为此代码中存在拼写错误 . 应该是这样的:
您还有一个不正确的父属性 . 您应该选择与当前记录匹配的父表 . 像那样:
但是,此类属性已存在于SOLine类中,您无需再次放置它 .
你的公式
应放在SOLine.usrCuryTotalProfit字段中 . 在第二个参数中,您应指定应存储结果的父DAC的字段 . 父项和公式属性在T200培训第7课中得到了很好的体现 .
所以你的代码中有几个错误 . 你还应该多注意第一个字母的情况 .
以下是T100培训的引用:
Visual Studio是修复拼写错误和字母大小写的好工具 . 您可以在visual studio中轻松打开自定义:
转到自定义项目
点击你的项目
单击扩展库 - >新建
浏览器将下载* .bat文件,该文件将在visual studio中打开您的自定义 .
您将能够查看并修复编译错误,使用自动完成和语法高亮 .
更新:
看起来你是对的 . 你可以这样解决它:
另外我认为在这种情况下你应该使用SOLINEExt.curyUsrTotalProfit .