Bladeren bron

2024090035
增加参数配置:产生的应收对账单按照税率分组

zxl 2 dagen geleden
bovenliggende
commit
2d3426e2a1
1 gewijzigde bestanden met toevoegingen van 37 en 7 verwijderingen
  1. 37 7
      src/com/uas/erp/service/fa/impl/BatchDealServiceImpl.java

+ 37 - 7
src/com/uas/erp/service/fa/impl/BatchDealServiceImpl.java

@@ -1577,6 +1577,7 @@ public class BatchDealServiceImpl implements BatchDealService {
 			}
 			}
 		}
 		}
 		Object pi_fztype = StringUtil.hasText(store.get(0).get("pi_fztype")) ? store.get(0).get("pi_fztype") : "CC";
 		Object pi_fztype = StringUtil.hasText(store.get(0).get("pi_fztype")) ? store.get(0).get("pi_fztype") : "CC";
+		boolean groupTaxRate = baseDao.isDBSetting("ARCheck", "groupTaxRate");
 		if (StringUtil.hasText(accode)) {
 		if (StringUtil.hasText(accode)) {
 			// 判断指定的采购单状态是否[在录入],指定采购单的请购类型是否与当前的一致
 			// 判断指定的采购单状态是否[在录入],指定采购单的请购类型是否与当前的一致
 			ac = baseDao.getFieldsDataByCondition("archeck", new String[] { "ac_statuscode", "ac_custcode", "ac_id", "ac_currency",
 			ac = baseDao.getFieldsDataByCondition("archeck", new String[] { "ac_statuscode", "ac_custcode", "ac_id", "ac_currency",
@@ -1609,6 +1610,15 @@ public class BatchDealServiceImpl implements BatchDealService {
 							}
 							}
 						}
 						}
 					}
 					}
+					if (StringUtil.hasText(map.get("pd_taxrate"))) {
+						int count=baseDao.getCount("select count(1) from ARCheck left join ARCHECKDETAIL on ac_id = ad_acid " +
+										"where ac_code = '"+accode+"' and ad_taxrate <> '"+map.get("pd_taxrate")+"'");
+						if(count!=0){
+							log1 = "选定发票的税率不同,不能合并生成!";
+							sb1.append(log1).append("<hr>");
+						}
+					}
+
 				}
 				}
 				if (sb1.length() > 0) {
 				if (sb1.length() > 0) {
 					BaseUtil.showError(sb1.toString());
 					BaseUtil.showError(sb1.toString());
@@ -1619,18 +1629,38 @@ public class BatchDealServiceImpl implements BatchDealService {
 		if ("CC".equals(pi_fztype)) {
 		if ("CC".equals(pi_fztype)) {
 			// 按客户+币别分组
 			// 按客户+币别分组
 			if (StringUtil.hasText(accode)) {
 			if (StringUtil.hasText(accode)) {
-				ac = baseDao.getFieldsDataByCondition("archeck", new String[] { "ac_custcode", "ac_currency" }, "ac_code='" + accode + "'");
-				mm = ac[0].toString() + "#" + ac[1].toString();
+				if (groupTaxRate) {
+					ac = baseDao.getFieldsDataByCondition("archeck left join (select max(ad_taxrate) ad_taxrate,ad_acid from ARCHECKDETAIL group by ad_acid) on ad_acid = ac_id", new String[]{"ac_custcode", "ac_currency", "ad_taxrate"}, "ac_code='" + accode + "'");
+					mm = ac[0].toString() + "#" + ac[1].toString() + "#" + ac[2].toString();
+				}else{
+					ac = baseDao.getFieldsDataByCondition("archeck", new String[]{"ac_custcode", "ac_currency"}, "ac_code='" + accode + "'");
+					mm = ac[0].toString() + "#" + ac[1].toString();
+				}
+
+			}
+			if (groupTaxRate) {
+				map = BaseUtil.groupsMap(store, new Object[]{"pi_arcode", "pi_currency", "pd_taxrate"});
+			}else {
+				map = BaseUtil.groupsMap(store, new Object[]{"pi_arcode", "pi_currency"});
 			}
 			}
-			map = BaseUtil.groupsMap(store, new Object[] { "pi_arcode", "pi_currency" });
 		} else if ("CCS".equals(pi_fztype)) {
 		} else if ("CCS".equals(pi_fztype)) {
 			// 按客户+币别+业务员分组
 			// 按客户+币别+业务员分组
 			if (StringUtil.hasText(accode)) {
 			if (StringUtil.hasText(accode)) {
-				ac = baseDao.getFieldsDataByCondition("archeck", new String[] { "ac_custcode", "ac_currency", "ac_sellercode" },
-						"ac_code='" + accode + "'");
-				mm = ac[0].toString() + "#" + ac[1].toString() + "#" + ac[2].toString();
+				if (groupTaxRate) {
+					ac = baseDao.getFieldsDataByCondition("archeck left join (select max(ad_taxrate) ad_taxrate,ad_acid from ARCHECKDETAIL group by ad_acid) on ad_acid = ac_id", new String[]{"ac_custcode", "ac_currency", "ac_sellercode", "ad_taxrate"},
+							"ac_code='" + accode + "'");
+					mm = ac[0].toString() + "#" + ac[1].toString() + "#" + ac[2].toString();
+				}else{
+					ac = baseDao.getFieldsDataByCondition("archeck", new String[]{"ac_custcode", "ac_currency", "ac_sellercode"},
+							"ac_code='" + accode + "'");
+					mm = ac[0].toString() + "#" + ac[1].toString() + "#" + ac[2].toString() + "#" + ac[3].toString();
+				}
+			}
+			if (groupTaxRate) {
+				map = BaseUtil.groupsMap(store, new Object[]{"pi_arcode", "pi_currency", "pi_sellercode", "pd_taxrate"});
+			}else {
+				map = BaseUtil.groupsMap(store, new Object[]{"pi_arcode", "pi_currency", "pi_sellercode"});
 			}
 			}
-			map = BaseUtil.groupsMap(store, new Object[] { "pi_arcode", "pi_currency", "pi_sellercode" });
 		}
 		}
 		List<Map<Object, Object>> s = null;
 		List<Map<Object, Object>> s = null;
 		String vCode = "";
 		String vCode = "";