HULEI il y a 2 mois
Parent
commit
b62c744ede

+ 128 - 0
com.awspaas.user.apps.donenow_ctt/src/com/awspaas/user/apps/donenow_ctt/controller/contractApproveController.java

@@ -12,6 +12,7 @@ import com.actionsoft.sdk.local.api.Logger;
 import com.awspaas.user.apps.donenow_ctt.cttConstant;
 import com.awspaas.user.apps.donenow_ctt.service.contractService;
 import org.apache.commons.lang3.StringUtils;
+
 import java.math.BigDecimal;
 import java.sql.Connection;
 import java.sql.SQLException;
@@ -1013,6 +1014,7 @@ public class contractApproveController {
         }
         return ResponseObject.newOkResponse();
     }
+
     @Mapping(value = "com.awspaas.user.apps.donenow_ctt.insertCommissionPeriods")
     public ResponseObject insertCommissionPeriods(UserContext uc,
                                                   String bindid,
@@ -1102,6 +1104,7 @@ public class contractApproveController {
             return ResponseObject.newErrResponse("插入失败:" + e.getMessage());
         }
     }
+
     @Mapping(value = "com.awspaas.user.apps.donenow_ctt.batchInsertAgentPeriods")
     public ResponseObject batchInsertAgentPeriods(UserContext uc,
                                                   String bindid,
@@ -1399,5 +1402,130 @@ public class contractApproveController {
             ResponseObject err = ResponseObject.newErrResponse("更新失败:" + e.getMessage());
             return err;
         }
+
+    /**
+     * 佣金审批
+     * @param uc
+     * @param approveDate
+     * @param approveIds
+     * @return
+     */
+    @Mapping(value = "com.awspaas.user.apps.donenow_ctt.approve_commission")
+    public ResponseObject approveCommission(UserContext uc, String approveDate, String approveIds) throws SQLException {
+        if (StringUtils.isBlank(approveDate) || StringUtils.isBlank(approveIds))
+            return ResponseObject.newErrResponse("参数错误");
+        contractService.getInstance().approveCommission(uc, approveDate, approveIds);
+        return ResponseObject.newOkResponse();
+    }
+
+
+    /**
+     * 佣金调整
+     * @param uc
+     * @return
+     */
+    @Mapping(value = "com.awspaas.user.apps.donenow_ctt.approve_updateCommissionPrice")
+    public ResponseObject updateCommissionPrice(UserContext uc, String id, String periodPrice) {
+/*
+        BO bo = SDK.getBOAPI().get("BO_EU_DNCTT_COMMISSION_PERIOD", id);//佣金
+
+        String APPROVE_AND_POST_DATE = bo.getString("APPROVE_AND_POST_DATE");
+        System.out.println("APPROVE_AND_POST_DATE------------" + APPROVE_AND_POST_DATE);
+        if (StringUtils.isNotBlank(APPROVE_AND_POST_DATE))
+            return ResponseObject.newErrResponse("已审批不允许修改");
+
+        bo.set("PERIOD_ADJUSTED_PRICE", periodPrice);
+        SDK.getBOAPI().update("BO_EU_DNCTT_COMMISSION_PERIOD", bo);
+*/
+        RowMap period = DBSql.getMap("select * from BO_EU_DNCTT_COMMISSION_PERIOD where ID=?", new Object[]{id});
+        String APPROVE_AND_POST_DATE = period.getString("APPROVE_AND_POST_DATE");
+        System.out.println("APPROVE_AND_POST_DATE------------" + APPROVE_AND_POST_DATE);
+        if (StringUtils.isNotBlank(APPROVE_AND_POST_DATE))
+            return ResponseObject.newErrResponse("已审批不允许修改");
+
+        DBSql.update("update BO_EU_DNCTT_COMMISSION_PERIOD set PERIOD_ADJUSTED_PRICE=? where ID=?", new Object[]{periodPrice, id});
+
+        return ResponseObject.newOkResponse();
+    }
+
+
+    /**
+     * 佣金调整,恢复初始价格
+     * @param uc
+     * @return
+     */
+    @Mapping(value = "com.awspaas.user.apps.donenow_ctt.approve_initCommissionPrice")
+    public ResponseObject initCommissionPrice(UserContext uc, String ids) {
+
+        for (String id : ids.split(",")) {
+            /*
+            BO bo = SDK.getBOAPI().get("BO_EU_DNCTT_COMMISSION_PERIOD", id);//佣金
+
+            String APPROVE_AND_POST_DATE = bo.getString("APPROVE_AND_POST_DATE");
+            System.out.println("APPROVE_AND_POST_DATE------------" + APPROVE_AND_POST_DATE);
+            if (StringUtils.isNotBlank(APPROVE_AND_POST_DATE))
+                return ResponseObject.newErrResponse("已审批不允许修改");
+
+            bo.set("PERIOD_ADJUSTED_PRICE", bo.get("COMMISSION_DOLLARS"));
+            SDK.getBOAPI().update("BO_EU_DNCTT_COMMISSION_PERIOD", bo);
+
+             */
+
+            RowMap period = DBSql.getMap("select * from BO_EU_DNCTT_COMMISSION_PERIOD where ID=?", new Object[]{id});
+            String APPROVE_AND_POST_DATE = period.getString("APPROVE_AND_POST_DATE");
+            System.out.println("APPROVE_AND_POST_DATE------------" + APPROVE_AND_POST_DATE);
+            if (StringUtils.isNotBlank(APPROVE_AND_POST_DATE))
+                return ResponseObject.newErrResponse("已审批不允许修改");
+
+            DBSql.update("update BO_EU_DNCTT_COMMISSION_PERIOD set PERIOD_ADJUSTED_PRICE=COMMISSION_DOLLARS where ID=?", new Object[]{id});
+
+        }
+
+        return ResponseObject.newOkResponse();
+    }
+
+
+    /**
+     * 撤销佣金审批
+     * @param ids
+     * @return
+     */
+    @Mapping("com.awspaas.user.apps.donenow_ctt.revoke_commission")
+    public ResponseObject revokeCommission(UserContext uc, String ids) throws SQLException {
+        Connection connUpdate = null;
+        try {
+            connUpdate = DBSql.open();
+            connUpdate.setAutoCommit(false);
+            for (String id : ids.split(",")) {
+                BO bo = SDK.getBOAPI().get("BO_EU_DNCRM_ACCOUNT_DEDUCTION", id);
+                bo.set("CLOSED", 1);
+                dn.recordFormChanges.record(uc, bo, "撤销佣金审批");
+
+                SDK.getBOAPI().remove("BO_EU_DNCRM_ACCOUNT_DEDUCTION", bo.getId(), connUpdate);
+
+                /*
+                BO oldEntry = SDK.getBOAPI().get("BO_EU_DNCTT_COMMISSION_PERIOD", bo.getString("OBJECT_ID"));
+                oldEntry.set("APPROVE_AND_POST_DATE", null);
+                oldEntry.set("APPROVE_AND_POST_USER_ID", null);
+                dn.recordFormChanges.record(uc, oldEntry, "撤销佣金审批");
+                SDK.getBOAPI().update("BO_EU_DNCTT_COMMISSION_PERIOD", oldEntry);
+
+                 */
+                DBSql.update("update BO_EU_DNCTT_COMMISSION_PERIOD set APPROVE_AND_POST_DATE=null,APPROVE_AND_POST_USER_ID=null where ID=?", new Object[]{bo.getString("OBJECT_ID")});
+
+            }
+            connUpdate.commit();
+        } catch (SQLException e) {
+            if (connUpdate != null && !connUpdate.isClosed())
+                try {
+                    connUpdate.rollback();
+                } catch (SQLException ex) {
+                    ex.printStackTrace();
+                }
+        } finally {
+            if (connUpdate != null && !connUpdate.isClosed())
+                DBSql.close(connUpdate);
+        }
+        return ResponseObject.newOkResponse();
     }
 }

