zhangyao 1 месяц назад
Родитель
Сommit
3df9c1bf9f

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

@@ -85,4 +85,6 @@ public class commissionController {
     }
 
 
+    //合同销售佣金
+
 }

+ 34 - 8
com.awspaas.user.apps.donenow_ctt/src/com/awspaas/user/apps/donenow_ctt/service/contractService.java

@@ -2646,7 +2646,7 @@ public class contractService {
                     if (bo != null) {
                         CONTRACT_SERVICE_ID = bo.getString("CONTRACT_SERVICE_ID");
                         CONTRACT_ID = bo.getString("CONTRACT_ID");
-
+                        cad.set("CONTRACT_ID", CONTRACT_ID);
                         bo.set("APPROVE_AND_POST_DATE", approveDate);
                         bo.set("SETUP_FEE_APPROVE_POST_USER_ID", uc.getUID());
                         SDK.getBOAPI().update("BO_EU_DNCTT_CONTRACT_SERVICE_PERIOD", bo, connUpdate);
@@ -2662,14 +2662,18 @@ public class contractService {
 
                         cad.set("EXTENDED_PRICE", bo.get("PERIOD_ADJUSTED_PRICE"));
 
+ /*
                         String costCodeId = null;
                         if (bo.getString("OBJECT_TYPE").equals("1")) {
                             costCodeId = DBSql.getString("SELECT COST_CODE_ID FROM BO_EU_DNIVT_SERVICE WHERE ID = ?", new Object[]{bo.getString("OBJECT_ID")});
                         } else {
                             costCodeId = DBSql.getString("SELECT COST_CODE_ID FROM BO_EU_DNIVT_SERVICE_BUNDLE WHERE ID = ?", new Object[]{bo.getString("OBJECT_ID")});
                         }
+
                         Object taxCategoryId = DBSql.getString("select TAX_CATEGORY_ID from BO_EU_DND_COST_CODE where OID=? and ORGID=?", new Object[]{costCodeId, ORGID}); //SDK.getBOAPI().get("BO_EU_DND_COST_CODE", costCodeId, "TAX_CATEGORY_ID");
-                        if (taxCategoryId != null) TAX_CATEGORY_ID = taxCategoryId.toString();
+                        if (taxCategoryId != null)
+                            TAX_CATEGORY_ID = taxCategoryId.toString();
+                        */
                     }
 
                 }
@@ -2685,21 +2689,31 @@ public class contractService {
                     }
                 }
 
+                contractServiceLogger.info("TAX_CATEGORY_ID:" + TAX_CATEGORY_ID);
+
                 RowMap ca = DBSql.getMap("select NAME,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()});
+
+                    RowMap taxcate = DBSql.getMap("SELECT NAME,EXT1 FROM BO_EU_DND_GENERAL WHERE OID = ? AND ORGID=?", new Object[]{TAX_CATEGORY_ID, uc.getCompanyModel().getId()});
+
+                    tax_category_name = taxcate.getString("NAME");
+
+                    tax_rate = taxcate.getDouble("EXT1");
                 }
 
                 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()});
                 }
 
