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

Статус договора (CRM)
http://forum.bitel.ru/viewtopic.php?f=22&t=10500
Страница 1 из 1

Автор:  Dima_M [ 08 май 2015, 14:30 ]
Заголовок сообщения:  Статус договора

Можно ли настроить так, чтоб после достижения даты закрытия договора его статус менялся на Закрыт?

Автор:  stark [ 08 май 2015, 14:37 ]
Заголовок сообщения:  Re: Статус договора

Можно глобальным скриптом вызываемым из планировщика сделать.. Специальной задачи вроде нет. Хотя теоретически мы можем опционально обучить этому задачу установки статусов.

Автор:  Dima_M [ 08 май 2015, 14:42 ]
Заголовок сообщения:  Re: Статус договора

Подскажите как проще мне это сделать?
Или, как мне кажется, такая логика бы была правильна по умолчанию для всех. И задача установки статусов, как я понимаю, специально для таких вещей.

Автор:  stark [ 08 май 2015, 15:25 ]
Заголовок сообщения:  Re: Статус договора

Dima_M писал(а):
Подскажите как проще мне это сделать?
Или, как мне кажется, такая логика бы была правильна по умолчанию для всех. И задача установки статусов, как я понимаю, специально для таких вещей.


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

Тут вопрос не простой. Изначально у нас не было статуса вообще и была только дата закрытия. Потом появился статус и сейчас он напрямую не связан с датой закрытия.

Автор:  Dima_M [ 08 май 2015, 15:36 ]
Заголовок сообщения:  Re: Статус договора

Но ведь логично то что я предлагаю сделать?

Автор:  stark [ 08 май 2015, 16:58 ]
Заголовок сообщения:  Re: Статус договора

Dima_M писал(а):
Но ведь логично то что я предлагаю сделать?


Вопрос логичности - это обсуждаемо. не факт что всем это надо ..Можно опцию добавить выключенную по умолчанию, чтобы только вы ее себе включили, а остальных логика не поменялась .

Автор:  Dima_M [ 08 май 2015, 17:01 ]
Заголовок сообщения:  Re: Статус договора

Сделайте, пожалуйста.

Автор:  stark [ 08 май 2015, 17:04 ]
Заголовок сообщения:  Re: Статус договора

Добавил в TODO

Автор:  skn [ 08 май 2015, 18:42 ]
Заголовок сообщения:  Re: Статус договора (CRM)

в данный момент нет события, "наступила дата закрытия договора..." и кто и как его генерировать должен не понятно...

Автор:  dimOn [ 08 май 2015, 19:22 ]
Заголовок сообщения:  Re: Статус договора (CRM)

зачем выдумывать какие-то костыли, если самый подходящий механизм для этого - дин код по шедулеру.
скрипт будет размером в 10 строк.

Автор:  Amir [ 09 май 2015, 19:14 ]
Заголовок сообщения:  Re: Статус договора (CRM)

Ну или сразу как задачу планировщика ядра добавить.

Автор:  Dima_M [ 11 май 2015, 18:54 ]
Заголовок сообщения:  Re: Статус договора (CRM)

Вы сделаете, или нужно самому скрипт изобретать?

Автор:  skyb [ 13 май 2015, 19:54 ]
Заголовок сообщения:  Re: Статус договора (CRM)

Код:
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.server.util.MailMsg;
import ru.bitel.bgbilling.common.BGException;

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

public class Dissolved
   extends GlobalScriptBase
{
   public String subject = "Уведомления ";
   public String message = "какой то текст";
   private MailMsg msg;
   @Override
   public void execute( Setup setup1, ConnectionSet connectionSet2 )
      throws Exception
   {
        msg = new MailMsg( setup1 );
        this.msg = msg;
      StringBuilder mesg = new StringBuilder();
      Connection con = connectionSet2.getConnection();
      ContractParameterManager cpm = new ContractParameterManager( con );
      Calendar nowDate = Calendar.getInstance();
      ContractStatusManager csm = new ContractStatusManager(con);
      ContractStatus ncs = new ContractStatus();
      GregorianCalendar tomorrow = (GregorianCalendar) nowDate.clone();//клонируем дату для дальнейшей работы
      tomorrow.add( Calendar.DAY_OF_MONTH, +1 );//прибавляем к сегодня, ещё 1 день
      String query =    " select id, title, date2, fc from contract where date2 is not null and gr&(1<<6)>0" ;
      PreparedStatement contractPs = con.prepareStatement( query );
      ResultSet contractRs = contractPs.executeQuery();
      int i = 0;
         while ( contractRs.next() )
            {
               int cid = contractRs.getInt( 1 );
               String title = contractRs.getString( 2 );
               Date date2 = contractRs.getDate( 3 );
               int fc = contractRs.getInt( 4 );
               Calendar closeDay = TimeUtils.convertDateToCalendar( date2 );
               int compare = TimeUtils.compare(nowDate, closeDay , Calendar.DAY_OF_MONTH);
//Если дата закрытия равна сегодня, то делаем
                  if ( compare == 0 )
                     {
                     //Убираем группу у физиков и ставим свою группу для расторгнутых
                        if (fc == 0)
                           {
                              cpm.setGroup( cid, 5 );
                              cpm.unsetGroup( cid, 3 );
                              cpm.unsetGroup( cid, 6 );
                              SendMessages(message, msg);
                              //print("id физиков " + cid);
                        print ("Договор физик " + title + " Дата закрытия " + date2);
                           }
                     //Убираем группу у юриков и ставим свою группу для расторгнутых   
                        if (fc == 1)
                           {
                              cpm.setGroup( cid, 2 );
                              cpm.unsetGroup( cid, 0 );
                              cpm.unsetGroup( cid, 6 );
SendMessages(message, msg);
                              //print("id юриков " + cid);
                        print ("Договор юрик " + title + " Дата закрытия " + date2);
                           }
                        ncs.setContractId(cid);
                        ncs.setDateFrom(TimeUtils.convertCalendarToDate(tomorrow));
                        ncs.setStatus(3);
                        csm.changeStatus(ncs, 0, true);
                        //print("id для сравнения правильности выполнения кода " + cid + " сегодня " + compare);

                        i++;
                     }
   public void SendMessages (String message, MailMsg msg)  throws BGException
   {
      String objects = "admin@admin.ru";
      msg.sendMessage(objects, subject, message);
   }
}

что то криво написано, писалось давно но работает =)

Автор:  Dima_M [ 14 май 2015, 13:26 ]
Заголовок сообщения:  Re: Статус договора (CRM)

Спасибо! Попробую и отпишу о результате.
Данный функционал нужен не только мне, как выяснилось :)

Автор:  skyb [ 14 май 2015, 14:25 ]
Заголовок сообщения:  Re: Статус договора (CRM)

да много кому нужен на самом деле, но дело в том что у всех закрытие договоров по разному происходит, это один способ закрытия, а у меня их чета окло 3-4 (со сторонних систем, при смене статуса, чет ещё кажись)

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