+ 18 - 6
com.awspaas.user.apps.donenow_ctt/src/com/awspaas/user/apps/donenow_ctt/event/costProductFormAfterSave.java

@@ -15,30 +15,42 @@ public class costProductFormAfterSave extends ExecuteListener {
     }
 
     /**
-     *
-     * @param processExecutionContext
-     * @throws Exception
+     * 执行合同成本状态更新操作
+     * @param processExecutionContext 流程执行上下文,用于获取业务对象和其他流程相关数据
+     * @throws Exception 当数据库操作失败或业务逻辑异常时抛出
      */
     @Override
     public void execute(ProcessExecutionContext processExecutionContext) throws Exception {
 
         Connection conn = null;
         try {
+            // 开启数据库事务连接
             conn = DBSql.open();
             conn.setAutoCommit(false);
 
-            BO costBO = processExecutionContext.getBO("BO_EU_DNCTT_CONTRACT_COST");// 获取合同产品BO
-            costBO.set("STATUS_ID", "1234");//待采购/待拣货
-            SDK.getBOAPI().update("BO_EU_DNCTT_CONTRACT_COST", costBO,conn);
+            // 获取合同产品业务对象并设置初始状态为"待采购/待拣货"
+            BO costBO = processExecutionContext.getBO("BO_EU_DNCTT_CONTRACT_COST");
+            costBO.set("STATUS_ID", "1234");
 
+            // 检查产品是否为无需采购类型,如果是则直接将状态改为"已配送"
+            if (DBSql.getInt(conn, "select DOES_NOT_REQUIRE_PROCUREMENT from BO_EU_DNIVT_PRODUCT where ID=?", new Object[]{costBO.get("PRODUCT_ID")}) == 1) {
+                costBO.set("STATUS_ID", "1237");
+            }
 
+            // 更新合同成本业务对象状态
+            SDK.getBOAPI().update("BO_EU_DNCTT_CONTRACT_COST", costBO, conn);
+
+            // 提交事务
             conn.commit();
         } catch (Exception e) {
+            // 发生异常时回滚事务并抛出自定义BPMN错误
             conn.rollback();
             throw new BPMNError("550", "库存转移失败");
         } finally {
+            // 关闭数据库连接
             DBSql.close(conn);
         }
 
     }
