Есть код, который для определения абонки, передал туда все договора чтоб по всем выщитывал предпологаемую абонку, по каждому договору она выводится, а как сложить их и вывести полную?
Код:
import bitel.billing.server.script.event.*;
import bitel.billing.server.contract.bean.*;
import bitel.billing.server.util.*;
import java.text.SimpleDateFormat;
import bitel.billing.server.admin.bean.*;
import java.math.BigDecimal;
import bitel.billing.server.npay.*;
import java.util.Locale;
import java.text.*;
import bitel.billing.server.contract.bean.BalanceUtils;
import java.math.BigDecimal;
import java.sql.*;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.*;
import bitel.billing.server.tariff.*;
import bitel.billing.common.TimeUtils;
import bitel.billing.server.util.*;
import ru.bitel.bgbilling.server.util.DefaultServerSetup;
import ru.bitel.bgbilling.server.util.ServerUtils;
import bitel.billing.common.KernelConst;
import bitel.billing.server.contract.bean.*;
String query = "select id,title from contract where gr&(1<<0)>0";
PreparedStatement contractPs = con.prepareStatement( query );
ResultSet contractRs = contractPs.executeQuery();
int cid;
int i = 0;
while ( contractRs.next() )
{
cid = contractRs.getInt( 1 );
title = contractRs.getString(2);
strcid = String.valueOf(cid);
Date currentDate = new Date();
BalanceUtils bu = new BalanceUtils( con );
BigDecimal balance = bu.getBalance(currentDate, cid);
Calendar dt = new GregorianCalendar();
Calculator calculator = new Calculator();
calculator.setExecutingTime(dt);
calculator.setPreCalc();
calculator.setActiveFromDate( null );
calculator.initTask(setup, 0, "mid=8");
calculator.setCids(strcid);
calculator.startTask();
BigDecimal planAccount = BigDecimal.ZERO;
Map planAccountMap = calculator.getCostCache().getContractAccounts();
for (Integer contractId : ru.bitel.common.Utils.toIntegerList(strcid))
{
if(planAccountMap.get(contractId)!= null){
planAccount = planAccount.add((BigDecimal)planAccountMap.get(contractId));
}
}
BigDecimal planostatok = balance.subtract( planAccount );
String param32string = balance + "р. (текущий остаток) , предпологаемая абонплата " + planAccount + "p. договор " + title;
print (param32string);
i++;
}
print("кол-во " +i );
contractRs.close();
contractPs.close();
Собственно planAccount нужно посчитать по всем договорам
_________________
Код:
Клиент: вер. 6.2.714 / 25.05.2015 17:27:15
os: Linux; java: Java HotSpot(TM) 64-Bit Server VM, v.1.8.0_45
Сервер: вер. 6.2.881 / 22.05.2015 17:56:55
os: Linux; java: Java HotSpot(TM) 64-Bit Server VM, v.1.8.0_45
Помощь по администрированию bgbilling в jabber конференции или Группа в telegramСтиль программирования - пьяный мастерстер
Разработка мобильных приложений