瀏覽代碼

2、Donenow上费用审批通过后计算税率、税额;
3、Donenow上服务审批通过后计算税率、税额;
4、Donenow上费用、工时审批通过后,允许撤销;

zhangyao 3 月之前
父節點
當前提交
80b516f96c

+ 101 - 8
com.awspaas.user.apps.donenow_ctt/src/com/awspaas/user/apps/donenow_ctt/controller/contractApproveController.java

@@ -13,6 +13,7 @@ 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.sql.Connection;
 import java.sql.SQLException;
 import java.time.LocalDate;
 import java.time.ZoneId;
@@ -323,13 +324,14 @@ public class contractApproveController {
                 System.out.println("获取费率异常" + e.getMessage());
             }
 
+            String ORGID = uc.getCompanyModel().getId();
             // 获取税收信息
             if (thisAccount != null && StringUtils.isNotBlank(thisAccount.getString("TAX_REGION_ID"))) {
-                thisTaxRegion = DBSql.getMap("SELECT * FROM BO_EU_DND_GENERAL WHERE OID=?", new Object[]{thisAccount.getString("TAX_REGION_ID")});
+                thisTaxRegion = DBSql.getMap("SELECT * FROM BO_EU_DND_GENERAL WHERE OID=? AND ORGID=?", new Object[]{thisAccount.getString("TAX_REGION_ID"), ORGID});
             }
             if (thisTaxCate != null && thisTaxRegion != null) {
 
-                RowMap thisTax = DBSql.getMap("SELECT * FROM BO_EU_DND_TAX_REGION_CATE WHERE TAX_REGION_ID=? AND TAX_CATEGORY_ID=?", new Object[]{thisTaxRegion.getString("ID"), thisTaxCate.getString("ID")});
+                RowMap thisTax = DBSql.getMap("SELECT * FROM BO_EU_DND_TAX_REGION_CATE WHERE TAX_REGION_ID=? AND TAX_CATEGORY_ID=? AND ORGID=?", new Object[]{thisTaxRegion.getString("OID"), thisTaxCate.getString("OID"), ORGID});
                 if (thisTax != null) {
                     tax_rate = thisTax.getDouble("TOTAL_EFFECTIVE_TAX_RATE");
                 }
@@ -393,7 +395,7 @@ public class contractApproveController {
                     thisBlockDed.set("EXTENDED_COST", GetEntryCost(thisWorkEntry.getString("ID")));
                     thisBlockDed.set("CONTRACT_ID", thisWorkEntry.getString("CONTRACT_ID"));
                     if (thisTaxCate != null)
-                        thisBlockDed.set("TAX_CATEGORY_ID", thisTaxCate.getString("ID"));
+                        thisBlockDed.set("TAX_CATEGORY_ID", thisTaxCate.getString("OID"));
 
                     thisBlockDed.set("EXTENDED_PRICE", 0);
                     thisBlockDed.set("BILL_ACCOUNT_ID", thisWorkEntry.get("BILL_ACCOUNT_ID"));
@@ -710,18 +712,23 @@ public class contractApproveController {
             String contract_id = null;
 
             if (StringUtils.isNotBlank("COST_CODE_ID")) {
-                RowMap thisCost = DBSql.getMap("SELECT * FROM BO_EU_DND_COST_CODE WHERE ID=?", getString(rowMap, "COST_CODE_ID"));
+                RowMap thisCost = DBSql.getMap("SELECT * FROM BO_EU_DND_COST_CODE WHERE OID=? AND ORGID=?", new Object[]{getString(rowMap, "COST_CODE_ID"), uc.getCompanyModel().getId()});
                 if (thisCost != null && StringUtils.isNotBlank(thisCost.getString("TAX_CATEGORY_ID"))) {
-                    thisTaxCate = DBSql.getMap("SELECT * FROM BO_EU_DND_GENERAL WHERE OID=?", thisCost.getString("TAX_CATEGORY_ID"));
+                    thisTaxCate = DBSql.getMap("SELECT * FROM BO_EU_DND_GENERAL WHERE OID=?  AND ORGID=?", new Object[]{thisCost.getString("TAX_CATEGORY_ID"), uc.getCompanyModel().getId()});
                 }
             }
+
+
             RowMap thisAccount = DBSql.getMap("SELECT * FROM BO_EU_DNCRM_ACCOUNT WHERE ID=?", getString(rowMap, "ACCOUNT_ID"));
             if (thisAccount != null && StringUtils.isNotBlank(thisAccount.getString("TAX_REGION_ID"))) {
-                thisTaxRegion = DBSql.getMap("SELECT * FROM BO_EU_DND_GENERAL WHERE OID=?", thisAccount.getString("TAX_REGION_ID"));
+                thisTaxRegion = DBSql.getMap("SELECT * FROM BO_EU_DND_GENERAL WHERE OID=? AND ORGID=?", new Object[]{thisAccount.getString("TAX_REGION_ID"), uc.getCompanyModel().getId()});
             }
+
+
             if (thisTaxRegion != null && thisTaxCate != null) {
-                tax_rate = DBSql.getDouble("SELECT TOTAL_EFFECTIVE_TAX_RATE FROM BO_EU_DND_TAX_REGION_CATE WHERE tax_region_id='" + thisTaxRegion.getString("ID") + "' and tax_cate_id='" + thisTaxCate.getString("ID") + "' ", "TOTAL_EFFECTIVE_TAX_RATE");
+                tax_rate = DBSql.getDouble("SELECT TOTAL_EFFECTIVE_TAX_RATE FROM BO_EU_DND_TAX_REGION_CATE WHERE tax_region_id='" + thisTaxRegion.getString("OID") + "' and tax_cate_id='" + thisTaxCate.getString("OID") + "' and ORGID='" + uc.getCompanyModel().getId() + "'", "TOTAL_EFFECTIVE_TAX_RATE");
             }
+
             LocalDate thisDate = getLocalDate(approveDate);//审批时间
 
             if (StringUtils.isNotBlank(oldExp.getString("PROJECT_ID"))) {
@@ -765,7 +772,8 @@ public class contractApproveController {
             thisDed.set("EFFECTIVE_TAX_RATE", tax_rate);
             thisDed.set("TAX_DOLLARS", extended_price * (1 - 1 / (1 + tax_rate)));
             if (thisTaxCate != null)
-                thisDed.set("TAX_CATEGORY_ID", thisTaxCate.getString("ID"));
+                thisDed.set("TAX_CATEGORY_ID", thisTaxCate.getString("OID"));
+
 
             dn.recordFormChanges.record(uc, thisDed, "审批提交费用");
             SDK.getBOAPI().createDataBO("BO_EU_DNCRM_ACCOUNT_DEDUCTION", thisDed, uc);
@@ -783,4 +791,89 @@ public class contractApproveController {
 
         return ResponseObject.newOkResponse();
     }
+
+
+    /**
+     * 撤销工时审批
+     * @param ids
+     * @return
+     */
+    @Mapping("com.awspaas.user.apps.donenow_ctt.revoke_labor")
+    public ResponseObject revokeLabor(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_DNSDK_WORK_ENTRY", 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_DNSDK_WORK_ENTRY", oldEntry);
+
+            }
+            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();
+    }
+
+
+    /**
+     * 撤销费用审批
+     * @param uc
+     * @param ids
+     * @return
+     * @throws SQLException
+     */
+    @Mapping("com.awspaas.user.apps.donenow_ctt.revoke_expense")
+    public ResponseObject revokeExpense(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_DNSDK_EXPENSE", 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_DNSDK_EXPENSE", oldEntry);
+
+            }
+            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();
+    }
+
 }

