BiTel

Форум BiTel
bgbilling.ru     docs.bitel.ru     wiki.bitel.ru     dbinfo.bitel.ru     bgcrm.ru     billing.bitel.ru     bitel.ru    
Текущее время: 20 июн 2025, 23:02

Часовой пояс: UTC + 5 часов [ Летнее время ]




Начать новую тему Ответить на тему  [ Сообщений: 3 ] 
Автор Сообщение
СообщениеДобавлено: 08 ноя 2011, 12:31 
Не в сети
Клиент
Аватара пользователя

Зарегистрирован: 03 авг 2009, 18:42
Сообщения: 7166
Откуда: Благовещенск
Карма: 241
Народ, подскажиет, есть скрипт, работает. Но как то не понятно с датами
Код:
package ru.skyb.scripts.global;

import ru.bitel.bgbilling.kernel.script.server.dev.GlobalScriptBase;
import ru.bitel.bgbilling.server.util.Setup;
import ru.bitel.common.sql.ConnectionSet;
import java.sql.*;
import java.util.*;
import java.util.Date;

import bitel.billing.common.TimeUtils;
import bitel.billing.server.contract.bean.*;

public class archive
   extends GlobalScriptBase
{
   @Override
   public void execute( Setup setup1, ConnectionSet connectionSet2 )
      throws Exception
   {
   Connection con = connectionSet2.getConnection();   
   
   Calendar calendar = new GregorianCalendar();
   GregorianCalendar nowDate = (GregorianCalendar) calendar.clone();//клонируем дату для дальнейшей работы
   nowDate.get(Calendar.DATE);
   GregorianCalendar sqlDate = (GregorianCalendar) calendar.clone();
   Date dateSql = TimeUtils.convertCalendarToSqlDate(sqlDate);
   Date dateNow = TimeUtils.convertCalendarToDate(nowDate);//переводим дату в тип Date с типа Calendar

   String query = "select id from contract where gr&(1<<19)=0";
   PreparedStatement contractPs = con.prepareStatement( query );
   ResultSet contractRs = contractPs.executeQuery();
   int cid;
   int i = 0;
    while ( contractRs.next() )
    {
      cid = contractRs.getInt( 1 );
      ContractManager contract = new ContractManager(con);
      BalanceUtils balance = new BalanceUtils(con);
      Contract ct = contract.getContractById(cid);
//возращает самый старший месяц, за который есть данные по Балансу
      Date contract_balance = (Date) balance.getLastBalanceMonth(ct);
      if( contract_balance == null)
      {
         contract_balance = new Date(i);
      } 
//==========================close==============================//
      int mounth = TimeUtils.monthsDelta(contract_balance,dateNow);
   print ("mounth =>" + mounth);
      if (mounth > 6 )
      {
         print ("Контракт с сидом " + cid);
         //String update_query = "update contract set gr=0 where id = "+ cid;
         //PreparedStatement ps = con.prepareStatement( update_query );
         //ps.executeUpdate() ;
         String close_query = "update contract set date2 = '" + dateSql + "' where id = "+ cid;
         PreparedStatement rs = con.prepareStatement( close_query );
         rs.executeUpdate() ;
         ContractParamUtils cpu = new ContractParamUtils( con );
         cpu.setGroup( cid, 19 );
         i++;
      }
   
    }
print("кол-во " +i );
}
}

Собственно волнует вопрос о
Код:
 int mounth = TimeUtils.monthsDelta(contract_balance,dateNow);
Дело в том что если у договора вообще не было движения денежных средств, он всеравно попадает в группу, а не должен. В выводе, в принте стоит на 0
Код:
print ("mounth =>" + mounth);
раньше работало все нормально, а вот сейчас как то не очень :(

_________________
Код:
  Клиент: вер. 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
Стиль программирования - пьяный мастерстер
Разработка мобильных приложений


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 09 ноя 2011, 12:50 
Не в сети
Клиент
Аватара пользователя

Зарегистрирован: 03 авг 2009, 18:42
Сообщения: 7166
Откуда: Благовещенск
Карма: 241
Хотяб скажите - я косяпор или что то изменилось?

_________________
Код:
  Клиент: вер. 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
Стиль программирования - пьяный мастерстер
Разработка мобильных приложений


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 09 ноя 2011, 14:46 
Не в сети
Клиент
Аватара пользователя

Зарегистрирован: 20 апр 2009, 12:03
Сообщения: 3092
Откуда: Иркутск
Карма: 338
Цитата:
Хотяб скажите - я косяпор или что то изменилось?

Правильный ответ - первый ;)

Цитата:
Дело в том что если у договора вообще не было движения денежных средств, он всеравно попадает в группу, а не должен.


Так у тебя же русским по белому написано:

Код:
      if( contract_balance == null)
      {
         contract_balance = new Date(i);
      } 


Правда зачем i - непонятно, явный косяк.
Но если тебе не надо, чтобы договоры без движухи вообще (у них contract_balance=(Date) balance.getLastBalanceMonth(ct) и будет null) попадали, просто делай continue;

Код:
      if( contract_balance == null)
      {
         continue;
      } 


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 3 ] 

Часовой пояс: UTC + 5 часов [ Летнее время ]


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
cron
POWERED_BY
Русская поддержка phpBB
[ Time : 0.051s | 24 Queries | GZIP : On ]