forum.bitel.ru
http://forum.bitel.ru/

[РЕШЕНО]Закрытый период
http://forum.bitel.ru/viewtopic.php?f=22&t=7419
Страница 1 из 1

Автор:  zavndw [ 13 ноя 2012, 05:31 ]
Заголовок сообщения:  [РЕШЕНО]Закрытый период

Хочу сделать "Перемещение в группу через 3 месяца если не было движения денег в наработке" и сразу на первом пункте вики застрял что значит закрытый период? (простым языком) что бы не получилось так что договора будут перемещаться и закрываться

Автор:  skyb [ 13 ноя 2012, 05:37 ]
Заголовок сообщения:  Re: Закрытый период

а в какой статье? просто у меня там есть скриптик который переводил в группу, ну и ещё закрывал договор

Автор:  zavndw [ 13 ноя 2012, 05:51 ]
Заголовок сообщения:  Re: Закрытый период

http://wiki.bgbilling.ru/index.php/%D0% ... 0%BA%D0%B5

Автор:  skyb [ 13 ноя 2012, 06:52 ]
Заголовок сообщения:  Re: Закрытый период

о, точно мой ))) выставляет вторую дату действия договора, закрывая его, если это необходимо то его немного поправить нада, если нет, просто закоментить сторочку где скулем это выполняется

Автор:  zavndw [ 13 ноя 2012, 06:54 ]
Заголовок сообщения:  Re: Закрытый период

Код:
sqlDate = calendar.clone();
вот эту?
мне надо его адаптировать под простой перенос в другую группу и мес снизить до 2х три много:)
нашел
Код:
(mounth > 3 )

и сразу вопрос куда этот скрипт ложить?

Автор:  skyb [ 13 ноя 2012, 08:26 ]
Заголовок сообщения:  Re: Закрытый период

Код:
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.*;
 
 
public void main( setup, con, conSlave )
{
   Calendar calendar = new GregorianCalendar();
   nowDate = calendar.clone();//клонируем дату для дальнейшей работы
   nowDate.get(Calendar.DATE);
   sqlDate = 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 );
 
 
      contract = new ContractManager(con);
      BalanceUtils balance = new BalanceUtils(con);
      Contract ct = contract.getContractByID(cid);
      Date contract_balance = balance.getLastBalanceMonth(ct);
      if( contract_balance == null)
      {
         contract_balance = new Date();
      } 
      int mounth = TimeUtils.monthsDelta(contract_balance,dateNow);
 
      if (mounth > 2 )
      {
         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() ;
         cpu = new ContractParamUtils( con );
         cpu.setGroup( cid, 19 );
         i++;
      }
   }
    print("кол-во " +i );
    contractRs.close();
    contractPs.close();   
}

глобальные скрипты

Автор:  zavndw [ 13 ноя 2012, 08:32 ]
Заголовок сообщения:  Re: Закрытый период

номер группы тут
cpu.setGroup( cid, 19 );
и тут
String query = "select id from contract where gr&(1<<19)=0";

Автор:  Phricker [ 13 ноя 2012, 09:44 ]
Заголовок сообщения:  Re: Закрытый период

Не верьте скубу. Дебильный скрипт не закрывающий сущности договора :-!
У него есть более новый но он им не делится :D

Автор:  zavndw [ 13 ноя 2012, 10:35 ]
Заголовок сообщения:  Re: Закрытый период

WARNINGS:
Перемещение в группу через 3 месяца: using deprecated method [public bitel.billing.server.contract.bean.Contract bitel.billing.server.contract.bean.ContractManager.getContractByID(int)]
вот че пишет

Автор:  Phricker [ 13 ноя 2012, 11:21 ]
Заголовок сообщения:  Re: Закрытый период

http://bit.ly/TFORQg

Автор:  Phricker [ 13 ноя 2012, 11:23 ]
Заголовок сообщения:  Re: Закрытый период

google.ru выдает первую же ссылку на исправление ошибки.
google.com - третью помоему

Автор:  skyb [ 13 ноя 2012, 14:58 ]
Заголовок сообщения:  Re: Закрытый период

zavndw у вас 5.1 или 5.2

Автор:  zavndw [ 14 ноя 2012, 03:31 ]
Заголовок сообщения:  Re: Закрытый период

вер. 5.1 сборка 815

Автор:  zavndw [ 15 ноя 2012, 08:57 ]
Заголовок сообщения:  Re: Закрытый период

Поправил на вики код для 5,1

Автор:  skyb [ 15 ноя 2012, 10:40 ]
Заголовок сообщения:  Re: [РЕШЕНО]Закрытый период

Код:
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 = Calendar.getInstance();
      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<<3)>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);
         Contract ct = contract.getContractById(cid);
         /*
          * getLastBalanceMonth public
          * java.util.Date getLastBalanceMonth(Contract contract) возращает
          * самый старший месяц, за который есть данные по Балансу
          */
         BalanceUtils balance = new BalanceUtils(con);
         Date contract_balance = (Date) balance.getLastBalanceMonth(ct);
         if (contract_balance == null) {
            continue;
         }
         // ==========================close==============================//
         int mounth = TimeUtils.monthsDelta(contract_balance, dateNow);
         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() ;
             */
            contract.closeContract(cid);
            ContractParameterManager cpu = new ContractParameterManager(con);
            cpu.setGroup(cid, 19);
            cpu.unsetGroup(cid, 3);
            cpu.unsetGroup(cid, 0);
            i++;
         }

      }
      print("кол-во " + i);
   }

}


это правильное выставление закрытого периода, в вики исправил

Страница 1 из 1 Часовой пояс: UTC + 5 часов [ Летнее время ]
Powered by phpBB® Forum Software © phpBB Group
http://www.phpbb.com/