Выполняется следующий код:
Код:
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