Выполняется следующий код:
Код:
      Calculator calculator = new Calculator();
      calculator.setExecutingTime(toDate);
      calculator.initTask(setup, 0, "mid=" + NPAY_MID + "\nhour.minus=0");
      calculator.setCids(cids);
      calculator.setPreCalc();
      calculator.startTask();
      Map<Integer, BigDecimal> accountsMap = calculator.getCostCache().getContractAccounts();
      Iterator<Map.Entry<Integer, BigDecimal>> accountMapCids = accountsMap.entrySet().iterator();
      while (accountMapCids.hasNext()) {
         Map.Entry<Integer, BigDecimal> entry = accountMapCids.next();
         Integer cid = entry.getKey();
         BigDecimal planSum = (BigDecimal) entry.getValue();
                  //      
                  //      
      }
Так вот, несмотря на то, что договор находится в статусе Приостановлен, все равно планируемая сумма считается в полном объеме месячной платы.
Например договор Приостановлен в середине месяца. планируемая сумма должна быть 250 руб, а результат выдает 500 руб.
При этом штатный скрипт блокировки (тот, что в Планировщике) отрабатывает нормально и не блокирует такие договора, верно рассчитывая, что текущих денег на счету (251 руб, допустим, для нашего примера) будет достаточно.
Конфигурации:
Основная
Код:
contract.status.list=0:Активен;1:В отключении;2:Отключен;3:Блокирован сист.;4:Приостановлен;5:В подключении
# статусы договора, запрещённые к ручной установке
contract.status.no.manual.set=1,2,5
Модуля npay
Код:
contract.status.suspend.codes=2,3,4,5