+ 10 - 5
com.awspaas.user.apps.donenow_ctt/src/com/awspaas/user/apps/donenow_ctt/service/contractService.java

@@ -1162,6 +1162,8 @@ public class contractService {
                 String CONTRACT_SERVICE_ID = null;//合同服务ID
                 String CONTRACT_ID = null;//合同ID
 
+                String ORGID = uc.getCompanyModel().getId();
+
                 //BO_EU_DNCTT_CONTRACT
                 BO bo = SDK.getBOAPI().get("BO_EU_DNCTT_CONTRACT", approveId);//合同初始费用
                 if (bo != null) {
@@ -1180,7 +1182,8 @@ public class contractService {
                     cad.set("EXTENDED_PRICE", bo.get("ADJUST_SETUP_FEE"));
 
                     if (StringUtils.isNotBlank(bo.getString("SETUP_FEE_COST_CODE_ID"))) {
-                        TAX_CATEGORY_ID = SDK.getBOAPI().get("BO_EU_DND_COST_CODE", bo.getString("SETUP_FEE_COST_CODE_ID"), "TAX_CATEGORY_ID").toString();
+                        TAX_CATEGORY_ID = DBSql.getString("select TAX_CATEGORY_ID from BO_EU_DND_COST_CODE where OID=? and ORGID=?", new Object[]{bo.getString("SETUP_FEE_COST_CODE_ID"), ORGID});
+                        //SDK.getBOAPI().get("BO_EU_DND_COST_CODE", bo.getString("SETUP_FEE_COST_CODE_ID"), "TAX_CATEGORY_ID").toString();
                     }
                 } else {
                     //BO_EU_DNCTT_CONTRACT_SERVICE_ADJUST
@@ -1212,7 +1215,7 @@ public class contractService {
                             costCodeId = DBSql.getString("SELECT COST_CODE_ID FROM BO_EU_DNIVT_SERVICE_BUNDLE WHERE ID = ?", new Object[]{bo.getString("OBJECT_ID")});
                         }
 
-                        Object taxCategoryId = SDK.getBOAPI().get("BO_EU_DND_COST_CODE", costCodeId, "TAX_CATEGORY_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();
                         }
@@ -1245,7 +1248,7 @@ public class contractService {
                             } else {
                                 costCodeId = DBSql.getString("SELECT COST_CODE_ID FROM BO_EU_DNIVT_SERVICE_BUNDLE WHERE ID = ?", new Object[]{bo.getString("OBJECT_ID")});
                             }
-                            Object taxCategoryId = SDK.getBOAPI().get("BO_EU_DND_COST_CODE", costCodeId, "TAX_CATEGORY_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();
                         }
@@ -1271,7 +1274,7 @@ public class contractService {
                 }
 
                 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 + "' ", "TOTAL_EFFECTIVE_TAX_RATE");
+                    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);
@@ -1282,8 +1285,9 @@ public class contractService {
 
                 // cad.set("EXTENDED_COST", tax_rate);
                 // cad.extended_cost = GetCost(id);
+                //是否免税
+                if (ca.getString("IS_TAX_EXEMPT").equals("1")==false) {
 
-                if (ca.getString("IS_TAX_EXEMPT").equals("1")) {
                     double tax_dollars = cad.get("EXTENDED_PRICE", Double.class) - cad.get("EXTENDED_PRICE", Double.class) / (1 + tax_rate);//税额
                     cad.set("TAX_DOLLARS", tax_dollars);
                 }
@@ -1291,6 +1295,7 @@ public class contractService {
                 //计费客户
                 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, "提交服务费费用");
             }