fix:折扣率计算

(cherry picked from commit 13c3d63ac2)
This commit is contained in:
zzs01@yunemao.com 2024-09-11 10:30:18 +08:00
parent 70fefff998
commit fecad339e3
3 changed files with 16 additions and 11 deletions

View File

@ -300,7 +300,7 @@ public class SalesOrderPJEdit extends AbstractBillPlugIn implements Plugin, Befo
ClientUtils.totalSaFobAmount(model, "yem_es_materialinfo", "yem_ifgift", "yem_safobamount", "yem_amount");//销售fob金额 汇总表头 fob金额
ClientUtils.countDisAmt(model, "yem_es_materialinfo", rowIndex, view);//计算折扣金额
ClientUtils.countAfterFrontAmt(model, rowIndex);//计算折扣后销售金额
ClientUtils.calculateDiscountRate(model, rowIndex);//计算折扣率
ClientUtils.calculateDiscountRate(view, model, rowIndex);//计算折扣率
break;
case "yem_onecarsum"://单车总费用
ClientUtils.countFrontDisPrice(model, rowIndex);//折扣前单价
@ -322,7 +322,7 @@ public class SalesOrderPJEdit extends AbstractBillPlugIn implements Plugin, Befo
ClientUtils.countAfterFrontAmt(model, rowIndex);//计算折扣后销售金额
ClientUtils.countPoolAmt(view, model, "yem_es_materialinfo");//汇总折扣金额使用金额
ClientUtils.addSaAmountTk(model, rowIndex);//销售金额价格条款结算币别
ClientUtils.calculateDiscountRate(model, rowIndex);//计算折扣率
ClientUtils.calculateDiscountRate(view, model, rowIndex);//计算折扣率
break;
case "yem_fundusetype"://资金使用类型
model.setValue("yem_fundpoolamt", BigDecimal.ZERO);
@ -357,7 +357,7 @@ public class SalesOrderPJEdit extends AbstractBillPlugIn implements Plugin, Befo
case "yem_accamtusetype"://配件资金使用方式
ClientUtils.delValue(model, "yem_es_materialinfo");
// ClientUtils.countDisAmt(model,"yem_es_materialinfo",rowIndex);//计算折扣金额
ClientUtils.calculateDiscountRate(model, -1);//计算折扣率
ClientUtils.calculateDiscountRate(view, model, -1);//计算折扣率
break;
case "yem_fundpoolamt"://使用额度
ClientUtils.countDisAmt(model, "yem_es_materialinfo", rowIndex, view);//计算折扣金额

View File

@ -331,7 +331,7 @@ public class SalesOrderZJEdit extends AbstractBillPlugIn implements Plugin, Befo
// ClientUtils.countSaPricePriceClause(model, rowIndex);//计算销售单价价格条款
ClientUtils.countDisAmt(model, "yem_es_materialinfo", rowIndex, view);//计算折扣金额
ClientUtils.countAfterFrontAmt(model, rowIndex);//计算折扣后销售金额
ClientUtils.calculateDiscountRate(model, rowIndex);//计算折扣率
ClientUtils.calculateDiscountRate(view, model, rowIndex);//计算折扣率
break;
case "yem_sastandardprice"://
ClientUtils.countFobAmtSaleRMB(model, rowIndex);//销售FOB标配青岛单价本位币
@ -446,7 +446,7 @@ public class SalesOrderZJEdit extends AbstractBillPlugIn implements Plugin, Befo
break;
case "yem_accamtusetype"://配件资金使用方式
ClientUtils.countDisAmt(model, "yem_es_materialinfo", rowIndex, view);//计算折扣金额
ClientUtils.calculateDiscountRate(model, -1);//计算折扣率
ClientUtils.calculateDiscountRate(view, model, -1);//计算折扣率
break;
case "yem_fundpoolamt"://使用额度
ClientUtils.countDisAmt(model, "yem_es_materialinfo", rowIndex, view);//计算折扣金额
@ -464,7 +464,7 @@ public class SalesOrderZJEdit extends AbstractBillPlugIn implements Plugin, Befo
ClientUtils.countFrontDisAmt(model, rowIndex);//折扣前金额
ClientUtils.countAfterFrontAmt(model, rowIndex);//计算折扣后销售金额
ClientUtils.addSaAmountTk(model, rowIndex);//销售金额价格条款结算币别
ClientUtils.calculateDiscountRate(model, rowIndex);//计算折扣率
ClientUtils.calculateDiscountRate(view, model, rowIndex);//计算折扣率
break;
case "yem_giveproactype":
summarizeModules(rowIndex);

View File

@ -1590,7 +1590,7 @@ public class ClientUtils {
}
ClientUtils.countAfterFrontAmt(model, i);//计算折扣后销售金额
}
ClientUtils.calculateDiscountRate(model, -1);
ClientUtils.calculateDiscountRate(view, model, -1);
}
}
@ -1758,15 +1758,15 @@ public class ClientUtils {
}
}
public static void calculateDiscountRate(IDataModel model, int idx) {
public static void calculateDiscountRate(IFormView view, IDataModel model, int idx) {
String accamtusetype = (String) model.getValue("yem_accamtusetype");
if ("A".equals(accamtusetype)) {
if (idx != -1) {
doCalculateDiscountRate(model, idx);
doCalculateDiscountRate(view, model, idx);
} else {
int rowCount = model.getEntryRowCount("yem_es_materialinfo");
for (int i = 0; i < rowCount; i++) {
doCalculateDiscountRate(model, i);
doCalculateDiscountRate(view, model, i);
}
}
}
@ -1774,10 +1774,12 @@ public class ClientUtils {
/**
* 计算折扣率
*
* @param view
* @param model
* @param idx
*/
private static void doCalculateDiscountRate(IDataModel model, int idx) {
private static void doCalculateDiscountRate(IFormView view, IDataModel model, int idx) {
//yem_frontrateentry = ( yem_safobamount - yem_disamt ) / yem_safobamount * 100
//折扣率% = ( 销售FOB金额 - 折扣金额 ) / 销售FOB金额 * 100
@ -1785,7 +1787,10 @@ public class ClientUtils {
BigDecimal disamt = (BigDecimal) model.getValue("yem_disamt", idx);
BigDecimal div = BigDecimalUtils.div(safobamount.subtract(disamt), safobamount, 12).multiply(new BigDecimal("100")).setScale(2, RoundingMode.HALF_UP);
model.beginInit();
model.setValue("yem_frontrateentry", div, idx);
model.endInit();
view.updateView("yem_frontrateentry", idx);
}
}