Bladeren bron

佣金审批并提交、调整佣金、恢复佣金初始值

zhangyao 2 maanden geleden
bovenliggende
commit
f34ce87f7b

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

@@ -1016,4 +1016,57 @@ public class contractApproveController {
         return ResponseObject.newOkResponse();
     }
 
+
+    /**
+     * 佣金审批
+     * @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) throws SQLException {
+
+        BO bo = SDK.getBOAPI().get("BO_EU_DNCTT_COMMISSION_PERIOD", id);//佣金
+        bo.set("PERIOD_ADJUSTED_PRICE", periodPrice);
+        SDK.getBOAPI().update("BO_EU_DNCTT_COMMISSION_PERIOD", bo);
+
+        return ResponseObject.newOkResponse();
+    }
+
+
+    /**
+     * 佣金调整,恢复初始价格
+     * @param uc
+     * @return
+     */
+    @Mapping(value = "com.awspaas.user.apps.donenow_ctt.approve_initCommissionPrice")
+    public ResponseObject initCommissionPrice(UserContext uc, String ids) throws SQLException {
+
+        for (String id : ids.split(","))
+        {
+            BO bo = SDK.getBOAPI().get("BO_EU_DNCTT_COMMISSION_PERIOD", id);//佣金
+            bo.set("PERIOD_ADJUSTED_PRICE", bo.get("COMMISSION_DOLLARS"));
+            SDK.getBOAPI().update("BO_EU_DNCTT_COMMISSION_PERIOD", bo);
+        }
+
+        return ResponseObject.newOkResponse();
+    }
+
 }

+ 2 - 0
com.awspaas.user.apps.donenow_ctt/src/com/awspaas/user/apps/donenow_ctt/cttConstant.java

@@ -99,4 +99,6 @@ public class cttConstant {
     public static final int  ACCOUNT_DEDUCTION_TYPE_SERVICE_AJUST = 1326;//服务调整
     public static final int  ACCOUNT_DEDUCTION_TYPE_INITIAL_COST = 1327;//初始费用
 
+    public static final int  ACCOUNT_DEDUCTION_TYPE_COMMISSION = 1328;//佣金
+
 }

+ 99 - 0
com.awspaas.user.apps.donenow_ctt/src/com/awspaas/user/apps/donenow_ctt/service/contractService.java

@@ -1701,4 +1701,103 @@ public class contractService {
         return DBSql.getDouble("SELECT( IFNULL(( SELECT rate FROM BO_EU_DNCTT_CONTRACT_INTERNAL_COST WHERE contract_id = p.contract_id AND resource_id = p.resource_id AND role_id = p.role_id LIMIT 1), ( SELECT hourly_rate FROM bo_eu_dnsys_resource_internal_cost WHERE resource_id = p.resource_id AND IFNULL(start_date, '1970-01-01') <= FROM_UNIXTIME(p.start_time / 1000) AND IFNULL(end_date, '9999-01-01') > FROM_UNIXTIME(p.start_time / 1000)) ) * p.hours_billed ) AS COST FROM bo_eu_dnsdk_work_entry p JOIN bo_eu_dnd_cost_code cc ON p.cost_code_id = cc.id JOIN bo_eu_dnsdk_task t ON p.task_id = t.id LEFT JOIN bo_eu_dnctt_contract c ON p.contract_id = c.id WHERE p.id = '" + id + "'", "COST");
     }
 
+
+    /**
+     * 提交佣金
+     * @param uc
+     * @param approveDate
+     * @param approveIds
+     * @return
+     */
+    public boolean approveCommission(UserContext uc, String approveDate, String approveIds) throws SQLException {
+
+        Connection connUpdate = null;
+        try {
+            connUpdate = DBSql.open();
+            connUpdate.setAutoCommit(false);
+
+            for (String approveId : approveIds.split(",")) {
+
+                BO cad = new BO();// crm_account_deduction();//审批并提交表实体对象
+                String TAX_CATEGORY_ID = null;//物料计费代码
+                String CONTRACT_SERVICE_ID = null;//合同服务ID
+                String CONTRACT_ID = null;//合同ID
+
+                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);
+
+                    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});
+                    }
+                }
+
+                RowMap ca = DBSql.getMap("select TAX_REGION_ID,IS_TAX_EXEMPT from BO_EU_DNCRM_ACCOUNT where ID=?", new Object[]{cad.get("ACCOUNT_ID")});
+                String tax_category_name = null;//税收种类
+                String tax_region_name = null;//税区
+                double tax_rate = 0;//税率
+
+                if (StringUtils.isNotBlank(TAX_CATEGORY_ID)) {
+                    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"))) {
+                    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)
+                    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"));
+                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) {
+                    double tax_dollars = cad.get("EXTENDED_PRICE", Double.class) * (1 - 1 / (1 + tax_rate));//税额
+                    cad.set("TAX_DOLLARS", tax_dollars);
+                }
+
+                //计费客户
+                if (StringUtils.isBlank(cad.getString("BILL_ACCOUNT_ID")) && StringUtils.isNotBlank(cad.getString("ACCOUNT_ID")))
+                    cad.set("BILL_ACCOUNT_ID", cad.get("ACCOUNT_ID"));
+
+                SDK.getBOAPI().createDataBO("BO_EU_DNCRM_ACCOUNT_DEDUCTION", cad, uc, connUpdate);
+                dn.recordFormChanges.record(uc, cad, "提交佣金");
+            }
+            connUpdate.commit();
+        } catch (SQLException e) {
+            e.printStackTrace();
+            if (connUpdate != null && !connUpdate.isClosed())
+                try {
+                    connUpdate.rollback();
+                } catch (SQLException ex) {
+                    ex.printStackTrace();
+                }
+        } finally {
+            if (connUpdate != null && !connUpdate.isClosed())
+                DBSql.close(connUpdate);
+        }
+
+        return true;
+    }
+
 }