Browse Source

开票明细删除和校验

zhangyao 2 months ago
parent
commit
94a47d0357

+ 21 - 1
com.awspaas.user.apps.donenow_ctt/src/com/awspaas/user/apps/donenow_ctt/controller/invoiceController.java

@@ -4,6 +4,7 @@ import com.actionsoft.bpms.commons.mvc.view.ResponseObject;
 import com.actionsoft.bpms.server.UserContext;
 import com.actionsoft.bpms.server.bind.annotation.Controller;
 import com.actionsoft.bpms.server.bind.annotation.Mapping;
+import com.actionsoft.sdk.local.SDK;
 import com.awspaas.user.apps.donenow_ctt.service.InvoiceDealDto;
 import com.awspaas.user.apps.donenow_ctt.service.InvoiceService;
 
@@ -37,7 +38,7 @@ public class invoiceController {
      * @return
      */
     @Mapping("com.awspaas.user.apps.donenow_ctt.deal_invoice")
-    public ResponseObject dealInvoice(UserContext uc, String accDeduIds,String startDate,String endDate) {
+    public ResponseObject dealInvoice(UserContext uc, String accDeduIds, String startDate, String endDate) {
         InvoiceDealDto invoiceDealDto = new InvoiceDealDto();
         invoiceDealDto.setIds(accDeduIds);
         invoiceDealDto.setDateRangeFromStr(startDate);
@@ -63,4 +64,23 @@ public class invoiceController {
         return ResponseObject.newOkResponse();
     }
 
+
+    /**
+     * 删除发票计划
+     * @param uc
+     * @param bindids
+     * @return
+     */
+    @Mapping("com.awspaas.user.apps.donenow_ctt.delInvoicePlan")
+    public ResponseObject delInvoicePlan(UserContext uc, String bindids) {
+
+        for (String bindid : bindids.split(",")) {
+            SDK.getProcessAPI().remindMailById(uc.getUID(), bindid);
+            SDK.getBOAPI().removeByBindId("BO_EU_DNCTT_INVOICE_PLAN_DETAIL", bindid);
+            SDK.getBOAPI().removeByBindId("BO_EU_DNCTT_INVOICE_PLAN", bindid);
+        }
+
+        return ResponseObject.newOkResponse();
+    }
+
 }

+ 1 - 1
com.awspaas.user.apps.donenow_ctt/src/com/awspaas/user/apps/donenow_ctt/event/commissionFormBeforeSave.java

@@ -17,7 +17,7 @@ import static com.awspaas.user.apps.donenow_ctt.service.contractService.isApprox
 
 public class commissionFormBeforeSave extends InterruptListener {
     public String getDescription() {
-        return "合同表单保存前的事件测试";
+        return "佣金表单保存前的事件测试";
     }
 
 

+ 79 - 0
com.awspaas.user.apps.donenow_ctt/src/com/awspaas/user/apps/donenow_ctt/event/invoicePlanFormBeforeSave.java

@@ -0,0 +1,79 @@
+package com.awspaas.user.apps.donenow_ctt.event;
+
+import com.actionsoft.bpms.bo.engine.BO;
+import com.actionsoft.bpms.bpmn.engine.core.delegate.ProcessExecutionContext;
+import com.actionsoft.bpms.bpmn.engine.listener.InterruptListener;
+import com.actionsoft.bpms.bpmn.engine.listener.ListenerConst;
+import com.actionsoft.bpms.util.DBSql;
+import com.actionsoft.bpms.util.TypeUtil;
+import com.actionsoft.exception.BPMNError;
+import org.apache.commons.lang3.StringUtils;
+
+import java.math.BigDecimal;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+public class invoicePlanFormBeforeSave extends InterruptListener {
+    public String getDescription() {
+        return "开票申请表单保存前的事件测试";
+    }
+
+    /**
+     *
+     * @param param
+     * @return
+     * @throws Exception
+     */
+    @Override
+    public boolean execute(ProcessExecutionContext param) throws Exception {
+        BO formData = (BO) param.getParameter(ListenerConst.FORM_EVENT_PARAM_FORMDATA);
+        String bindid = param.getProcessInstance().getId();
+        String boName = param.getParameterOfString(ListenerConst.FORM_EVENT_PARAM_BONAME);
+        if (boName.equals("BO_EU_DNCTT_INVOICE_PLAN")) {
+            String INVOICE_NO = formData.getString("INVOICE_NO");//发票号
+            //1、逗号、分号分割的多个发票号 例如 A01,A02,A03
+            //2、使用-、~表示的发票号范围 例如 A05-A10,A15~A20
+            if (StringUtils.isNotBlank(INVOICE_NO)) {
+                List<String> invoiceNoList = new ArrayList<>();//发票号集合
+
+            }
+
+        } else if (boName.equals("BO_EU_DNCTT_INVOICE_PLAN_DETAIL")) {
+            //验证发票金额
+            List<BO> gridData = (List) param.getParameter(ListenerConst.FORM_EVENT_PARAM_GRIDDATA);
+
+            Map<String, BigDecimal> invoiceAmountMap = new HashMap<>();
+            Map<String, BigDecimal> maxInvoiceAmountMap = new HashMap<>();
+            for (BO bo : gridData) {
+                BigDecimal INVOICE_AMOUNT = bo.get("INVOICE_AMOUNT", BigDecimal.class);
+
+                String INVOICE_DETAIL_ID = bo.getString("INVOICE_DETAIL_ID");
+
+                if (invoiceAmountMap.containsKey(INVOICE_DETAIL_ID))
+                    invoiceAmountMap.put(INVOICE_DETAIL_ID, invoiceAmountMap.get(INVOICE_DETAIL_ID).add(INVOICE_AMOUNT));
+                else
+                    invoiceAmountMap.put(INVOICE_DETAIL_ID, INVOICE_AMOUNT);
+
+                if (!maxInvoiceAmountMap.containsKey(INVOICE_DETAIL_ID))
+                    maxInvoiceAmountMap.put(INVOICE_DETAIL_ID, bo.get("DOLLARS", BigDecimal.class));
+
+            }
+            for (Map.Entry<String, BigDecimal> entry : invoiceAmountMap.entrySet()) {
+                String INVOICE_DETAIL_ID = entry.getKey();
+                BigDecimal INVOICE_AMOUNT = entry.getValue();
+
+                BigDecimal exitsAmount = TypeUtil.convert(DBSql.getString("select IFNULL(sum(INVOICE_AMOUNT),0) from BO_EU_DNCTT_INVOICE_PLAN_DETAIL where BINDID<>? AND INVOICE_DETAIL_ID=?", new Object[]{bindid, INVOICE_DETAIL_ID}), BigDecimal.class);
+
+                //相加
+                BigDecimal totalAmount = exitsAmount.add(INVOICE_AMOUNT);
+                if (totalAmount.compareTo(maxInvoiceAmountMap.get(INVOICE_DETAIL_ID)) > 0) {
+                    throw new BPMNError("500", "发票金额超出最大金额限制");
+                }
+            }
+        }
+
+        return true;
+    }
+}