+                //2025年11月19日 税率不需要再从税区上面获取
+                /*
                 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);
@@ -2715,7 +2729,7 @@ public class contractService {
                 contractServiceLogger.info("是否免税" + ca.get("IS_TAX_EXEMPT"));
                 contractServiceLogger.info(ca.getString("NAME") + cad.get("ACCOUNT_ID") + "是否免税" + ca.get("IS_TAX_EXEMPT"));
                 //是否免税
-                if (ca.get("IS_TAX_EXEMPT") != null && ca.getString("IS_TAX_EXEMPT").equals("1")) {
+                if (ca != null && ca.get("IS_TAX_EXEMPT") != null && ca.getString("IS_TAX_EXEMPT").equals("1")) {
 
                 } else {
 
@@ -2783,9 +2797,9 @@ public class contractService {
 
                     cad.set("OBJECT_ID", approveId);
                     cad.set("TAX_CATEGORY_ID", TAX_CATEGORY_ID);
-                    cad.set("TAX_CATEGORY_NAME", DBSql.getString("SELECT NAME FROM BO_EU_DND_GENERAL WHERE OID = ? AND ORGID=?", new Object[]{TAX_CATEGORY_ID, uc.getCompanyModel().getId()}));
 
                     cad.set("TAX_REGION_ID", DBSql.getString("SELECT TAX_REGION_ID FROM BO_EU_DNCRM_ACCOUNT WHERE ID=(SELECT ACCOUNT_ID FROM BO_EU_DNCTT_CONTRACT WHERE ID=?)", new Object[]{bo.getString("CONTRACT_ID")}));
+
                     cad.set("TAX_REGION_NAME", DBSql.getString("SELECT NAME FROM BO_EU_DND_GENERAL WHERE OID = ? AND ORGID=?", new Object[]{cad.get("TAX_REGION_ID"), uc.getCompanyModel().getId()}));
 
                     cad.set("ACCOUNT_ID", DBSql.getString("SELECT ACCOUNT_ID FROM BO_EU_DNCTT_CONTRACT WHERE ID=?", new Object[]{bo.getString("CONTRACT_ID")}));
@@ -2794,8 +2808,14 @@ public class contractService {
 
                     cad.set("CONTRACT_ID", bo.get("CONTRACT_ID"));
 
+                    // double tax_rate = DBSql.getDouble("SELECT TOTAL_EFFECTIVE_TAX_RATE FROM BO_EU_DND_TAX_REGION_CATE WHERE TAX_REGION_ID='" + cad.getString("TAX_REGION_ID") + "' AND TAX_CATE_ID='" + TAX_CATEGORY_ID + "' ", "TOTAL_EFFECTIVE_TAX_RATE");
+
+                    RowMap taxcate = DBSql.getMap("SELECT NAME,EXT1 FROM BO_EU_DND_GENERAL WHERE OID = ? AND ORGID=?", new Object[]{TAX_CATEGORY_ID, uc.getCompanyModel().getId()});
+
+                    cad.set("TAX_CATEGORY_NAME", taxcate.getString("NAME"));
+
+                    double tax_rate = taxcate.getDouble("EXT1");
 
-                    double tax_rate = DBSql.getDouble("SELECT TOTAL_EFFECTIVE_TAX_RATE FROM BO_EU_DND_TAX_REGION_CATE WHERE TAX_REGION_ID='" + cad.getString("TAX_REGION_ID") + "' AND TAX_CATE_ID='" + TAX_CATEGORY_ID + "' ", "TOTAL_EFFECTIVE_TAX_RATE");
                     cad.set("EFFECTIVE_TAX_RATE", tax_rate);
 
                     cad.set("EXTENDED_PRICE", bo.get("DOLLARS"));
@@ -2862,14 +2882,20 @@ public class contractService {
                     TAX_CATEGORY_ID = ccc.getString("TAX_CATEGORY_ID");
                 }
 
-                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 (StringUtils.isNotBlank(TAX_CATEGORY_ID)) {
+
+                    RowMap taxcate = DBSql.getMap("SELECT NAME,EXT1 FROM BO_EU_DND_GENERAL WHERE OID = ? AND ORGID=?", new Object[]{TAX_CATEGORY_ID, uc.getCompanyModel().getId()});
+                    tax_category_name = taxcate.getString("NAME");
+                    tax_rate = taxcate.getDouble("EXT1");
+                }
 
                 if (ca.get("TAX_REGION_ID") != null)
                     tax_region_name = DBSql.getString("SELECT NAME FROM BO_EU_DND_GENERAL WHERE OID = ? AND ORGID=?", new Object[]{ca.get("TAX_REGION_ID"), uc.getCompanyModel().getId()});
 
+                /*
                 if (StringUtils.isNotBlank(TAX_CATEGORY_ID) && ca.get("TAX_REGION_ID") != 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 + "' ", "TOTAL_EFFECTIVE_TAX_RATE");
+                */
 
                 BO cad = new BO();
                 cad.set("OBJECT_ID", ccc.getString("ID"));//成本表id

+ 23 - 2
com.awspaas.user.apps.donenow_ivt/src/com/awspaas/user/apps/donenow_ivt/controller/ivtOrderController.java

@@ -1054,7 +1054,7 @@ public class ivtOrderController {
             BigDecimal PLAN_AMOUNT0 = TypeUtil.convert(plan.get("PLAN_AMOUNT"), BigDecimal.class);
 
             //比较是否相等
-            if (PLAN_AMOUNT.compareTo(PLAN_AMOUNT0) != 0) {
+            if (isEqualUpToTwoDecimals(PLAN_AMOUNT, PLAN_AMOUNT0, RoundingMode.DOWN) == false) {
                 ivtLogger.info("付款计划已修改:" + plan.getString("PAY_DESC") + ":" + PLAN_AMOUNT0 + ":" + PLAN_AMOUNT);
                 sb.append(plan.getString("PAY_DESC")).append(":").append(PLAN_AMOUNT0).append(",");
             }
@@ -1090,8 +1090,9 @@ public class ivtOrderController {
 
             BigDecimal PLAN_AMOUNT0 = TypeUtil.convert(plan.get("PLAN_AMOUNT"), BigDecimal.class);
 
+
             //比较是否相等
-            if (PLAN_AMOUNT.compareTo(PLAN_AMOUNT0) != 0) {
+            if (isEqualUpToTwoDecimals(PLAN_AMOUNT, PLAN_AMOUNT0, RoundingMode.DOWN) == false) {
 
                 BO detailBO = SDK.getBOAPI().get("BO_EU_DNIVT_PAY_REQUEST_DETAIL", detail.getString("ID"));
 
@@ -1106,4 +1107,24 @@ public class ivtOrderController {
     }
 
 
+    /**
+     * 判断两个BigDecimal是否在小数点后两位及以上相等
+     * @param a 第一个BigDecimal
+     * @param b 第二个BigDecimal
+     * @param roundingMode 舍入模式(如截断、四舍五入等)
+     * @return 若小数点后两位及以上相等则返回true,否则返回false
+     */
+    public static boolean isEqualUpToTwoDecimals(BigDecimal a, BigDecimal b, RoundingMode roundingMode) {
+        // 处理null情况:都为null则相等,否则不等
+        if (a == null || b == null) {
+            return a == b;
+        }
+        // 统一保留两位小数
+        BigDecimal aScaled = a.setScale(2, roundingMode);
+        BigDecimal bScaled = b.setScale(2, roundingMode);
+        // 比较处理后的结果
+        return aScaled.compareTo(bScaled) == 0;
+    }
+
+
 }