+
 }

+ 21 - 21
com.awspaas.user.apps.donenow_ctt/src/com/awspaas/user/apps/donenow_ctt/service/InvoiceDealDto.java

@@ -13,105 +13,105 @@ public class InvoiceDealDto {
 
     // 页面参数:1-必填参数,2-可空参数
     /**
-     * 处理活动(原C#:int)
+     * 处理活动(int)
      */
     private int processAction;
 
     /**
-     * 发票模板(必填,原C#:int)
+     * 发票模板(必填,int)
      */
     private int invoiceTemplateId;
 
     /**
-     * 是否启用发票邮件服务(默认false,原C#:bool)
+     * 是否启用发票邮件服务(默认false,bool)
      */
     private boolean isInvoiceEmail = false;
 
     /**
-     * 邮件信息模板ID(原C#:int)
+     * 邮件信息模板ID(int)
      */
     private int emailTempId;
 
     /**
-     * 发票日期(必填,原C#:DateTime)
+     * 发票日期(必填,DateTime)
      * 注:Java中用LocalDateTime对应日期时间类型,若仅需日期可改用LocalDate
      */
     private LocalDate invoiceDate;
 
     /**
-     * 发票开始日期(可空,原C#:DateTime?)
+     * 发票开始日期(可空,DateTime?)
      */
     private LocalDate dateRangeFrom;
 
     /**
-     * 发票结束日期(可空,原C#:DateTime?)
+     * 发票结束日期(可空,DateTime?)
      */
     private LocalDate dateRangeTo;
 
     /**
-     * 订单号(可空,原C#:string)
+     * 订单号(可空,string)
      */
     private String purchaseOrderNo;
 
     /**
-     * 发票备注(可空,原C#:string)
+     * 发票备注(可空,string)
      */
     private String notes;
 
     /**
-     * 支付条款ID(可空,原C#:int?)
+     * 支付条款ID(可空,int?)
      */
     private Integer paymentTermId;
 
-    // 需要用到的参数
+
     /**
-     * 所有待处理发票的ID集合(必填,原C#:string)
+     * 所有待处理发票的ID集合(必填,string)
      * 注:原类中与thisIds字段语义重复,建议后续业务中统一字段名
      */
     private String ids;
 
     /**
-     * 向导专用:是否显示打印按钮(默认false,原C#:bool)
+     * 向导专用:是否显示打印按钮(默认false,bool)
      */
     private boolean isShowPrint = false;
 
     /**
-     * 向导专用:是否显示邮件按钮(默认false,原C#:bool)
+     * 向导专用:是否显示邮件按钮(默认false,bool)
      */
     private boolean isShowEmail = false;
 
     /**
-     * 向导专用:是否关联QuickBooks(默认false,原C#:bool)
+     * 向导专用:是否关联QuickBooks(默认false,bool)
      */
     private boolean isQuickBooks = false;
 
     /**
-     * 跳转预览界面使用的客户ID(待定,原C#:long)
+     * 跳转预览界面使用的客户ID(待定,long)
      */
     private long accountId;
 
     /**
-     * 本批次生成发票的批次ID(原C#:long)
+     * 本批次生成发票的批次ID(long)
      */
     private long invoiceBatch;
 
     /**
-     * 存储发票编号信息(原C#:string)
+     * 存储发票编号信息(string)
      */
     private String invoiceNo;
 
     /**
-     * 待处理发票的ID集合(与ids语义重复,原C#:string)
+     * 待处理发票的ID集合(与ids语义重复,string)
      */
     private String thisIds;
 
     /**
-     * 支付条款名称(原C#:string)
+     * 支付条款名称(string)
      */
     private String paymentTermName;
 
     /**
-     * 支付截止日期(原C#:string,建议后续改为LocalDate类型更规范)
+     * 支付截止日期(string,建议后续改为LocalDate类型更规范)
      */
     private String paymentEndDate;
 

+ 23 - 17
com.awspaas.user.apps.donenow_ctt/src/com/awspaas/user/apps/donenow_ctt/service/contractService.java

@@ -1724,24 +1724,29 @@ public class contractService {
                 String ORGID = uc.getCompanyModel().getId();
 
                 //BO_EU_DNCTT_COMMISSION_PERIOD
-                BO bo = SDK.getBOAPI().get("BO_EU_DNCTT_COMMISSION_PERIOD", approveId);//佣金
-                BO commissionBO = SDK.getBOAPI().getByProcess("BO_EU_DNCTT_COMMISSION", bo.getBindId());
-                if (bo != null) {
-                    bo.set("APPROVE_AND_POST_DATE", approveDate);
-                    bo.set("SETUP_FEE_APPROVE_POST_USER_ID", uc.getUID());
-                    SDK.getBOAPI().update("BO_EU_DNCTT_COMMISSION_PERIOD", bo, connUpdate);
+
+                RowMap period = DBSql.getMap("select * from BO_EU_DNCTT_COMMISSION_PERIOD where ID=?", new Object[]{approveId});
+
+                //BO bo = SDK.getBOAPI().get("BO_EU_DNCTT_COMMISSION_PERIOD", approveId);//佣金
+                //BO commissionBO = SDK.getBOAPI().getByProcess("BO_EU_DNCTT_COMMISSION", bo.getBindId());
+                if (period != null) {
+                    //bo.set("APPROVE_AND_POST_DATE", approveDate);
+                    //bo.set("APPROVE_AND_POST_USER_ID", uc.getUID());
+                    //SDK.getBOAPI().update("BO_EU_DNCTT_COMMISSION_PERIOD", bo, connUpdate);
+                    DBSql.update(connUpdate, "update BO_EU_DNCTT_COMMISSION_PERIOD set APPROVE_AND_POST_DATE=?,APPROVE_AND_POST_USER_ID=? where ID=?", new Object[]{approveDate, uc.getUID(), approveId});
 
                     cad.set("TYPE_ID", cttConstant.ACCOUNT_DEDUCTION_TYPE_COMMISSION);//类型(佣金)
                     cad.set("OBJECT_ID", approveId);
                     cad.set("CONTRACT_ID", approveId);
                     cad.set("QUANTITY", 1);
-                    cad.set("BILL_CREATE_USER_ID", bo.getCreateUser());//创建人
-                    cad.set("ACCOUNT_ID", commissionBO.getString("ISP"));
-                    cad.set("BILL_ACCOUNT_ID", commissionBO.getString("ISP"));
-                    cad.set("EXTENDED_PRICE", bo.get("PERIOD_ADJUSTED_PRICE"));
-
-                    if (StringUtils.isNotBlank(bo.getString("COST_CODE_ID"))) {
-                        TAX_CATEGORY_ID = DBSql.getString("select TAX_CATEGORY_ID from BO_EU_DND_COST_CODE where OID=? and ORGID=?", new Object[]{bo.getString("COST_CODE_ID"), ORGID});
+                    cad.set("BILL_CREATE_USER_ID", period.getString("CREATEUSER"));//创建人
+                    String ISP = DBSql.getString(connUpdate, "select ISP from BO_EU_DNCTT_COMMISSION where BINDID=?", new Object[]{period.getString("BINDID")});
+                    cad.set("ACCOUNT_ID", ISP);
+                    cad.set("BILL_ACCOUNT_ID", ISP);
+                    cad.set("EXTENDED_PRICE", period.get("PERIOD_ADJUSTED_PRICE"));
+
+                    if (StringUtils.isNotBlank(period.getString("COST_CODE_ID"))) {
+                        TAX_CATEGORY_ID = DBSql.getString("select TAX_CATEGORY_ID from BO_EU_DND_COST_CODE where OID=? and ORGID=?", new Object[]{period.getString("COST_CODE_ID"), ORGID});
                     }
                 }
 
@@ -1754,22 +1759,23 @@ public class contractService {
                     tax_category_name = DBSql.getString("SELECT NAME FROM BO_EU_DND_GENERAL WHERE OID = ? AND ORGID=?", new Object[]{TAX_CATEGORY_ID, uc.getCompanyModel().getId()});
                 }
 
-                if (ca.containsKey("TAX_REGION_ID") && StringUtils.isNotBlank(ca.getString("TAX_REGION_ID"))) {
+                if (ca != null && ca.containsKey("TAX_REGION_ID") && StringUtils.isNotBlank(ca.getString("TAX_REGION_ID"))) {
                     tax_region_name = DBSql.getString("SELECT NAME FROM BO_EU_DND_GENERAL WHERE OID = ? AND ORGID=?", new Object[]{ca.getString("TAX_REGION_ID"), uc.getCompanyModel().getId()});
                 }
 
-                if (tax_category_name != null && tax_region_name != null)
+                if (ca != null && tax_category_name != null && tax_region_name != null)
                     tax_rate = DBSql.getDouble("SELECT TOTAL_EFFECTIVE_TAX_RATE FROM BO_EU_DND_TAX_REGION_CATE WHERE TAX_REGION_ID='" + ca.getString("TAX_REGION_ID") + "' AND TAX_CATE_ID='" + TAX_CATEGORY_ID + "' AND ORGID='" + uc.getCompanyModel().getId() + "' ", "TOTAL_EFFECTIVE_TAX_RATE");
 
                 cad.set("POSTED_DATE", approveDate);
                 cad.set("TAX_CATEGORY_NAME", tax_category_name);
                 cad.set("TAX_CATEGORY_ID", TAX_CATEGORY_ID);
-                cad.set("TAX_REGION_ID", ca.getString("TAX_REGION_ID"));
+                if (ca != null)
+                    cad.set("TAX_REGION_ID", ca.getString("TAX_REGION_ID"));
                 cad.set("TAX_REGION_NAME", tax_region_name);
                 cad.set("EFFECTIVE_TAX_RATE", tax_rate);
 
                 //是否免税
-                if (!ca.getString("IS_TAX_EXEMPT").equals("1") && ca.get("EXTENDED_PRICE") != null && tax_rate > 0) {
+                if (ca != null &&!ca.getString("IS_TAX_EXEMPT").equals("1") && ca.get("EXTENDED_PRICE") != null && tax_rate > 0) {
                     double tax_dollars = cad.get("EXTENDED_PRICE", Double.class) * (1 - 1 / (1 + tax_rate));//税额
                     cad.set("TAX_DOLLARS", tax_dollars);
                 }