Sfoglia il codice sorgente

按月计算,偶发异常

zhangyao 1 mese fa
parent
commit
dd80e170b1

+ 9 - 5
com.awspaas.user.apps.donenow_ctt/src/com/awspaas/user/apps/donenow_ctt/PeriodCalculationUtil.java

@@ -544,10 +544,11 @@ public class PeriodCalculationUtil {
         if (contractStartDate.isAfter(periodBeginDate)) {
             endDay = contractStartDate.minusDays(1);
         } else if (contractStartDate.isBefore(periodBeginDate)) {
-            endDay = contractStartDate.plusMonths(1).minusDays(1);
+            endDay = contractStartDate.plusMonths(1);
             while (endDay.isBefore(periodBeginDate)) {
                 endDay = endDay.plusMonths(1);
             }
+            endDay = endDay.minusDays(1);
         } else {
             // 合同开始日 = 服务开始日:首个周期为1个月后
             //endDay = contractStartDate.plusMonths(1).minusDays(1);
@@ -580,12 +581,12 @@ public class PeriodCalculationUtil {
         if (contractStartDate.isAfter(periodBeginDate)) {
             endDay = contractStartDate.minusDays(1);
         } else if (contractStartDate.isBefore(periodBeginDate)) {
-            endDay = contractStartDate.plusMonths(3).minusDays(1);
+            endDay = contractStartDate.plusMonths(3);
 
             while (endDay.isBefore(periodBeginDate)) {
                 endDay = endDay.plusMonths(3);
             }
-
+            endDay = endDay.minusDays(1);
         } else {
             //endDay = contractStartDate.plusMonths(3).minusDays(1);
             return null;
@@ -616,12 +617,14 @@ public class PeriodCalculationUtil {
         if (contractStartDate.isAfter(periodBeginDate)) {
             endDay = contractStartDate.minusDays(1);
         } else if (contractStartDate.isBefore(periodBeginDate)) {
-            endDay = contractStartDate.plusMonths(6).minusDays(1);
+            endDay = contractStartDate.plusMonths(6);
 
             while (endDay.isBefore(periodBeginDate)) {
                 endDay = endDay.plusMonths(6);
             }
 
+            endDay = endDay.minusDays(1);
+
         } else {
             //endDay = contractStartDate.plusMonths(6).minusDays(1);
             return null;
@@ -652,10 +655,11 @@ public class PeriodCalculationUtil {
         if (contractStartDate.isAfter(periodBeginDate)) {
             endDay = contractStartDate.minusDays(1);
         } else if (contractStartDate.isBefore(periodBeginDate)) {
-            endDay = contractStartDate.plusMonths(12).minusDays(1);
+            endDay = contractStartDate.plusMonths(12);
             while (endDay.isBefore(periodBeginDate)) {
                 endDay = endDay.plusMonths(12);
             }
+            endDay = endDay.minusDays(1);
         } else {
             // endDay = contractStartDate.plusMonths(12).minusDays(1);
             return null;

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

@@ -1172,7 +1172,7 @@ public class contractService {
                     PeriodCalculationUtil.Period period1 = periodList.get(0);
                     PeriodCalculationUtil.Period period2 = periodList.get(1);
                     //小于1
-                    if (period1.getRate().compareTo(BigDecimal.ONE) < 1) {
+                    if (period1.getRate().compareTo(BigDecimal.ONE) < 0) {
                         //合并
                         period2.setRate(period1.getRate().add(period2.getRate()));
                         period2.setPeriodBeginDate(period1.getPeriodBeginDate());
@@ -2040,12 +2040,21 @@ public class contractService {
             }
         }
 
+
         //服务表上面 采购税种
+        /*
         String PURCHASE_TAX_CATEGORY_ID = serviceBO.get("PURCHASE_TAX_CATEGORY_ID") == null ? null : serviceBO.get("PURCHASE_TAX_CATEGORY_ID").toString();
         if (StringUtils.isBlank(PURCHASE_TAX_CATEGORY_ID))
             PURCHASE_TAX_CATEGORY_ID = serviceBO.get("TAX_CATEGORY_ID") == null ? null : serviceBO.get("TAX_CATEGORY_ID").toString();
 
         contractCost.set("TAX_CATEGORY_ID", PURCHASE_TAX_CATEGORY_ID);
+        */
+
+        if (serviceBO.get("VAT_TAX").toString().equals("1")) {
+            contractCost.set("TAX_CATEGORY_ID", serviceBO.get("PURCHASE_TAX_CATEGORY_ID"));
+        } else {
+            contractCost.set("TAX_CATEGORY_ID", DBSql.getString("SELECT OID,NAME,ORGID,GENERAL_TABLE_ID,EXT1,CLOSED,IS_ACTIVE FROM BO_EU_DND_GENERAL WHERE  GENERAL_TABLE_ID=44 AND ORGID=? AND EXT1=0", new Object[]{uc.getCompanyModel().getId()}));
+        }
 
         contractCost.set("IS_SERVICE_PRODUCT", 1);
         //单价

+ 1 - 1
com.awspaas.user.apps.donenow_ctt/src/com/awspaas/user/apps/donenow_ctt/service/contractServiceAdj.java

@@ -222,7 +222,7 @@ public class contractServiceAdj {
                         PeriodCalculationUtil.Period period1 = periodList.get(0);
                         PeriodCalculationUtil.Period period2 = periodList.get(1);
                         //小于1
-                        if (period1.getRate().compareTo(BigDecimal.ONE) < 1) {
+                        if (period1.getRate().compareTo(BigDecimal.ONE) < 0) {
                             //合并
                             period2.setRate(period1.getRate().add(period2.getRate()));
                             period2.setPeriodBeginDate(period1.getPeriodBeginDate());

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

@@ -798,12 +798,14 @@ public class ivtOrderController {
                 if (StringUtils.isNotBlank(cost.getString("SERVICE_ID"))) {
                     RowMap serviceMap = DBSql.getMap("select PURCHASE_TAX_CATEGORY_ID,VAT_TAX from BO_EU_DNCTT_CONTRACT_SERVICE where ID=?", new Object[]{cost.getString("SERVICE_ID")});
                     if (serviceMap.getString("VAT_TAX").equals("1")) {
-                        taxCategoryId = cost.getString("PURCHASE_TAX_CATEGORY_ID");
+                        taxCategoryId = serviceMap.getString("PURCHASE_TAX_CATEGORY_ID");
                     } else {
                         taxCategoryId = zeroTaxTaxCateId;
                     }
                 }
 
+                ivtLogger.info("taxCategoryId--- " + cost.getString("SERVICE_ID"));
+                ivtLogger.info("taxCategoryId--- " + taxCategoryId);
                 BigDecimal taxRate = taxRateMap.get(taxCategoryId);
                 if (taxRate == null) {
                     System.err.println("未知TAX_CATEGORY_ID:" + taxCategoryId);
@@ -819,7 +821,7 @@ public class ivtOrderController {
                 purchaseOrderProduct.set("PRODUCT_ID", cost.getString("PRODUCT_ID"));
                 purchaseOrderProduct.set("QUANTITY", cost.getString("PURCHASE_QUANTITY"));
                 purchaseOrderProduct.set("UNIT_COST", cost.getString("UNIT_COST"));
-                purchaseOrderProduct.set("TAX_CATEGORY_ID", zeroTaxTaxCateId);
+                purchaseOrderProduct.set("TAX_CATEGORY_ID", taxCategoryId);
 
                 String warehouseId = DBSql.getString("SELECT ID FROM bo_eu_dnivt_warehouse WHERE CATE_ID=2 AND ORGID=? ", new Object[]{uc.getCompanyModel().getId()});
                 if (warehouseId == null) {

+ 9 - 5
com.awspaas.user.apps.donenow_ivt/src/com/awspaas/user/apps/donenow_ivt/utils/PeriodCalculationUtil.java

@@ -534,10 +534,11 @@ public class PeriodCalculationUtil {
         if (contractStartDate.isAfter(periodBeginDate)) {
             endDay = contractStartDate.minusDays(1);
         } else if (contractStartDate.isBefore(periodBeginDate)) {
-            endDay = contractStartDate.plusMonths(1).minusDays(1);
+            endDay = contractStartDate.plusMonths(1);
             while (endDay.isBefore(periodBeginDate)) {
                 endDay = endDay.plusMonths(1);
             }
+            endDay = endDay.minusDays(1);
         } else {
             // 合同开始日 = 服务开始日:首个周期为1个月后
             //endDay = contractStartDate.plusMonths(1).minusDays(1);
@@ -570,12 +571,14 @@ public class PeriodCalculationUtil {
         if (contractStartDate.isAfter(periodBeginDate)) {
             endDay = contractStartDate.minusDays(1);
         } else if (contractStartDate.isBefore(periodBeginDate)) {
-            endDay = contractStartDate.plusMonths(3).minusDays(1);
+            endDay = contractStartDate.plusMonths(3);
 
             while (endDay.isBefore(periodBeginDate)) {
                 endDay = endDay.plusMonths(3);
             }
 
+            endDay = endDay.minusDays(1);
+
         } else {
             //endDay = contractStartDate.plusMonths(3).minusDays(1);
             return null;
@@ -606,12 +609,12 @@ public class PeriodCalculationUtil {
         if (contractStartDate.isAfter(periodBeginDate)) {
             endDay = contractStartDate.minusDays(1);
         } else if (contractStartDate.isBefore(periodBeginDate)) {
-            endDay = contractStartDate.plusMonths(6).minusDays(1);
+            endDay = contractStartDate.plusMonths(6);
 
             while (endDay.isBefore(periodBeginDate)) {
                 endDay = endDay.plusMonths(6);
             }
-
+            endDay = endDay.minusDays(1);
         } else {
             //endDay = contractStartDate.plusMonths(6).minusDays(1);
             return null;
@@ -642,10 +645,11 @@ public class PeriodCalculationUtil {
         if (contractStartDate.isAfter(periodBeginDate)) {
             endDay = contractStartDate.minusDays(1);
         } else if (contractStartDate.isBefore(periodBeginDate)) {
-            endDay = contractStartDate.plusMonths(12).minusDays(1);
+            endDay = contractStartDate.plusMonths(12);
             while (endDay.isBefore(periodBeginDate)) {
                 endDay = endDay.plusMonths(12);
             }
+            endDay = endDay.minusDays(1);
         } else {
             // endDay = contractStartDate.plusMonths(12).minusDays(1);
             return null;