AmountEditPlugin.java 3.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495
  1. package fi.em.formPlugin;
  2. import com.kingdee.bos.qing.publish.model.BillModel;
  3. import fi.em.service.PayamountCalcExt;
  4. import kd.bos.dataentity.entity.DynamicObject;
  5. import kd.bos.dataentity.entity.DynamicObjectCollection;
  6. import kd.bos.entity.datamodel.events.ChangeData;
  7. import kd.bos.entity.datamodel.events.PropertyChangedArgs;
  8. import kd.bos.exception.KDBizException;
  9. import kd.bos.list.plugin.AbstractListPlugin;
  10. import kd.bos.orm.query.QCP;
  11. import kd.bos.orm.query.QFilter;
  12. import kd.bos.servicehelper.BusinessDataServiceHelper;
  13. import kd.bos.servicehelper.operation.SaveServiceHelper;
  14. import kd.fi.er.business.daily.reimburse.AmountObject;
  15. import kd.fi.er.mservice.ext.IErService4Ext;
  16. import kd.sdk.plugin.Plugin;
  17. import java.math.BigDecimal;
  18. /**
  19. * @author cjz
  20. * @date 2024/8/13 18:00
  21. * @description:计算收款金额
  22. */
  23. public class AmountEditPlugin extends AbstractListPlugin implements Plugin,IErService4Ext {
  24. public static String nckd_unexporiusedamount="nckd_unexporiusedamount";//冲销金额标识
  25. public static String nckd_er_tripreimburse_ext="nckd_er_tripreimburse_ext";//差旅报销单标识
  26. public static String orientryamount="orientryamount";//报销金额字段标识
  27. private static String er_prepaybill = "er_prepaybill";//预付借款单标识
  28. @Override
  29. public void propertyChanged(PropertyChangedArgs e)
  30. {
  31. super.beforePropertyChanged(e);
  32. String name = e.getProperty().getName();
  33. if (nckd_unexporiusedamount.equals(name)||orientryamount.equals(name))
  34. {
  35. //冲销金额总数
  36. BigDecimal orgiexpebalanceamount_sum = new BigDecimal("0");
  37. //费用合计
  38. BigDecimal amountfy=new BigDecimal("0");
  39. //行程信息
  40. DynamicObjectCollection tripentry = this.getModel().getEntryEntity("tripentry");//获取形成信息分录
  41. for (DynamicObject item:tripentry) {
  42. DynamicObjectCollection entryentity_cl=item.getDynamicObjectCollection("entryentity");//差旅明细分录
  43. for (int i=0;i< entryentity_cl.size();i++) {
  44. //报销金额总和
  45. amountfy=amountfy.add(entryentity_cl.get(i).getBigDecimal("orientryamount"));
  46. }
  47. }
  48. //amountfy报销金额总和
  49. //获取冲预付借款分录
  50. DynamicObjectCollection nckd_clearloanentry=this.getModel().getEntryEntity("nckd_clearloanentry");
  51. for (DynamicObject entryentity:nckd_clearloanentry)
  52. {
  53. //冲销金额
  54. BigDecimal orgiexpebalanceamount=entryentity.getBigDecimal("nckd_unexporiusedamount");
  55. //冲销金额累加计算
  56. orgiexpebalanceamount_sum=orgiexpebalanceamount_sum.add(orgiexpebalanceamount);
  57. }
  58. //计算收款金额
  59. this.getModel().setValue("orireceiveamount",amountfy.subtract(orgiexpebalanceamount_sum),0);
  60. }
  61. //重新触发付现金额计算
  62. if(nckd_unexporiusedamount.equals(name))
  63. {
  64. DynamicObjectCollection tripentry = this.getModel().getEntryEntity("tripentry");//获取形成信息分录
  65. //付现金额触发
  66. for (DynamicObject item:tripentry) {
  67. DynamicObjectCollection entryentity_cl=item.getDynamicObjectCollection("entryentity");//差旅明细分录
  68. for (int i=0;i< entryentity_cl.size();i++) {
  69. //判断报销金额是否有值
  70. if (entryentity_cl.get(i).getBigDecimal("orientryamount").compareTo(BigDecimal.ZERO)>0) {
  71. BigDecimal amount=entryentity_cl.get(i).getBigDecimal("orientryamount");
  72. this.getModel().setValue("orientryamount",0,i);
  73. this.getModel().setValue("orientryamount",amount,i);
  74. break;
  75. }
  76. }
  77. }
  78. }
  79. }
  80. }