|
|
@@ -821,6 +821,8 @@ public class contractService {
|
|
|
contractCost.set("EXTENDED_PRICE", DBSql.getDouble(conn, "SELECT SUM(PERIOD_ADJUSTED_PRICE) as PRICE FROM BO_EU_DNCTT_CONTRACT_SERVICE_PERIOD WHERE CONTRACT_SERVICE_ID='" + service.get("SERVICE_ID") + "'", "PRICE") + DBSql.getDouble(conn, "SELECT SUM(ADJUST_PRORATED_PRICE_CHANGE) as PRICE FROM BO_EU_DNCTT_CONTRACT_SERVICE_ADJUST WHERE CONTRACT_SERVICE_ID='" + service.get("SERVICE_ID") + "'", "PRICE"));
|
|
|
|
|
|
if (contractCost.isNew()) {
|
|
|
+ //成本子类:合同成本
|
|
|
+ contractCost.set("SUB_CATE_ID", "1314");
|
|
|
SDK.getBOAPI().create("BO_EU_DNCTT_CONTRACT_COST", contractCost, contractCost.getBindId(), uc.getUID(), conn);
|
|
|
} else {
|
|
|
SDK.getBOAPI().update("BO_EU_DNCTT_CONTRACT_COST", contractCost, conn);
|
|
|
@@ -1215,7 +1217,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 =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");
|
|
|
+ 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();
|
|
|
}
|
|
|
@@ -1255,9 +1257,15 @@ public class contractService {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- //按照合同税率
|
|
|
- if (SDK.getBOAPI().get("BO_EU_DNCTT_CONTRACT_SERVICE", CONTRACT_SERVICE_ID, "IS_CTRTAX_APPLIED").equals("1")) {
|
|
|
- TAX_CATEGORY_ID = SDK.getBOAPI().get("BO_EU_DNCTT_CONTRACT", CONTRACT_ID, "TAX_CATEGORY_ID").toString();
|
|
|
+
|
|
|
+ if (StringUtils.isNotBlank(CONTRACT_SERVICE_ID)) {
|
|
|
+ //按照合同税率
|
|
|
+ if (SDK.getBOAPI().get("BO_EU_DNCTT_CONTRACT_SERVICE", CONTRACT_SERVICE_ID, "IS_CTRTAX_APPLIED").equals("1")) {
|
|
|
+ TAX_CATEGORY_ID = SDK.getBOAPI().get("BO_EU_DNCTT_CONTRACT", CONTRACT_ID, "TAX_CATEGORY_ID").toString();
|
|
|
+ } else {
|
|
|
+ //使用服务上面的税率
|
|
|
+ TAX_CATEGORY_ID = SDK.getBOAPI().get("BO_EU_DNCTT_CONTRACT_SERVICE", CONTRACT_SERVICE_ID, "TAX_CATEGORY_ID").toString();
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
RowMap ca = DBSql.getMap("select TAX_REGION_ID,IS_TAX_EXEMPT from BO_EU_DNCRM_ACCOUNT where ID=?", new Object[]{cad.get("ACCOUNT_ID")});
|
|
|
@@ -1285,10 +1293,10 @@ public class contractService {
|
|
|
|
|
|
// cad.set("EXTENDED_COST", tax_rate);
|
|
|
// cad.extended_cost = GetCost(id);
|
|
|
- //是否免税
|
|
|
- if (ca.getString("IS_TAX_EXEMPT").equals("1")==false) {
|
|
|
|
|
|
- double tax_dollars = cad.get("EXTENDED_PRICE", Double.class) - cad.get("EXTENDED_PRICE", Double.class) / (1 + 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);
|
|
|
}
|
|
|
|
|
|
@@ -1362,8 +1370,10 @@ public class contractService {
|
|
|
cad.set("EFFECTIVE_TAX_RATE", tax_rate);
|
|
|
|
|
|
cad.set("EXTENDED_PRICE", bo.get("DOLLARS"));
|
|
|
- if (DBSql.getInt("select COUNT(1) cnt from BO_EU_DNCRM_ACCOUNT WHERE ID=? AND IS_TAX_EXEMPT=1 ", new Object[]{cad.getString("ACCOUNT_ID")}) > 0) {
|
|
|
- double tax_dollars = cad.get("EXTENDED_PRICE", Double.class) - cad.get("EXTENDED_PRICE", Double.class) / (1 + tax_rate);//税额
|
|
|
+
|
|
|
+ //是否免税
|
|
|
+ if (tax_rate > 0 && cad.get("EXTENDED_PRICE") != null && DBSql.getInt("select COUNT(1) cnt from BO_EU_DNCRM_ACCOUNT WHERE ID=? AND IS_TAX_EXEMPT<>1 ", new Object[]{cad.getString("ACCOUNT_ID")}) > 0) {
|
|
|
+ double tax_dollars = cad.get("EXTENDED_PRICE", Double.class) - (1 - 1 / (1 + tax_rate));//税额
|
|
|
cad.set("TAX_DOLLARS", tax_dollars);
|
|
|
}
|
|
|
|
|
|
@@ -1456,8 +1466,8 @@ public class contractService {
|
|
|
|
|
|
//不是 关联预付费合同
|
|
|
cad.set("EXTENDED_PRICE", ccc.get("EXTENDED_PRICE"));//总价
|
|
|
- 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);//税额
|
|
|
+ if (!ca.getString("IS_TAX_EXEMPT").equals("1") && tax_rate > 0 && cad.get("EXTENDED_PRICE") != null) {
|
|
|
+ double tax_dollars = cad.get("EXTENDED_PRICE", Double.class) - (1 - 1 / (1 + tax_rate));//税额
|
|
|
cad.set("TAX_DOLLARS", tax_dollars);
|
|
|
}
|
|
|
|