Клиент пожаловался, что в стандартной рассылке баланса (bitel.billing.server.contract.bean.DispatchBalance) ему приходит ерунда.
Конкретнее - ему приходят данные за следующий месяц, хотя в заголовке указан текущий:
Вложение:
Комментарий к файлу: e-mail
email-balance.jpg [ 29.38 КБ | Просмотров: 3245 ]
Вложение:
client-balance.jpg [ 45.72 КБ | Просмотров: 3245 ]
8852.23 - это его текущий баланс, который был в момент рассылки сегодняшнего баланса.
При этом ActionContractBalanceAll при запуске через http работает правильно.
Написал скрипт для проверки наличия бага:
Код:
import bitel.billing.server.util.*;
import java.sql.*;
import java.util.*;
import bitel.billing.common.TimeUtils;
import bitel.billing.server.contract.bean.Contract;
import bitel.billing.server.contract.bean.ContractManager;
import ru.bitel.common.XMLUtils;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import bitel.billing.server.contract.action.ActionContractBalanceAll;
import org.w3c.dom.ls.*;
public void main(setup, con, conSlave)
{
int cid=123;
//Получаем даты так же, как и в коде рассылки:
Calendar startMonth = Calendar.getInstance();
Calendar endMonth = Calendar.getInstance();
startMonth.set(5, 1);
endMonth.add(2, 1);
endMonth.set(5, 1);
endMonth.add(6, -1);
//Если раскомментировать следующие 2 строчки, то всё работает правильно:
// startMonth = TimeUtils.parseCalendar("01.08.2011", "dd.MM.yyyy");
// endMonth = TimeUtils.parseCalendar("31.08.2011", "dd.MM.yyyy");
print(TimeUtils.format(startMonth, "dd.MM.yyyy"));
print(TimeUtils.format(endMonth, "dd.MM.yyyy"));
Document doc = XMLUtils.newDocument();
Element rootNode = doc.createElement("data");
ActionContractBalanceAll action = new ActionContractBalanceAll();
try
{
action.init(setup, rootNode, cid, "contract", 0);
action.balance(startMonth, endMonth);
domImplLS = (DOMImplementationLS) doc.getImplementation();
serializer = domImplLS.createLSSerializer();
String str = serializer.writeToString(rootNode);
print(str);
}catch(e){
print(e);
}
}
Вывод скрипта:
Код:
COMPLETE_TIME: 24.08.11 16:18:02
PROCESS_TIME: 27
OUT:
01.08.2011
31.08.2011
<?xml version="1.0" encoding="UTF-16"?>
<data comment="ООО "Рога и Копыта"" contractTitle="123456789" date1="01.08.2011" date2="31.08.2011" xslt="contract_balance_print.xsl"><month title="август 2011"><balance><table summa1="-8905.01" summa2="0.00" summa3="0.00" summa4="0.00" summa5="-8905.01"/></balance><account><table summa="0.00"/></account><charge><table summa="0.00"/></charge><payment><table summa="0.00"/></payment></month></data>
- неправильно, выдается баланс на сентябрь
Если же в нем раскомментировать строчки:
Код:
// startMonth = TimeUtils.parseCalendar("01.08.2011", "dd.MM.yyyy");
// endMonth = TimeUtils.parseCalendar("31.08.2011", "dd.MM.yyyy");
то на выходе получим правильный баланс на август:
Код:
COMPLETE_TIME: 24.08.11 16:20:32
PROCESS_TIME: 38
OUT:
01.08.2011
31.08.2011
<?xml version="1.0" encoding="UTF-16"?>
<data comment="ООО "Рога и Копыта"" contractTitle="123456789" date1="01.08.2011" date2="31.08.2011" xslt="contract_balance_print.xsl"><month title="август 2011"><balance><table summa1="-1299.60" summa2="0.00" summa3="7605.41" summa4="0.00" summa5="-8905.01"><data><row f0="август 2011" f1="Входящий остаток на начало месяца" f2="-1299.60"/><row f0="август 2011" f1="Приход за месяц" f2="0.00"/><row f0="август 2011" f1="Наработка за месяц" f2="7605.41"/><row f0="август 2011" f1="Расход за месяц" f2="0.00"/><row f0="август 2011" f1="Исходящий остаток на конец месяца" f2="-8905.01"/></data></table></balance><account><table summa="7605.40"><data><row date="2011 август" f0="2011 август" f1="Услуга 1" f2="228.39" sid="123" summa="228.39" title="Услуга 1"/><row date="2011 август" f0="2011 август" f1="Услуга 2" f2="3454.96" sid="456" summa="3454.96" title="Услуга 2"/></data></table><sub_table><data><row cid="456" contract="123456789-01" date="2011 август" service="Услуга 1" sid="123" summa="228.39"/><row cid="456" contract="123456789-01" date="2011 август" service="Услуга 2" sid="456" summa="2244.05"/><row cid="789" contract="123456789-02" date="2011 август" service="Услуга 1" sid="123" summa="228.39"/><row cid="789" contract="123456789-02" date="2011 август" service="Услуга 2" sid="456" summa="1221.23"/></data></sub_table></account><charge><table summa="0.00"><data/></table><sub_table><data/></sub_table></charge><payment><table summa="0.00"><data/></table><sub_table><data/></sub_table></payment></month></data>
Клиент: вер. 5.1 сборка 564 от 04.07.2011 17:24:11
os:Windows XP; java:Sun Microsystems Inc., v.1.6.0_16
Сервер: вер. 5.1 сборка 685 от 04.07.2011 17:23:55
os:Linux; java:Sun Microsystems Inc., v.1.6.0_22
Можете пофиксить?